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 :

Image par Lou Ect sous CC BY-NC-ND

Les commentaires sont fermés.