Les Meilleurs Bons Plans Domotique et High-Tech - Tests XIAOMI - Smartphones, Tablettes, Cameras IP, Etc...

[Tuto] Gérer µTorrent avec Jeedom

Bonjour,

Aujourd’hui, @Syll nous explique comment gérer µTorrent avec Jeedom.

Merci à lui pour le partage de ce tuto 🙂


Gérer µTorrent avec Jeedom

Utilisant une connexion VPN pour accéder à des données… disons…euh.. des données, il arrive que la connexion VPN ne se fasse pas, plante ou n’arrive plus à se connecter à cause de Windows (ça bug) et du coup, je me retrouve avec mon IP Publique de mon FAI sur le net. Bref, vous voyez le problème ?

Menu :

Comment ça fonctionne ?

Un script VBS tournant avec une tâche planifiée sous Windows envoie dans un virtuel votre adresse IP Publique.

Dans un scénario, on vérifie que l’adresse IP Publique avec la liaison VPN n’est pas votre IP Publique de votre FAI.

Si les 2 adresses sont identiques, alors dans µtorrent, via le Web UI, on arrête tous les téléchargements via un script Shell, je m’envoie un SMS et j’affecte la valeur 0 à une variable, #VPN# par exemple.

Si les 2 adresses sont différentes et si ma variable #VPN#=0, alors je démarre mes téléchargements et j’affecte 1 à ma variable.

Cela aurait été simple si le Web UI de µTorrent pouvait stopper tous les téléchargements d’un coup, mais non. Faut pas que ça soit facile non plus. Vous allez voir comment faire exactement.

Avant de commencer, je préviens, je ne suis pas à pro de la programmation.

Explications

Configuration du Virtuel

Dans Jeedom, créer un virtuel avec une commande info tout simplement. Activez votre équipement et sauvegardez le.

Cliquez sur la roue crantée puis sur URL pour avoir l’URL exacte de la commande. Une ligne du style : http://IP/core/api/jeeApi.php?apikey=ClefAPI&type=virtual&id=3369

Mise en place du script VBS

Le Script VBS à planifier avec le Planificateur Windows :

Set oIE = WScript.CreateObject(« InternetExplorer.Application », « IE_ »)
oIE.navigate « www.domoteek.fr/publicip.php »
Do While (oIE.Busy)
WScript.Sleep 200
Loop
IP = oIE.Document.documentelement.innertext
Set objHTTP = CreateObject(« Microsoft.XMLHTTP »)
objHTTP.open « POST », « http://IP_Jeedom/core/api/jeeApi.php?apikey=ClefAPI&type=virtual&id=3369 », False
objHTTP.setRequestHeader « Content-Type », « application/x-www-form-urlencoded »
objHTTP.send « http://IP_Jeedom/core/api/jeeApi.php?apikey=ClefAPI&type=virtual&id=3369&value= » & IP

En gros, on récupère dans la variable IP votre IP Publique et on affecte le virtuel créé de cette valeur.

N’oubliez pas de remplacer IP_Jeedom, ClefAPI et l’Id du virtuel.

Le fichier publicip.php contient uniquement : <?php echo $_SERVER[« REMOTE_ADDR »];?>
Vous pouvez l’utiliser sans modération.

J’ai mis une planification à 5 minutes pour le planificateur Windows. Le mieux serait de lire le journal d’événements Windows si votre logiciel inscrit des éléments en cas de coupure VPN, mais là ça dépend de chaque logiciel.

Configuration de la Web UI

Sur votre PC où vous avez µTorrent, il faut télécharger si vous ne l’avez pas déjà fait, le fichier webui.zip pour accéder à l’interface web de gestion. Vous trouverez le fichier ici. C’est la dernière version et ça date de 2013. Renommer le fichier en webui.zip et copier-le directement dans « %appdata%\µtorrent ».

