An open source command line RatioMaster with an optional WebUI.
Go to file
2017-04-01 20:27:16 +02:00
resources [Client] new: Deluge 1.3.14 2017-04-01 13:59:31 +02:00
src Change the way EmulatedClient are created. 2017-03-29 19:18:27 +02:00
.gitignore Prepare version 1.0.1 2017-03-14 02:07:26 +01:00
Dockerfile.arm Improved Dockerfile. Now automatically download last release on build. 2017-03-14 12:39:03 +01:00
pom.xml Prepare for next iteration 2017-04-01 20:27:16 +02:00
README.md Update README.md, moved .client documentation to github wiki 2017-03-14 13:38:27 +01:00

Prepare confguration folder

You first need to get the cofiguration folder. Replace <MY_CONFIG_FOLDER_PATH> by whatever path you want.

git clone git@github.com:anthonyraymond/joal.git
cd joal
cp -R resources <MY_CONFIG_FOLDER_PATH>

Now add some of your private tracker's .torrent file to <MY_CONFIG_FOLDER_PATH>/torrents/. But be aware that only torrent with at least 1 leecher will actually be used by joal, to keep your account from being banned.

Install and run

With Docker

At the moment only an ARM based docker file is available.

docker build -f Dockerfile.arm -t araymond/joal .
docker run -d -v <PATH_TO_CONFIG_DIR>:/data -p 49152-65534:49152 --name="joal" araymond/joal

Without Docker

You need to have Java 8 installed.

We first need to download the latest version of the .jar. Once again replace <MY_CONFIG_FOLDER_PATH> by your choosen path and execute this script

cd <MY_CONFIG_FOLDER_PATH> \
&& GITHUB_REPO="https://github.com/anthonyraymond/joal" \
&& LATEST=$(curl -sSI $GITHUB_REPO"/releases/latest" | perl -n -e '/^Location: .*?tag\/(.*?)\r*$/ && print "$1\n"') \
&& curl -f -L $GITHUB_REPO"/releases/download/"$LATEST"/"$LATEST".jar" > ./jack-of-all-trades.jar

Then you can run the application with the following command (replace X.X.X with your own version)

java -jar jack-of-all-trades-X.X.X.jar <MY_CONFIG_FOLDER_PATH>

Understanding configuration (optional)

Torrent files

  • All torrent file in <MY_CONFIG_FOLDER_PATH>/torrents/ will be available for sharing.
  • One random torrent file from <MY_CONFIG_FOLDER_PATH>/torrents/ is choosed randmfly for each seed session.
  • All torrent file added/removed/modified in <MY_CONFIG_FOLDER_PATH>/torrents/ while the client is running will be automatically hot loaded, there is no need to restart.
  • If the torrent currently seeding reach 0 peers, the file will be moved to <MY_CONFIG_FOLDER_PATH>/torrents/archived folder.

Application configuration

The application configuration belongs in <MY_CONFIG_FOLDER_PATH>/config.json.

{
  "minUploadRate": 180,
  "maxUploadRate": 190,
  "seedFor": 840,
  "waitBetweenSeed": 600,
  "client": "azureus-5.7.4.0.client"
}
  • minUploadRate : The minimum uploadRate you want to fake (in kB/s) (required)
  • maxUploadRate : The maximum uploadRate you want to fake (in kB/s) (required)
  • seedFor : How long the client should seed for in a row (seeding session in minutes) (required)
  • waitBetweenSeed : How long the client should wait before two seeding session (in minutes) (required)
  • client : The name of the .client file to use in <MY_CONFIG_FOLDER_PATH>/clients/ (required)

Create your own torrent clients

To learn more about .client, head to the project's wiki.

ROADMAP

  • Add application setting with setting file
  • App setting : min_upload_rate
  • App setting : max_upload_rate
  • Externalise client definition to .clients file
  • Add client header to HttpRequest
  • When a torrent reach 0 peers, try with another torrent instead of stopping.
  • When a torrent reach 0 peers, remove the torrent file from the directory.
  • Add a file watcher to monitor torrent folder (hot loading .torrent files instead of restarting)
  • Implement appear as contactable to peers.
  • Add a config to define if torrent should be deleted or skipped if 0 peers were leeching.
  • Add tests.
  • Refactoring.

Thanks:

This project use a modified version of the awesome mpetazzoni/ttorrent library. Thanks to mpetazzoni for this.