grtorrent


Webbased torrent client with an asynchronous backend. Rtorrent gets fully controlled by an independent backend of the application. This backend is doing all the calls to rtorrent with xmlrpc. The frontend will not talk with it in order to improve the frontent reaction time and avoid any lag from the appication (eg: rtorrent hasing a torrent etc..)
Between the backend and frontent I used a mysql database, so even if rtorrent metadata for a specific torrent got deleted, it was completely transparant for any frontend data. Even the configuration for the torrent (eg: specific priorities on files etc)

Show me

After searching for a nice webbased torrent application (on top of rtorrent), I couldn't find anything which could please me at that time. So I descided to write my own torrent application on top of rtorrent.

The first version was doing some xmlrcp calls to the rtorrent client directly, but it didn't took long before I noticed that the calls where slowing down the frontend. This happened especially when the number of torrents grew, rtorrent had even some issues that it crashed from time to time, or the xmlrpc connection could be slow with delays or timeouts. Those problems could slow down or even block the webapplication, so after a while I have splitted the xmlrpc calls completely off to a backend which ran through cron. At the bottom you can find a screen with arrows where the whole process has being described.
The 2 images with text is taken from the documentation I've wrote a few years ago. This was done in order to publish the software. But till now I never made the few last steps to do it. I was just not really happy about some parts and time went to other projects like last.fm and Sigura. By now I realize that you'll need to make it public at some point anyway, as you'll always find some things which can be improved..

Still, even now, I'm still very proud about this project. It's even over 10 years later, and it was still running till 2019 on my server without any problem. (Just a bit slow, probably due to an unindexed mysql table or so. I could check and solve it, but why should I put time in a project I descided to abandon)

The project was having on average more features than any other torrent application could have, eg: scheduling of trafic speed, creating torrents, filtering, torrent and application statistics, multi-user,..