GithubHelp home page GithubHelp logo

ziahamza / webui-aria2 Goto Github PK

View Code? Open in Web Editor NEW
9.8K 270.0 1.4K 15.81 MB

The aim for this project is to create the worlds best and hottest interface to interact with aria2. Very simple to use, just download and open index.html in any web browser.

License: MIT License

JavaScript 75.21% HTML 21.97% Dockerfile 0.37% SCSS 2.45%

webui-aria2's Introduction

WebUI-Aria2

Main interface

The aim for this project is to create the worlds best and hottest interface to interact with aria2. aria2 is the worlds best file downloader, but sometimes the command line brings more power than necessary. The project was initially created as part of the GSOC scheme, however it has rapidly grown and changed with tremendous support and feedback from the aria2 community.

Very simple to use, no build scripts, no installation scripts. First start aria2 in the background either in your local machine or in a remote one. You can do that as follows:

aria2c --enable-rpc --rpc-listen-all

If aria2 is not installed in your local machine then head on to https://aria2.github.io/ and follow the instructions there.

Then to use the WebUI-Aria2,

  • You can either download this repository and open index.html from docs folder.
  • Or you could just head on to https://ziahamza.github.io/webui-aria2 and start downloading files! Once you have visited the URL thanks to Progressive Web Apps you can open the same URL even when you are offline.
  • Or you can also use NodeJS to create simple server by using the following command from the project folder.
node node-server.js

Tips

  1. You can always select which files to download in case of torrents or metalinks. Just pause a download and a list icon should appear next to the settings button. To select which files to download before starting the download, give the flag --pause-metadata to aria2. See link

Configuration

Read and edit configuration.js.

DirectURL

This feature allows users to download files that they download from aria2 directly from the webui dashboard. If you are familiar with how webservers work, setup a http server that points at the configured aria2 download directory, check permissions. Then Specify a full url: http://server:port/ in the webui directURL configuration.

If the above is not obvious, keep reading what this is about in directurl.md

Dependencies

Well, you need aria2. And a web browser (if that even counts!)

Docker support

There is two Dockerfile in this project, one is a common Dockerfile, which can be use for testing purpose.
The second is a production ready Dockerfile for arm32v7 platforms (including Raspberry Pi).

For testing purpose

You can also try or use webui-aria2 in your LAN inside a Docker sandbox.

Build the image

sudo docker build -t yourname/webui-aria2 .

..and run it! It will be available at: http://localhost:9100

sudo docker run -v /Downloads:/data -p 6800:6800 -p 9100:8080 --name="webui-aria2" yourname/webui-aria2

/Downloads is the directory in the host where you want to keep the downloaded files

Production ready (ARM platform)

This image contains both aria2 and webui-aria2.

