Recevoir une notification quand la seedbox perd la connexion VPN

Dans un précédent article, je vous avais détaillé comment créer une seedbox connectée en VPN depuis un Raspberry Pi. Je vais maintenant vous expliquer comment mettre en pause les téléchargements en cas de perte du VPN et recevoir une notification push sur son smartphone.

Mise en place des notifications push sur smartphone

Comme nous travaillons sur une machine distante headless, la connection VPN peut être perdue sans forcément qu’on s’en rende compte. L’objectif est donc de mettre en place un système de notification. Nous allons utiliser les notifications push sur smartphone pour être averti.

Nous allons utiliser ici l’application PushBullet. Après vous être enregistré et avoir installé l’application sur votre smartphone, je ne saurais que vous conseiller d’utiliser le script créé par Belgotux.

Pour faire rapide, une fois connecté en SSH sur la seedbox :

 pi@seedbox$ wget -O /usr/local/bin/pushbullet.sh https ://www.monlinux.net/wp-content/uploads/pushbullet.sh_.txt

Modifiez le script :

 pi@seedbox$ nano /usr/local/bin/pushbullet.sh

pour préciser votre accessToken. Enfin, pensez à rendre le script exécutable :

 pi@seedbox$ chmod +x /usr/local/bin/pushbullet.sh

Si tout est Ok, vous pouvez essayer de vous envoyer une notification pour voir :

pi@seedbox$ pushbullet.sh “Test” “Ca fonctionne !”

Autoriser le contrôle de Transmission-daemon depuis le Raspberry

Pour mettre en pause ou relancer les téléchargements, il faut nécessairement passer par le client transmission remote, qu’il faut donc commencer par installer :

pi@seedbox$ apt-get install transmission-remote-cli

Reste à autoriser la connexion locale à transmission, c’est-à-dire depuis localhost. Commencez par arrêter transmission-daemon :

pi@seedbox$ service transmission-daemon stop

Puis modifiez le fichier de configuration :

 pi@seedbox$ nano /var/lib/transmission-daemon/info/settings.json

A la ligne rpc-whitelist, ajoutez 127.0.0.1. Pour résumer, si vous voulez pouvoir contrôler les téléchargements depuis toutes les machines du réseau ET depuis le raspberry lui-même, la ligne doit ressembler à ça :

"rpc-whitelist" : "192.168.1.*,127.0.0.1",

Note : l’adresse 127.0.0.1 correspond à la machine elle-même (le localhost), mais inutile de mettre locahost à la place de de l’adresse IP dans le fichier de configuration, ça ne fonctionne pas !

Scripts

Nous allons maintenant créer un script qui mettra en pause les téléchargements si la connexion VPN est perdue :

pi@seedbox$ nano /usr/local/bin/transmission-down.sh

avec pour contenu :

!/bin/bash<br>pushbullet.sh "Connection au VPN" "La seedbox a été reconnectée avec succès au VPN. Tous les téléchargements en cours ont été relancés."
transmission-remote --torrent all --start
/etc/openvpn/update-resolv-conf
exit 0

Et un autre en cas de reconnexion :

 $nano /usr/local/bin/transmission-up.sh

!/bin/bash<br>pushbullet.sh "Connection au VPN" "La seedbox a été reconnectée avec succès au VPN. Tous les téléchargements en cours ont été relancés."
transmission-remote --torrent all --start
/etc/openvpn/update-resolv-conf
exit 0

!/bin/bash
pushbullet.sh "Connection au VPN" "La seedbox a été reconnectée avec succès au VPN. Tous les téléchargements en cours ont été relancés."
transmission-remote --torrent all --start
/etc/openvpn/update-resolv-conf
exit 0

Note : si vous avez demandé une authentification pour accéder à transmission (option rpc-authentication-required), vous pouvez passer le nom d’utilisateur et le mot de passe à transmission-remote en rajoutant les options -n login :mdp

La dernière ligne des deux scripts sert à exécuter celui qu’on avait précisé initialement dans les paramètres de connexion/déconnexion à OpenVPN. Il faut donc maintenant modifier ces fameuses lignes dans le fichier de configuration OpenVPN :

pi@seedbox$ nano /etc/openvpn/MonVPN.conf

pour avoir quelque chose qui ressemble à ça :

up /usr/local/bin/transmission-up.sh
down /usr/local/bin/transmission-down.sh

Reste plus qu’à faire le test :

 pi@seedbox$ service openvpn restart

Si tout se passe bien, vous devriez recevoir deux notifications sur votre téléphone (une pour la déconnexion, l’autre pour la reconnexion). Et voilà !