Une blocklist est une liste d’adresse IP dans un format pré-défini pouvant être utilisée par divers logiciels (notamment les clients torrents) pour bloquer l’accès du dit logiciel aux utilisateurs des ces IPs (= liste noire d’adresses IP).
Transmission supporte évidemment les blocklists, mais la liste utilisée n’est pas paramétrable, Transmission télécharge une liste de niveau 1 sur son URL mirroir
De plus la mise à jour de la liste n’est pas automatique. Sur le client lourd (transmission GTK) il existe un bouton permettant de mettre à jour la liste, mais évidemment sur le démon il n’ya pas de bouton.
Nous allons donc voir comment dans un premier temps mettre à jour la liste lorsque l’on utilise le démon puis ensuite comment utiliser des listes personnalisées et les mettre à jour automatiquement…
Dans les 2 cas il faut que le paramètre blocklist-enabled soit positionné à true dans votre fichier settings.json
Pour mettre à jour la liste de blocage Transmission lorsqu’on utilise le démon il faut passer par le commande transmission-remote du paquet transmission-cli :
#! /bin/sh username='username' password='password' transmission-remote --auth $username:$password --blocklist-update sudo /etc/init.d/transmission-daemon restart
A la fin on re-démarre le démon pour qu’il prenne ne compte la nouvelle liste, si comme moi vous utilisez sudo et que vous exécutez ce script avec votre utilisateur il faudra autoriser la commande de re-démarrage dans votre sudoer (voir en fin de éème solution)
Il suffira alors de mettre ce script dans une tache cron et le tour est joué…
Rque : comme ce script contient les login et mot de passe en clair de transmission RPC il conviendra de restreindre ses droits d’accès (chmod 700 script.sh)
Je n’ai pas testé ce script puisque j’utilise la deuxième solution qui consiste à gérer la mise à jour et l’origine de la liste de blocage :
#!/bin/bash # Télécharge des blockslist à partir de http://iblocklist.com/lists.php # et les intégre dans le répertoire de Transmission # répertoire de travail # répertoire de travail / temporaire travail=$HOME/tmp/blocklists # réperoire où Transmission stock les fichiers blocklist transmissionBlocklist=$HOME/.config/transmission-daemon/blocklists echo -e "******** Compilation d'une Bloclist pour Transmissionbt ***********" if [ -e $travail ]; then echo -e "Répertoire de travail $travail " else mkdir $travail fi rm $travail/* #récupération des fichiers http://iblocklist.com/lists.php echo -e "\n********* Téléchargements des listes de blocage *******************" wget http://list.iblocklist.com/?list=bt_level1 -O $travail/bt_level1.gz wget http://list.iblocklist.com/?list=bt_level2 -O $travail/bt_level2.gz #décompression echo -e "\n********* Décompression des listes téléchargées *******************" gunzip -v $travail/*.gz #concaténer les fichiers echo -e "\n********* Création d'une seule liste sans redondance des données **" echo -e "traitement en cours ...Patientez SVP..." cd $travail list1=$(ls) && sort -u $list1 >> blocklist && cd - #Déplacement du fichier blocklist dans le répertoire de Transmission echo -e "\n********* Déplacement de la Blocklist *****************************" if [ -d $transmissionBlocklist ] ;then echo -e "Copie de sauvegarde de l'ancien fichier" mv -f $transmissionBlocklist/blocklist $travail/blocklist.bak echo -e "Déplacement du nouveau fichier dans le répertoire de Transmission" mv -f $travail/blocklist $transmissionBlocklist fi # Rechargement de Transmission echo -e "Rechargement de la configuration de Transmission" sudo /etc/init.d/transmission-deamon reload ls $transmissionBlocklist/blocklist > /dev/null 2>&1 if [ $? -eq 0 ]; then echo -e "\n*********** Opération terminée ************************************" else echo -e "\n *** KO **** !! Le fichier bloklist est vide !! *** KO *** " fi
Le script télécharge les listes voulues (ici les niveaux 1 et 2), les dézippe et les concatène en excluant les doublons, la liste résultante est ensuite copié dans le répertoire utilisé par Transmission et le démon est rechargé.
Comme indiqué précédemment pour que la commande de rechargement du démon puisse être exécuté via sudo sans demande de mot de passe il faut modifier le sudoer ce qui se fait en lançant la commande
sudo visudo
Et en ajoutant une ligne du type :
mon_utilisateur ALL= NOPASSWD: /etc/init.d/transmission-daemon
De même que pour la première solution on mettra ce script dans une tache cron (à la semaine par exemple)
Pour finir quelques mots sur les listes de blocage.
Transmission supporte les formats P2P Plaintext (Nom:IP_Début:IP_Fin) et DAT (format binaire non éditable)
On pourra trouver des listes de blocage P2P sur les sites suivants :
On recommande la liste de iblocklist de niveau 1 (IP impliqués dans la lutte contre le piratage) en général et la liste de niveau 2 (IP des sociétés en général, des laboratoires et proxy) éventuellement.
Edit : 31/05/2011 : correction la variable d’environnement $USER n’est pas connu dans CRON, utilisation de $HOME à la place (mieux en plus)
Sources :
- Papillon-butineur: Blocklists avec Transmission : source du script initial que j’ai modifié
- Blocklists – Transmission : documentation officielle sur les blocklist
- Scripts/BlockListUpdater – Transmission : script de mise à jour des blocklist (beaucoup moins évolué que celui de papillon-butineur)
- Random Stuff: Automatically update Transmission’s block list : Script moins complet
- transmission-remote and blocklist-update : script pour mettre à jour la blocklist
Image par Lou Ect sous CC BY-NC-ND