Build it (may take several hours due to the aria2 compilation process. Don't panic and grab a coffee).

docker build -f Dockerfile.arm32v7 -t yourname/webui-aria2 .

This command will ends up building three images:

  • The first one is just about compiling aria2 and goreman binaries. It MUST be deleted each time the ARIA2_VERSION is changed in the Dockerfile, otherwise you won't benefit from the update.
  • The second is about building and downloading some go dependencies (goreman and gosu).
  • The second one is the acutal aria2 container, the one you must use.

Prepare the host volume: This image required few file to be mounted in the container. ``` /home/aria/aria2/session.txt (empty file) /home/aria/aria2/aria2.log (empty file) /home/aria/aria2/aria2.conf (aria2 configuration file, not webui-aria2 conf) must contains at least `enable-rpc=true` and `rpc-listen-all=true` /data/downloads/ (where the downloaded files goes) ```

Run it

docker run --restart=always \
        -v /home/<USER>/data/aria2/downloads:/data/downloads \
        -v /home/<USER>/data/aria2/.aria2:/home/aria/.aria2 \
        -p 6800:6800 -p 9100:8080 \
        --name="webui-aria2" \
        -d yourname/webui-aria2

Contributing

Checkout contributor's guide to know more about how to contribute to this project.

Deploy to Heroku

Deploy

Support

For any support, feature request and bug report add an issue in the github project. link

License

Refer to the LICENSE file (MIT License). If the more liberal license is needed then add it as an issue

webui-aria2's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

webui-aria2's Issues

Feature suggestion

It would be a big usability ease if the web-ui automatically uses the current accessing ip as default host ip before throwing the "Connection to aria failed :( " on initial load.

This comes really handy when user have a dynamic IP and the aria2 server is on same lan/connection from where the web-ui is accessed again and again.

Start writing tests

Currently nothing is tested and hence our defenses are down. I am currently looking into different testing frameworks and approaches.

add "remove all finished tasks"

i think it will be a complement.

by the way, what is the difference between remove all downloads and purge all downloads?

I checked the JavaScript function and found they are almost the same?

Don't work 'Add Torrent'

When press 'Add' in 'Add Torrent' window nothing work. In a web console appears error:
"uncaught exception: cant run error!!!
no user name and still error!!!"

Here is the screenshot: http://tinyurl.com/8mrctg7 .

Using:

  • Aria2 1.15.2;
  • Windows 7 x64;
  • Firefox 15.0.1.

downloaded torrent file not processed

If I add a torrent link, the web client only dowloads the torrent file, and saves the .torrent file onto disk. It never processes the torrent file to download the actual contents. I even explicitly put follow-torrent=true in the options, and it did no help. I only get the .torrent file, not the actual torrent I want to download.

a suggestion on "add a new download" dialog

Just a suggestion, change the mouse-click behavior of "+" in the "add a new download" dialog.

The "plus" icon may associate with a function to expand url single-line input field to multi-line. then it should be very handy to paste a batch of links and import.

Save current downloading files list

Is there a way to save downloads list?
Every time I restart aria2, I have to re-add every previous file.
They resume fine and I'm happy with that, but I have to save every download url in case I need to resume it.
Am I missing something?
Thanks

Suggestion for the new design and some issues

  1. The right side button is a little too big. Instead, from my point of view, a small button could be placed next to the path/download info line.
  2. I don't know whether it is a deliberate design. the progress is still animating after download is finished.
  3. In the download info line, "download speed" and "progress" report the same value.
  4. Error download doesn't highlight in red like before.

"Connection to aria failed :(" message pops up when using webui on iOS device.

Hi, the title is self explanatory. I´ve set webui-aria2 as directed in the readme, and I can download and monitor stuff from the computer aria is running on with no problems using the webui. However, if I try from the ios device, the failure message pops up after a while. (it is an ipad 3rd gen w/ os 5.1.1)

The popup appears just over the "Currently no downloads in line to display, use the Add download button to start downloading files!" message.

I have set aria2 as a windows service, and the webui is hosted on the machine with mongoose server, which also runs as a service.

https/wss support

The next version of aria2 supports RPC over SSL/TLS. It would be good to add the configuration to support https/wss protocol. The current aria2 master branch has this feature implemented. To enable RPC over SSL/TLS, use --rpc-certificate, --rpc-private-key and --rpc-secure along with --enable-rpc.

"No current downloads"

if there are no downloads, it might be helpful to show "No current downloads" to the user instead of blank space, to show that you are connected & things are running normally

Question: aria2.conf settings

When you save the settings in the web gui is it supposed to update or create a settings/conf file somewhere?

On windows this does not seem to be the case. Even if I start the windows exe using --conf-path=, settings don't survive an exe restart. I had wondered if this was something to do with aria2c's defaults, even in the windows binary it uses /.aria2/aria2.conf but is does not change anything when the conf path is set.

Win 8 x64 / aria2c.exe x64 / web gui + firefox

If it note supposed to update or edit any files then maybe this could be considered.

Feature request:

Have the option to download the current Gui settings as a conf file that can then be used when starting aria2c?

use optional parameters

how can i add a download with some optional parameters? look like execute following link directly:

aria2c -c -s10 -x10 -o 'archlinux-2013.06.01-dual.iso' --header 'Cookie: FTN5K=f086416f' 'http://xflx.store.cd.qq.com:443/ftn_handler/e5f38680a59986f1f7d433e061620b472cce80b9947de38dcb5b9babe825720d6a62b22395538b76d13564d458f27848cc632e1f563035996314022b050c856b/archlinux-2013.06.01-dual.iso'

WebSocket connection periodically reestablished

I just noticed that WebSocket connection is disconnected and reconnected in every 30 seconds.

2012-07-14 18:46:56.904383 DEBUG - [HttpServer.cc:273]HTTP Server sends upgrade response:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade

...

2012-07-14 18:47:25.906317 INFO - [rpc_helper.cc:109]Executing RPC method system.multicall
2012-07-14 18:47:25.909429 INFO - [WebSocketInteractionCommand.cc:97]CUID#11 - WebSocket session terminated (Possibly due to EOF).

This may be aria2 issue, but log indicates that aria2 got EOF from the browser.

Any ideas?

Navigation naming & structure.

Can I make some recommendations for the navigation naming and structure?

  • "Add" instead of "Add Download"
  • "Manage" instead of "Stop Downloads"
    • Pause All
    • Resume Paused
    • Set Speed Limit
    • Purge Completed
    • Remove All (dangerous, should be confirmed with modal Yes/No)
  • "Settings" instead of of "Other" (just for connection & global settings).
  • "About" and Global Stats may be in a new top-level dropdown called "About".

Purge currently removes active and waiting downloads. What is the reason for this? Can it be changed to just purge completed/error/removed from the queue?

I am learning HTML+JS and would like to try to implement these changes myself if they are wanted :)

