AMuleWeb
Contents
Description
aMuleWeb is a utility that listens for HTTP connections at port 4711 (by default, although it can be changed through Preferences) and allows remote users to control aMule using just a web browser.
aMule itself doesn't support listening to HTTP connections, so the external utility aMuleWeb is used. This utility listens for remote connections, and once the link between aMuleWeb and the remote user is established, it connects to the aMule main program using the External Connections mechanism.
Compiling aMuleWeb
Compile aMule normally, just add --enable-amuleweb when running configure.
Setting up aMuleWeb with aMule
aMuleWeb with aMule 2.0.0 or later
- For users running the monotlithic aMule application:
- Go to "Preferences"->"Remote Controls" (in aMule) and...
- Enable "Accept External Connections".
- Enable "Use TCP ports instead of unix local sockets" (This option doesn't exist since version 2.1.0)
- Enter a password for External Connections. If you don't do this, aMuleWeb will not communicate with aMule.
- Go to "Preferences"->"Remote Controls" (in aMule) and...
- NOTE: When you change your aMuleWeb and External Connections ports here, make sure to restart aMule.
- For users running the aMule daemon:
- Shutdown aMuled if it is still running.
- Run amuleweb -w to generate ~/.aMule/remote.conf and edit it for these options. It previously were on ~/.aMule/amule.conf, but the lines are still on this file, so edit both if in doubt.
- [ExternalConnect] <- Section header
- AcceptExternalConnections=1 <-- To enable aMule listening for External Connections.
- ECUseTCPPort=1 <-- To use the TCP port. Very important since Unix sockets are disabled.
- ECPassword=ca3c365274907c6fd527068788e14639 <-- To find the MD5 string for your password, do:
- $ echo -n yourpasswordhere | md5sum | cut -d ' ' -f 1
- ca3c365274907c6fd527068788e14639
- Restart aMuled
NOTE: In aMule version 2.0.0 and later you don't need to do any copy/link of webserver files.
NOTE2: Every password must be md5sum,also webserver one/s. aMule embedded webserver works without remote.conf,you just need to edit amule.conf. A good trick if you have somewhere an X server is to configure amule using the GUI and then copy the amule.conf configuration file where you want to run the daemon.
Thanks to Stefanero, from who I shamelessly stole a lot from his tutorial.
aMuleWeb with aMule 2.0.0-rcX versions
- Untar the sources and copy src/aMule.tmpl or in new versions (you are using a new version if you don't have the file aMule.tmpl in src/) only the following dir src/webserver/ into your ~/.aMule/ directory. The following (run from the sources directory), should do so:
- $ cp -r src/aMule.tmpl src/webserver/ ~/.aMule/
- If you installed aMule from rpm, then you can do:
- $ cp /usr/share/amuleweb/aMule.tmpl ~/.aMule/
- $ cp -r /usr/share/amuleweb/webserver/ ~/.aMule/
- NOTE: Note that in current versions (since aMule 2.0.0) the above step is not necessary (in fact, it is incorrect).
- Go to "Preferences"->"Remote Controls" (in aMule) and...
- Enable "Accept External Connections".
- Enable "Use TCP ports instead of unix local sockets".
- Enter a password for external connections. If you don't do this, amuleweb will not communicate with amule.
- Shutdown aMule if it is still running.
- Edit your ~/.eMule file, locate the [ExternalConnect] section and change:
- AcceptExternalConnections=1 <-- To enable aMule listening for External Connections.
- ECUseTCPPort=1 <-- To use the TCP port. Very important since Unix sockets are disabled.
- ECPassword=ca3c365274907c6fd527068788e14639 <-- To find the MD5 string for your password, do:
- $ echo -n yourpasswordhere | md5sum | cut -d ' ' -f 1
- ca3c365274907c6fd527068788e14639
- NOTE: Since aMule 2.0.0 the ~/.eMule file is now called ~/.aMule/amule.conf.
- Restart aMule
- Go to your "Preferences"->"Remote Controls" (in aMule) and setup your passwords here for External Connections and aMuleWeb login.
- NOTE: When you change your aMuleWeb and External Connections ports here, make sure to restart aMule.
- NOTE: that "Enable aMuleWeb" has no effect and will be renamed in 2.0.0rc8. aMuleWeb is always enabled as long as you have External Connections enabled.
- NOTE: For users running aMule Daemon you have to edit the .eMule file like shown above. For a way to setup a password check the 1.2.8 aMule HowTo. You can still do it in the same way.
- Now you're done! You are ready to run amuleweb and connect to it.
Webserver with aMule 1.2.8 or earlier
The following is based on the original instruction by BigBob. They guide you on how to modify aMule's configuration files to set aMuleWeb correctly.
There is "Preferences"->"Remote Controls" now, but anyway, information is never a bad idea.
- Shutdown aMule to avoid overwritting config files while shutting down.
- Copy from aMule's sources (version 1.2.4 or later) the directory src/webserver/ into your ~/.aMule/webserver/ directory.
- Copy from aMule's sources (version 1.2.4 or later) the file src/aMule.tmpl into your ~/.aMule/aMule.tmpl directory.
- Open a terminal and type (you might have to install md5sum):
- echo -n "THEPASWORDYOUWANT" | md5sum | cut -d " " -f 1
- This command will reply with an MD5 hash. Something like: 324f85f6095f9e5fe25b6c85af44b445
- Edit your ~/.eMule file, locate the [ExternalConnect] section in it and change this fields:
- AcceptExternalConnections=1 <- To enable aMule to listen for External Connections.
- ECUseTCPPort=0 <- Set this to 1 to use the TCP port. If disabled External Connections will fail!!
- ECPort=4712 <- Put here the port on which you want aMule to listen for External Connections.
- ECPassword=39e5049d0614baf21906500e2261d500 <- Put here the password for External Connections' authentications you generated before in terminal (something like 324f85f6095f9e5fe25b6c85af44b445).
- Edit your ~/.eMule file, locate the [WebServer] section in it and change fields:
- Password=324f85f6095f9e5fe25b6c85af44b445 <- Put here the password generated with md5sum for the admin (full privileged users).
- PasswordLow=1db5a746266e941b3ef7dd3586863ca7 <- Put here the password generated with md5sum for "low users" (low privileged users).
- Port=10000 <- Put the port you want aMuleWeb to listen on.
- Enabled=1 <- This option has been deprecated and is completly ignored now. Enabling External Connections will enable any application it connects to it, including aMuleWeb.
- UseGzip=1 <- Enable compression on communication.
- PageRefreshTime=120 <- Put here the web page refresh time (in seconds).
- UseLowRightsUser=0 <- 0/1 (disabled/enabled) "low user" access.
- Restart aMule.
- Once aMule is running, start the web interface (aMuleWeb).
- Now point your web browser to http://localhost:10000 (or whatever your host and ports are) and authenticate yourself with "Password" (for full privileged user) or "PasswordLow" (for low privileged user, if enabled).
- That's all :)
- 'NOTE: In latest aMule 1.2.x releases, the option WebTemplateFile allows to override the file template to use (thanks to Stefanero. You can set this option in the [eMule] section. Example:
- WebTemplateFile=eMule.tmpl
Connecting to aMuleWeb
To run aMuleWeb run amuleweb on a terminal.
Once aMuleWeb is running, open a web browser and connect to:
where host stands for your host's name (try with localhost) and port stands for the aMuleWeb port (NOT the External Connections port).
For example: http://localhost:4711
Shakraw
Standard ports
The ports can be set to anything, but this are the most used (the standard ones):
- External Connections: 4712
- amuleweb: 4711
Make sure you do not confuse with what each of them is.
Skin support
aMuleWeb now looks for its files in a number of places:
- In your home directory: $HOME/.aMule/webserver/[skin name]/
- And at it's install location, in this order (by default, /usr/local/share/amule/webserver if you compiled aMule, or /usr/share/amule/webserver if you installed it from a package).
Default skin (template) name is 'default'.
If, after installing aMule, aMuleWeb refuses to run because of not being able to load template:
- Please report this situation to us, and then
- Create the directories webserver/default in the .aMule subdirectory of your home directory, and copy the contents of the src/webserver directory there from the aMule tarball (I mean to $HOME/.aMule/webserver/default).
How to start emuled and emuleweb with your server
The best way to start both the processes amuled and amuleweb with your server is to add a sh script /etc/init.d/amule with something like that :
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/amuled
WEB=/usr/bin/amuleweb
NAME=amuled
DESC=amuled
RUNAMULE=no
test -x $DAEMON || exit 0
- Include amule defaults if available
if [ -f /etc/default/amule ] ; then
. /etc/default/amule
fi
if [ "$RUNAMULE" != "yes" ];then
echo "Amule not to be started. Edit /etc/default/amule first." exit 1
fi
set -e
case "$1" in
start) echo -n "Starting $DESC: " su youramuleuser -c "$DAEMON -f" su youramuleuser -c "$WEB --quiet &" echo "$NAME." ;; stop) echo -n "Stopping $DESC: " killall --quiet --ignore-case $WEB killall --quiet --ignore-case $DAEMON echo "$NAME." ;; restart|force-reload) echo -n "Restarting $DESC: " killall --quiet --ignore-case $WEB killall --quiet --ignore-case $DAEMON sleep 1 su youramuleuser -c "$DAEMON -f" su youramuleuser -c "$WEB --quiet &" echo "$NAME." ;; *) N=/etc/init.d/$NAME echo "Usage: $N {start|stop|restart|force-reload}" >&2 exit 1 ;;
esac
exit 0
Then on my debian sarge server i just had to add a link /etc/rc2.d/S61amule pointing on a sh script containing :
/etc/init.d/amule start
exit 0
Then, for the deamons to start you just have to add one file /etc/default/amule which contains a line with RUNAMULE=yes
That's it !
Where to report problems and questions?
For Problems or Questions just report on http://forum.amule.org forum or join IRC channel #amule at irc.freenode.net
Other sources of information
Read the aMuleWeb man page, which is available in English, French, German, Hungarian and Spanish.
For further information read the aMuleWeb FAQ.