Dans µTorrent maintenant, dans vos préférences, dans la partie Web UI :

  • Activez le webui,
  • Entrer un nom d’utilisateur et un mot de passe
  • Cocher Alternative Port. Vous pouvez laisser le 8080
  • Dans Restrict Access, indiquez l’IP de Jeedom pour que seul lui puisse accéder à l’interface Web

Chez moi, je ne peux pas accéder à la Web UI mais ça ne gêne en rien le fonctionnement du script ensuite.

Configuration du script Shell

Créer un nouvel équipement Script qui servira à stopper les téléchargements, de type Action. Faites Nouveau puis nommez-le comme vous voulez, moi, je l’ai nommé script_vpn.sh et collé ce code puis enregistrer :

file=’/tmp/list’
curl http://$1:$2@$3:$4/gui/?list=1 > $file;
echo « $(tail -n +5 /tmp/list) » > $file;
echo « $(head -n -4 /tmp/list) » > $file;
sed -i ‘s/\(.\{2\}\)//’ $file;
sed -i ‘s/ ».*//’ $file;
while read -r line
do
curl -X POST « http://${1}:${2}@${3}:${4}/gui/?action=$5&hash=${line} »
done < « $file »

C’est la partie la plus amusante. En effet, l’API de µTorrent ne permet pas de stop tous les téléchargements d’un coup ou de les mettre en pause. Il faut les sélectionner un à un. L’astuce ici est de récupérer le Hash de tous les téléchargements et pour chaque ligne, on fait une action.

Explication du script :

file=’/tmp/list’ <– Déclaration du fichier qui contiendra les hashs
curl http://$1:$2@$3:$4/gui/?list=1 > $file; <– On récupère les hashs pour les mettre dans le fichier
echo « $(tail -n +5 /tmp/list) » > $file; <– On supprime les lignes du débuts qui ne contiennent pas de Hash
echo « $(head -n -4 /tmp/list) » > $file; <– De même pour les lignes de fin
sed -i ‘s/\(.\{2\}\)//’ $file; <– On supprimer les 2 premiers caractères de chaque ligne…
sed -i ‘s/ ».*//’ $file; <– … et on supprime le reste de la ligne à partir de la 1ère quote trouvé. On a ainsi uniquement le hash ligne par ligne
while read -r line <– Début de la boucle
do <– On fait…
curl -X POST « http://${1}:${2}@${3}:${4}/gui/?action=$5&hash=${line} » <– … l’action via curl…
done < « $file » <– … jusqu’à la fin du fichier

$1 à $5 sont les paramètres que nous allons voir juste là

J’ai passé en paramètres 5 éléments qui sont :

  • Syll <– $1, corrspond à l’identifiant de la Web UI
  • Syll <– s$, correspond au mot de passe de la Web UI
  • 192.168.1.19 <– $3, correspond à l’IP du PC µTorrent
  • 8080 <– $4, correspond au port
  • stop <– $5, correspond à l’action à faire.

Créer une nouvelle commande pour démarrer vos téléchargements en indiquant en paramètres 5 « start » au lieu de « stop ».

La liste des possibilités de l’API Web est sur le forum officiel.

Configuration du scénario

Niveau scénario, rien de plus simple, créer un nouveau scénario avancé de ce style :

En déclencheur, j’ai mis une programmation à 5 minutes pour éviter des surcharges si vous êtes sur RPI. Sur, toutes les minutes, ça ne bronche pas :p

Vous pouvez éviter les logs aussi vu que vous êtes alertés par SMS.

Et voilà, maintenant, vous serez tranquille en cas de coupure. Je pense qu’il est possible de faire un plugin directement dans Jeedom, je crois même qu’il existe une autre API sur GitHub mais ce n’est pas de mon niveau.

Fin.


Nota : Les commentaires de ce post sont fermés, pour les questions n’hésitez pas à aller ICI sur l’article du blog de @Syll directement 😉


 

Ventes Flash *Spéciales Noël*

 Pages *Coupons Nouveaux Clients* Gearbest

Idées Cadeaux Amazon

Vous pourriez aussi aimer

Les commentaires sont fermés.