Unable to load

Hi,
I cannot connect to aria on my server when the webui client not is on the client computer.

In webbrowser console it warns about unable to read a script. Examining the live html the following script is included:

<script src="http://my.host:6800/jsonrpc?jsoncallback=jQuery172030926092539994576_1342344449804&jsonrpc=2&id=webui&method=system.multicall&params=W1t7Im1ldGhvZE5hbWUiOiJhcmlhMi50ZWxsQWN0aXZlIn0seyJtZXRob2ROYW1lIjoiYXJpYTIudGVsbFdhaXRpbmciLCJwYXJhbXMiOlswLDEwMF19LHsibWV0aG9kTmFtZSI6ImFyaWEyLnRlbGxTdG9wcGVkIiwicGFyYW1zIjpbMCwxMDBdfSx7Im1ldGhvZE5hbWUiOiJhcmlhMi5nZXRHbG9iYWxTdGF0In1dXQ%3D%3D&_=1342344564725"/>

The my.host is where the client lies, but it is told to connect to ip and not to my.host and my.host:6800 is blocked by the firewall.

It looks like wrong address is used for the script. I will continue to investigate.

Best regards

  • Martin

[Improovment] SetMaxDownloadSpeed

Hi,

Using webUi since some time, I just thought that It would be a good idea to have a quick access to some parameters. I mean, we could have the ability to set the maxDL speed on the top bar.
Otherwise, we could have something like starred properties that would be accessible directly into a dropdown menu left of top "Other" menu item.

What do you think about?

If It's not clear, just tell me I would send screenshots of what I'm meaning.
Regards

Easy way to set speed limits

I often need to limit the overall speed of all running downloads, but using the settings modal dialog this is a real pain, since the option is somewhere in the middle and i regularly have to search for it.

It would be awesome if there were two input boxes in the download area that let you enter speed limits directly and also view the currently set speed limit.

task name is truncated in the list

like this

http://i.imgur.com/eOzZW.jpg

it is strange because some task names are not affected and will wrap to new line automatically.

seems that add a style (word-wrap: break-word) to the name will settle.

        <div class="span2" style="overflow: hidden; word-wrap: break-word;">
        <b style="font-size: 12px;" class="tmp_name">{{name}}</b>
    </div>

Torrent name: name displayed could be more useful?

