C’est curieux, en général dans les applications les options passées dans la ligne de commande ont priorité sur celles dans les fichiers de configuration.
Je suppose qu’un contournement serait de supprimer l’adresse dans le fichier de configuration avant de démarrer l’application. Au fait, restart au lieu de start serait plus sûr, prenant en compte le cas où le démon serait déjà démarré.
Donc,
je suis passé en deluge 1.3.3 (Wheezy) après upgrade en libc6-dev, qui a bougé pas mal de choses mais s’est finalement bien passée.
Même en 1.3.3, la gestion du flag -i reste… bizarre. Je suis donc passé à l’option de modifier le fichier de config moi-même.
Dans ip-down, après le stop, j’enlève de la config la mention de l’adresse d’écoute
#!/bin/sh
#
# Restriction sur le fournisseur
[ "$PPP_IPPARAM" = "mon_vpn" ] || exit 0
# on arrête deluge
/etc/init.d/deluge-daemon stop
CONFIG_FILE=/var/lib/deluge/.config/deluge/core.conf
# on supprime l'ancienne sauvegarde
rm -f "${CONFIG_FILE}.save"
# on sauvegarde le fichier courant
mv "$CONFIG_FILE" "${CONFIG_FILE}.save"
# on enlève l'interface d'écoute
grep -v "listen_interface" "${CONFIG_FILE}.save" > "${CONFIG_FILE}"
ip rule del from $PPP_LOCAL lookup 111
ip route del default dev $PPP_IFACE table 111
et dans ip-up, j’arrête aussi deluge, j’enlève l’adresse où qu’elle soit (grep -v), je la remet à la main (sed), et je relance deluge. Je fais ces trucs moches parce que je n’ai pas trouvé d’éditeur json en ligne de commande…
#!/bin/sh
#
# Restriction sur le fournisseur
[ "$PPP_IPPARAM" = "mon_vpn" ] || exit 0
ip route add default dev $PPP_IFACE table 111
ip rule add from $PPP_LOCAL lookup 111
# on arrête deluge
/etc/init.d/deluge-daemon stop
CONFIG_FILE=/var/lib/deluge/.config/deluge/core.conf
# on supprime l'ancienne sauvegarde
rm -f "${CONFIG_FILE}.save"
# on sauvegarde le fichier courant
mv "$CONFIG_FILE" "${CONFIG_FILE}.save"
# on enlève l'interface d'écoute
grep -v "listen_interface" "${CONFIG_FILE}.save" > "${CONFIG_FILE}.tmp"
# on ajoute notre interface d'écoute
sed -n "1h;1! H;$ {;g;s/\(\"listen_ports\"\)/\"listen_interface\": \"$PPP_LOCAL\",\n \1/;p;}" "${CONFIG_FILE}.tmp" > "${CONFIG_FILE}"
# on la passe aussi au script mais ça n'a pas l'air de bien marcher
export USE_PPP_LOCAL="-i $PPP_LOCAL"
# et on lance deluge
/etc/init.d/deluge-daemon start
La formule sed n’est pas piquée des hannetons
Tout marche bien, la bonne interface est utilisée, je n’ai plus de pertes de connexion.
Je vais pouvoir faire autre chose du reste de mon week-end
Un grand merci à PascalHambourg !
Et merci à toi pour le retour d’information, ça fait toujours plaisir de savoir à quoi ont abouti les conseils et ça pourra éventuellement servir à d’autres sans qu’ils aient à y passer la semaine.