Skip to content
mwarning edited this page Dec 5, 2012 · 11 revisions

The Project is not maintained any more. Feel free to fork. :-)

P2P-GUI

P2P-GUI is a remote web interface for MLdonkey, aMule, rTorrent, Transmission and giFT.

This GUI tries to combine different GUIs for p2p programs in one application/project
to save overall work and to cover many different needs and tastes.

Therefore it's aimed to be easy to modify and to extend.

Supported platforms so far are Windows, Linux and MacOSX*.
It's still beta and may crash. No warranty.

Screenshots

Everybody likes Screenshots. :-)

Quick Start

Download and start the program on the console.

Browse to http://localhost:8080 or what host you started P2P-GUI on.

The Login screen will appear and you can login with user name "admin" and no password.

  • On Windows, you need to have OpenSSL installed.
  • On Linux, you need to have OpenSSL and libz installed.
  • On MacOSX, everything should be onboard.

Features:

  • Integrated web server.
  • Modular source code.
  • UTF-8.
  • Highly configurable (CSS/JS/HTML/D).
  • No installation needed: download & run.
  • Settings are stored.
  • SSL cryptography.
  • HTTP basic authentification.
  • Flexible api to cover most network features/designs.
  • Preliminary account support.
  • Download unfinished files for preview.
  • Three different web guis.
    • Plex:
      • Server side and HTML based.
      • Languages: English, French, German, Italian, Spanish, Polish, Galician, Brazilian Portuguese, Dutch, Danish, Swedish.
      • Themes.
      • File browser.
      • Include own content.
      • User management.
      • Country flags for IPs
      • rot13 and l33t text transform ;-)
    • Clutch:
      • Browser side Javascript gui.
      • Copied from the Transmission web interface.
      • Slick design.
      • English only.
    • Jay:
      • Browser side JavaScript gui.
      • Uses the JSON rpc api.
      • Country flags for IPs.
      • Still alpha.

Future plans

  • a remote window gui (GTK+,QTD)
  • binaries for PPC/MIPS/ARM/SPARC; Windows64bit; *BSD
  • proper multi user support
  • more supported clients / integrated clients
  • a remote console interface (curses?)
  • more different web guis/styles/themes
  • improved html/css design

The source is kept modular, so features can be excluded with compile flags.

FAQ:

How to use P2P-GUI and connected to MLDonkey/aMule/rTorrent/Transmission/giFT?

  • Download and uncompress the program packet.
  • Start it in your console/or double click on windows
  • Open up your browser and go to http://127.0.0.1:8080.
  • Click on the "Clients" tab.
  • Enter connection settings and click on "Add", then on "Connect".
  • Click on the downloads panel etc.

How to prepare rTorrent for remote connection?

  • rTorrent need to be compiled with xml-rpc support (./configure --with-xmlrpc-c)
  • Create a file called .rtorrent.rc in your home and put this line into it: "scgi_port = localhost:5000".
  • These steps were taken from the rTorrent XMLRPC Guide and Install Guide.

How to access the different GUIs?

You can switch between GUIs manually while you are logged in.

How to make use of the GeoIP database?

  • Download the free GeoIP lite database from maxmind.com
  • Put the decompressed file into the P2P-GUI settings directory (e.g. ".p2p-gui/")
  • Restart P2P-GUI. The startup messages will tell you if the file was found.

How to get around the "object.Exception: Could not load OpenSSL library." error?

On Windows, you need to have OpenSSL libraries installed You can download it here.

How to enable SSL + password authentification?

  1. in the html gui, go to ,,User Settings"
  2. Enable SSL and click on "Apply"
  3. Change the current URL and change "http" to "https" and press enter.
  4. You will be prompted to accept the certificate.
  5. The default is a self signed certificate, so you need to make an exception (e.g. for FireFox)