currently, it looks like just a filename (possibly the first?) is displayed when downloading a torrent.

other torrent clients tend to show a more descriptive name, which seems to be something like the root directory of whatever is being downloaded. would it be possible to display that?

also, would it be possible to list all files contained in a torrent when you click More Info?

Slow performance

Using angular.js, do we really need to redraw all of the downloads on update? Can't we calculate just what changed and update views accordingly? It kills my CPU completely at 15 simultaneous jobs.

keep getting connection error

Recently webui keeps giving connection error.

I know webui goes with 'localhost' by default. What is strange, is that connection to aria2 would fail at the first attempt (default setting) but subsequently succeed if I fill in "localhost' for the custom host.

Then if I close and reopen the browser, it seems like cookie is not stored at all. I have to repeat the above steps again. This is quite annoying.

Support password protected downloads

I tried to specify this in the download URL (i.e. http://user:[email protected]/downloading/file.mkv) but it wouldn't work. Got this output from the RPC:

[#1 SIZE:0B/0B CN:1 SPD:0Bs]
2013-02-22 03:20:35.952338 ERROR - CUID#10 - Download aborted. URI=http://user:[email protected]/downloading/file.mkv
Exception: [AbstractCommand.cc:303] errorCode=24 URI=http://user:[email protected]/downloading/file.mkv
  -> [HttpSkipResponseCommand.cc:207] errorCode=24 Authorization failed.

2013-02-22 03:20:35.956179 NOTICE - Download GID#1 not complete:

It looks like it would be supported by using the http-passwd argument.

It would be awesome to have per download password settings.

feature suggestion: show current speed in page title, profile quick switch

For the first, unicode arrows could be used here
for example:

↓ xxx kb/s ↑ XXX kb/s - aria2 Web Client

For the second, I hope there is a quick switch option for various rpc addresses, so be handy to manager multi-devices running aria2. Not necessarily profile switch, you may have a better idea about this.

webUI connexion to aria2c RPC

Hi there,

According to your previous post in aria2c forums ( https://sourceforge.net/apps/phpbb/aria2/viewtopic.php?f=1&t=195&p=982#p982 ).

I' tried your solutions to try to get webui working with my debian aria2c server.

Here is a summary :

��► Debian server running 24/7 and hosting aria2c and webserver (apache2).
► aria2c running with startup script (see this post : https://sourceforge.net/apps/phpbb/aria2/viewtopic.php?f=1&t=196&p=961#p961 ), running with RPC (with user and pass filled in)
► webui-aria2 www folder located in /var/www/ and sync with git (git pull)
► port 6800 open in my router and forwarded to my server
► Iptables allowing traffic

I open up the webui from github and tried to connect to my aria2c server entering with my external IP, RPC user and RPC pass >> No result
I open up the webui hosted in my debian server with local IP (192.168.1.x) and set server IP, RPC user and RPC pass >> No result
I stopped my actual aria2c daemon and started with only "aria2c --enable-rpc", tried both github page or local page with corresponding IP and without RPC user and RPC pass >> No result

This issue makes me feel really weird because It seems that my parameters seems right, but no results.

Also, got a notice : Could you make this sentences more explicit (or said in another way) :
● Enter the username of the server on which the rpc for aria2 is running (empty if authentication not enabled)
● Enter the password of the server on which the rpc for aria2 is running (empty if authentication not enabled)

These sentences means that we need to enter server user and pass and not aria2c RPC user and RPC pass (otherwise, I'm totally wrong and these fields needs These infos)

WebSockets as default interface

from Tatsuhiro
"Currently, it seems to use JSON-RPC with callback. I think it is fine now, but gsoc idea mentions websocket so please add it in todo list and make it default interface. The web browser can use WebSocket without same origin policy prevention as long as the server (aria2c) accepts connections. Also WebSocket does not require HTTP header for each message so it has much lower overhead."

Cannot connect to websocket

I have aria2 running in terminal, but when I open the index.html it says the following: Error while talking to aria2 over websocket and gives me no further details. Can I please have some assistance here? And in the terminal all it says is:
2013-06-22 15:41:56.209883 NOTICE - IPv4 RPC: listening to port 6800

2013-06-22 15:41:56.210544 NOTICE - IPv6 RPC: listening to port 6800

I would love it if I could get some assistance here.

Play button

Currently the resume button is labeled with "Play".
I think it would be better to label it "Resume" because usually people use "resume" in the case of download.

Split path to get name

Is there any specific reason why you change the way how task name is generated? I see you comment the previous method. but new method seems to produce incomplete file name sometimes.

or do a simple path split like this?

    var pathsplit=data.files[0].path.split(/[/\\]/);
    name=pathsplit[pathsplit.length-1];

localhost address

It seems to me that webui reads client address as the localhost, not the server side address (where webui files are hosted)?

if I try to access a remote webui, it doesn't connect to aria2 session running in the remote machine. The only method is to set custom IP. but webui doesn't remember this setting so I have to set it every time I visit.

The other method is to modify directly script.js file. so any better workaround?

Some advise

put some commonly usd settings together for convenience
like max-download-limit max-upload-limit dir .........

:)

Help-Info text not enough explicit

Description :

During network configuration the description of the fields "Username" and "Passwords" are not well explained.

How it looks like :
The help fields suggest to enter server username and server password

How it should looks like :
The help fields should suggest to enter aria2c RPC username and aria2c RPC password

Add config file

Maybe i'm wrong, but i didn't find any config file for the webui.

It would be nice to create a config file where:

  • Hide Torrent and/or Metalink menus (in the case of aria2c is is compiled without)
  • Add default connection setting and possibility to hide the Connection Settings menu, i've many people who use the webui, and i didn't want to give the user/password of the rpc.

Incorrect display on mobile device

Hi,

Here I am (that's me, again...).
I'm currently using the webUi through my android device (SG2), and the bootstrap is not doing well.

The menubar is not showing the links.

The content is not resized to fit the device.

Here are the screens:

img1
img2
img3

Add a build system

The current project desperately needs a build step for a lot of potential goodness (testing, compile time packaging, simple tools to bundle the ui with aria2 etc. NodeJS should be a perfect fit for this and hope to use something like grunt at the end.

Download items visual improvement

Currently, there is no border between download items. It makes somewhat hard to distinguish a particular item from the others.
It would be great to add some borders or effects to make the region of the item clear.

Completed Torrent download info could be streamlined?

here's what's currently displayed for a finished torrent:

Remaining: 0 B | Progress: 100.00% | Speed: 0 B/s | Time left: infinite

Remaining can be removed, as well as Speed (if this download speed) because they are redundant.

what about showing something like:

Progress: 100.00% | Seeding (if true)

Feature Request: Dynamic Page Title

A simple feature. Basically show the current download statuses in the page title.

Something like
(4 downloading, 3 complete, 5 paused, 1 stopped) aria2 web client
or perhaps something more compressed?
(4d 3c 5p 1s) aria2 web client

Main reason I want this is because I have the ui as a pinned tab; and pinned tabs light up if the title changes so this can act as an excellent notification when downloads complete or stop due to errors.

Specialized info for BitTorrent and Metalink download

I saw this item in TODO list:

  • More specialized info for special download types like bit torrent and metalink

Do you have any blue print for this feature?

Here is what I just come up with (these are not complete and not requirement, just my thoughts):

  • For BitTorrent thing, peer list would be good information to add.
  • The graphical indicator to show which pieces have been downloaded (like Azureus offers).
    aria2 offers segmented downloads for all kind of protocols, so this information can be used for other protocols too.

Completed download color and sorting/grouping of unfinished/finished downloads

Completed downloads have the same color as downloads in progress.

I think it would be easier to see at a glance which downloads were finished if they had a different color (green?) instead.

also, downloads that are still in progress could be grouped together & shown at the top instead of them all being mixed in together, since I'm usually more concerned about which downloads are still going.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.