12-06-2019, 22:31:41
bonjour,
Ayant eu besoin de modifier le proxy de firefox (et seamonkey) j'ai découvert un bug dans le script proxy-protect.
le symptôme :
lorsque l'on active proxy-protect , firefox se configure avec le proxy de dansguardian et tinyproxy avec
la définition
http://127.0.0.1 port 8080
lorsque l'on désactive proxy-protect, quelque soit la configuration précédente, firefox retourne au mode
"Utiliser les paramêtres proxy du système"
et donc on perd les autres paramêtres que l'on auraient précédemment sélectionnés comme
"Détection automatique des paramêtres de proxy pour ce réseau" ou autre
le test
retourne toujours 2 soit d'après le man "le code est 2 si une erreur est survenue" et donc le test rétablit toujours
le test est effectué sur une variable au lieu d'un 'file'
synopsis grep [OPTIONS] MOTIF [FICHIER...] [OPTIONS] MOTIF [FICHIER...]
donc voici le la ligne de test à modifier
de plus proxy-protect utilise l'interface graphique pour choisir le mode de fonctionnement "active" ou "desactive", il serait bon de pouvoir l'utiliser dans un shell de commande root hors interface graphique.
Je propose donc quelques modifications à apporter en ajoutant un argument de commande ( enable / disable )
il pourrait être compléter avec un 3me argument de commande précisant le type de proxy souhaité à la desactivation
echo "//\nlockPref(\"network.proxy.type\", $3);" > /usr/lib/firefox-esr/mozilla.cfg
à débattre ..... faudrait modifier sans doute l'interface graphique ....
Ayant eu besoin de modifier le proxy de firefox (et seamonkey) j'ai découvert un bug dans le script proxy-protect.
le symptôme :
lorsque l'on active proxy-protect , firefox se configure avec le proxy de dansguardian et tinyproxy avec
la définition
http://127.0.0.1 port 8080
lorsque l'on désactive proxy-protect, quelque soit la configuration précédente, firefox retourne au mode
"Utiliser les paramêtres proxy du système"
et donc on perd les autres paramêtres que l'on auraient précédemment sélectionnés comme
"Détection automatique des paramêtres de proxy pour ce réseau" ou autre
le test
Code :
# S'il n'y a encore aucune préférence de proxy on définit
# une protection par défaut pour Webstrict
if [ grep 'network.proxy.http' "$pref_proxy") ]
Code :
then
pref_proxy='lockPref("network.proxy.type", 1);
lockPref("network.proxy.http", "127.0.0.1");
lockPref("network.proxy.http_port", 8080);
lockPref("network.proxy.no_proxies_on", "");
lockPref("network.proxy.share_proxy_settings", true);'
fi
le test est effectué sur une variable au lieu d'un 'file'
synopsis grep [OPTIONS] MOTIF [FICHIER...] [OPTIONS] MOTIF [FICHIER...]
donc voici le la ligne de test à modifier
Code :
# S'il n'y a encore aucune préférence de proxy on définit
# une protection par défaut pour Webstrict
if [ ! $(echo $pref_proxy | grep 'network.proxy.http') ]
then..
de plus proxy-protect utilise l'interface graphique pour choisir le mode de fonctionnement "active" ou "desactive", il serait bon de pouvoir l'utiliser dans un shell de commande root hors interface graphique.
Je propose donc quelques modifications à apporter en ajoutant un argument de commande ( enable / disable )
Code :
# proxy-protect chemindufichier_prefs.js enable
ou
# proxy-protect chemindufichier_prefs.js disable
Citation :#!/bin/sh
#####################################################################
# Ce script est un script complémentaire de proxy-protect-firefox #
# il effectue les tâches qui nécessitent des droits root #
#####################################################################
# version 2.0 permet de modifier le comportement du proxy en mode non interactif
# il faut passer un deuxieme argument précisant
# la protection du proxy
# enable : le proxy est actif
# disable: le proxy est inactif
#
# de plus il corrige le test de l'absence de préférence de proxy
# qui avait objectif de définir le blocage des variables "network.proxy.*"
# if [ grep 'network.proxy.http' "$pref_proxy" ] remplacé par
# if [ ! $(echo $pref_proxy | grep 'network.proxy.http') ]
# qui conduisait a cassé la conf choisie dans firefox->préférences
chemin_pref="$1"
desactive () {
# vide le fichier des paramètres à bloquer et fixe
# les paramètres pour une utilisation sans proxy
cp /dev/null /usr/lib/firefox-esr/mozilla.cfg
echo "//\nlockPref(\"network.proxy.type\", 4);" > /usr/lib/firefox-esr/mozilla.cfg
# commente les lignes du fichier local-settings.js
# pour que les modifications ne soient plus grisées dans Firefox
sed -i -e "s/pref/#pref/g" /usr/lib/firefox-esr/defaults/pref/local-settings.js
# modifie l'icône du panneau d'aministration pour faire apparaître la suppression de la protection
cp -f /usr/share/pixmaps/administration/preferences-system-network.png /usr/share/pixmaps/preferences-system-network-locked.png
}
active () {
# vérifie si la protection n'est pas déjà activée
if grep '^pref' /usr/lib/firefox-esr/defaults/pref/local-settings.js
then zenity --info --title "Protection du proxy" --text "La protection du proxy est déjà activée !"
exit
fi
# Filtre les paramètres relatifs au proxy
pref_proxy=`cat "$chemin_pref" | grep 'network.proxy.' |sed -e 's/^user_pref/lockPref/g'`
# S'il n'y a encore aucune préférence de proxy on définit
# une protection par défaut pour Webstrict
if [ ! $(echo $pref_proxy | grep 'network.proxy.http') ]
then
pref_proxy='lockPref("network.proxy.type", 1);
lockPref("network.proxy.http", "127.0.0.1");
lockPref("network.proxy.http_port", 8080);
lockPref("network.proxy.no_proxies_on", "");
lockPref("network.proxy.share_proxy_settings", true);'
fi
# Inscrit les paramètres de proxy dans mozilla.cfg
cp /dev/null /usr/lib/firefox-esr/mozilla.cfg
echo "//\n$pref_proxy" > /usr/lib/firefox-esr/mozilla.cfg
# décommente les lignes du fichier local-settings.js pour que
# les modifications interdites soient grisées dans Firefox
sed -i -e "s/^#*pref/pref/g" /usr/lib/firefox-esr/defaults/pref/local-settings.js
# modifie l'icône du panneau d'aministration pour faire apparaître la mise en place de la protection
cp -f /usr/share/pixmaps/administration/preferences-system-network-locked.png /usr/share/pixmaps/preferences-system-network-locked.png
}
if [ $# -eq 1 ]; then
# mode interactif
if ! choix="$(zenity --list --radiolist --title "Protection du proxy" --text "Voulez-vous activer ou désactiver la protection du proxy de Firefox ?" --column="Choix" --column="Activation / désactivation" TRUE "Activer la protection" FALSE "Désactiver la protection")"
then exit
fi
if [ "$choix" = "Désactiver la protection" ]
then desactive
else active
fi
zenity --info --title "Protection du proxy" --text "Modifications appliquées avec succès! Veuillez redémarrer Firefox."
else
# mode commande
if [ $# -eq 2 ];then
echo "mode commande demandé $2"
case $2 in
enable)
echo "activation proxy primtux"
active
exit 0
;;
disable)
echo "desactivation proxy primtux"
desactive
exit 0
;;
*)
echo "mauvaise commande arg = enable ou disable"
exit 1
;;
esac
fi
fi
exit 0
il pourrait être compléter avec un 3me argument de commande précisant le type de proxy souhaité à la desactivation
echo "//\nlockPref(\"network.proxy.type\", $3);" > /usr/lib/firefox-esr/mozilla.cfg
à débattre ..... faudrait modifier sans doute l'interface graphique ....