How to make buttons work for the HTML gui in Internet Explorer 6/7?

  • IE has a long (not finished) history for non standard compliant browsers.
  • I have no time atm. for IE specific workarounds
  • Hence, IE6/7 isn't supported atm., IE8 may work in standards mode
  • Get Firefox, Opera etc.
  • The Clutch GUI does support IE6/7

How to add clients to other users?

  1. I forgot to add a function to the 0.2 version. :-(
  2. But you can edit the configuration file.
  3. Shutdown P2P-GUI.
  4. Open .p2p-gui/webuser.json
  5. Copy the client ids from user "admin" => "clients" to the other users.
  6. Or just look up client ids in .p2p-gui/webclients.json
  7. Start P2P-GUI.

How to reset the password?

  1. Shutdown P2P-GUI.
  2. Replace the password string in .p2p-gui/webuser.json
  3. You can use "d41d8cd98f00b204e9800998ecf8427e" for an empty password
  4. Or use md5sum -n "newpassword" | md5sum on the posix command line

[Plex Gui] How to enable preview support for aMule (speedup for MLDonkey)?

  • Note: this will work only if P2P-GUI and the client have direct access to the clients temp directory
  • select a client on the Clients panel
  • go to the Client Settings panel and look for the temp directory setting
  • set that setting to your clients temp directory
  • P2P-GUI will now serve these files from hard disk instead using the gui protocol

[Plex Gui] How to add items to the panel?

  • ,,Module Settings" => ,,Core"
  • Check the panel items and click ,,Apply" to have items loaded/unloaded

How to alter GUIs, themes, skins?

  • Write out the files in the bianry to disk by invoking P2P-GUI with "--write-out-files".
  • [Plex Gui] Add another *.css file along with the others and it will be selecteable.
  • More detailed information can be found in the README.txt from GIT.

Wasn't there a PHP version for multi user management?

Yes, but those were dark ages. In a nutshell:

  1. In the beginning, there was Zuul
  2. Then there was a fork called Web-GMUI
  3. Web-GMUI switched from PHP to D and priorities of the project changed
  4. The project was renamed to P2P-GUI

Why is it written in the D programming language?

  • The previous code base was written in PHP.
  • But it lacks ways to handle binary data and was slow. Not very elegant. It's no fun.
  • I wrote a Demo in Java with servlets.
  • The code separation wasn't good and the language was bloated; framework overkill;
  • the runtime size was big => not suited for routers
  • I wrote a Demo in C/C++; a simple webserver and apache module.
  • But it was difficult to code quickly. Error message ofuscation.
  • A JSON handler template became a nightmare (~1000 LOC); ~500LOC in readable D
  • D is similar in speed and grammar to C/C++;
  • nice error messages; cleaner/more powerfull grammar; fast coding; fun.

Contributions

Any contribution is welcome! You can participate in multiple ways:

  • Submit a bug report.
  • Return feedback (e.g. Fun is missing.).
  • Add/improve translations.
  • Add/improve CSS themes.
  • Compile code for different platforms.
  • Improve/extend the program code/api design.

Compiling from Sources

The current release may have bugs that are already fixed in SVN. If you want to compile P2P-GUI from sources you need a D compiler and the Tango library. These steps are for DMD on linux. Steps for Windows/MacOS and gdc (svn!) are similar.

  • Get the P2P-GUI Sources
  • Get and install the D compiler + Tango library, the repository snapshop is recommended
  • Make sure you have OpenSSL and libz installed (mentioned in Quick Start).
  • Compile the binary in the source directory: make dmd-linux32
  • This won't include the webroot folder into the binary (mostly html, css and image files).
  • Read the provided README.txt for these extra steps.
  • You might want to clear the browser cache.

Thanks:

Many thanks to all People/Projects who have contributed in many different ways:

  • #D on freenet and the Tango team for lots of help and good libraries.
  • All people who provided Translations. They can be found in the ChangeLog.
  • Zuul, for the starting ground.

eMail: moritzwarning@web.de