getXfox 4.11.0

This commit is contained in:
kyodev 2018-01-23 22:29:15 +01:00
parent 4168336d7f
commit 5518b80dea
2 changed files with 145 additions and 131 deletions

View File

@ -1,7 +1,7 @@
#!/bin/bash
version=4.9.0
date="29/12/2017"
version=4.11.0
date="16/01/2018"
projet="simpledeb"
contact="IRC freenode ##sdeb ou https://framagit.org/kyodev/kyopages/issues/"
script="getXfox"
@ -136,9 +136,10 @@ f__requis(){ # 4/12/2017
fi
}
# $1=cmd si $2: nb de tentatives pour s'identifier, sinon 2 tentatives par défaut, suppose bash existant
f__sudo(){ # 23/12/2017
local nb=2 sudo isudo toBash
# $@=cmd à lancer en root avec su ou sudo. si $@ contient :x: x=nombre de tentatives, sinon 2 tentatives par défaut
# si bash inexistant, return 2
f__sudo(){ # 14/01/2018
local nb sudo isudo toBash options
type -p bash &>/dev/null && toBash=$( type -p bash ) || return 2
# sudo --shell bash équivalent su ?
@ -147,9 +148,16 @@ f__sudo(){ # 23/12/2017
else
sudo="su --shell $toBash --preserve-environment -c "
fi
[ "$2" ] && nb=$(( "$2" ))
if [[ "$@" =~ :??: ]]; then
nb="$@"
nb=${nb#*:}
nb=${nb%:*}
else
nb=2
fi
options=${@//:$nb:/ }
for (( isudo=1 ; isudo<="$nb" ; isudo++ )); do
$sudo " $1"
$sudo " $options"
[ "$?" == 0 ] && break
[ "$isudo" == "$nb" ] && return 1
done
@ -204,7 +212,7 @@ f__user(){ # 3/12/2017
# si $2=print affiche url testée & entêtes http & location, return 0
# si $2=loc affiche seulement location, return 0
# si $2=test return 0 si ok, return 1 si KO
f__wget_test(){ # 24/12/2017
f__wget_test(){ # 16/01/2018
local file_test_wget="/tmp/testWget-$script" retourWget retourHttp location
wget -Sq --timeout=5 --tries=2 --user-agent="$user_agent" --spider --save-headers "$1" &>"$file_test_wget"
@ -227,15 +235,14 @@ f__wget_test(){ # 24/12/2017
fi
if [ "$2" == "print" ]; then
if [ "$retourWget" != "0" ]; then
echo "erreur wget: erreur $RED$retourWget"
echo -e "$BLUE $1$STD\t$RED $retourHttp"
echo " erreur wget: erreur $RED$retourWget"
echo -e "$BLUE $1$STD\t$RED $retourHttp$STD"
else
echo -e "$BLUE $1$STD\t$GREEN $retourHttp"
echo -e "$BLUE $1$STD\t$GREEN $retourHttp$STD"
fi
echo "$STD"
fi
if [ "$2" == "print" ] || [ "$2" == "loc" ]; then
[ "$location" ] && echo -n "$YELLOW$location" || echo -n "$YELLOW""no location"
[ "$location" ] && echo -n "$YELLOW $location" || echo -n "$YELLOW no location"
echo "$STD"
rm -f "$file_test_wget"
return 0
@ -269,7 +276,7 @@ EOF
}
# affichage help
f_help(){ # 26/12/2017
f_help(){ # 15/01/2018
local ih help=(
" ----------------------------------------------------------------------"
" softs possibles:$GREEN tor, wfx $BLUE(Tor Browser, Waterfox)$STD"
@ -278,11 +285,12 @@ f_help(){ # 26/12/2017
" installation Waterfox: $BLUE$script i-wfx$STD"
" "
" $BLUE$script i-$STD$GREEN""soft$STD : $RED""i$STD""nstallation de <soft> $RED(root)$STD"
" avec option $GREEN--sauve$STD l'archive téléchargée est sauvegardée dans le répertoire courant"
" "
" $BLUE$script m-$STD$GREEN""soft$STD : installation de <soft> à partir d'une archive téléchargée $RED""m$STD""anuellement $RED(root)$STD"
" $BLUE$script r-$STD$GREEN""soft$STD : désinstallation ($RED""r$STD""emove) de <soft> $RED(root)$STD"
" $BLUE$script u-$STD$GREEN""soft$STD : profil pour l'$RED""u$STD""tilisateur en cours et comme défaut système $RED(root)$STD"
" (Tor Browser n'est pas cpncerné par le profil)"
" $BLUE$script ri$STD : $RED""r$STD""éparation$RED i$STD""cône(s) dans le menu (Tor Browser ou Waterfox)"
" $BLUE$script u-$STD$GREEN""soft$STD : profil pour l'$RED""u$STD""tilisateur en cours et comme défaut système $RED(root)$STD (Tor Browser n'est pas concerné)"
" "
" $BLUE$script p-$STD$GREEN""soft$STD : $RED""p$STD""ersonnalisation sur <soft> de user.js & userChrome.css"
" $BLUE$script pr-$STD$GREEN""soft$STD : suppression des $RED""p$STD""ersonnalisations ($RED""r$STD""emove) sur <soft>"
@ -332,19 +340,10 @@ f_tor_get_version(){ # 25/12/2017
}
# installation, [$1='manuel', $2 archive]
f_tor_install(){ # 26/12/2017
f_tor_install(){ # 15/01/2018
local fileDesktop="/usr/share/applications/tor-browser.desktop" appli="Tor Browser"
local verArchive fileTemp archi recup_urlTor dirTemp="/tmp/$script-install_tor"
if [ "$EUID" -ne 0 ]; then
f__info "vous devez être$RED ROOT$BLUE pour installer $appli dans le système"
if [ "$1" == "manuel" ]; then
f__sudo "exec $0 m-tor $2"
else
f__sudo "exec $0 i-tor"
fi
return $?
fi
if [ "$1" == "manuel" ]; then
verArchive=$( sed -En 's/.*tor-browser-linux[0-9]{2}-(.*)\.tar\.xz.*$/\1/p' <<< $(basename $2) )
f__info "installation manuelle de $appli version $verArchive ($2)"
@ -374,6 +373,10 @@ f_tor_install(){ # 26/12/2017
mv -f "$dirTemp/tor-browser_fr/"* "$dirInstallTor/"
chown -R "$fu_user:" "$dirInstallTor/"
chmod -R g+wrs,a+r "$dirInstallTor/"
if [ "$dl_to_svg" == "ok" ]; then
chown -R "$fu_user:" "$fileTemp"
mv "$fileTemp" ./
fi
rm -rf "$dirTemp/"
# traitement finaux système
@ -404,9 +407,11 @@ f_tor_install_manuel(){ # 23/12/2017
}
# création lanceur desktop
f_tor_lanceur_desktop(){ # 25/12/2017
f_tor_lanceur_desktop(){ # 13/01/2018
local appli="Tor Browser"
[ -d "$dirInstallTor" ] || return 0 # pas d'installation? sortie
echo "[Desktop Entry]" > "$fileDesktop"
echo "Name=Tor Browser" >> "$fileDesktop"
echo "X-GNOME-FullName=$appli" >> "$fileDesktop"
@ -508,14 +513,9 @@ f_tor_pers_upgrade(){ # 23/12/2017
}
# désinstallation
f_tor_remove(){ # 23/12/2017
f_tor_remove(){ # 14/01/2018
local fileDesktop="/usr/share/applications/tor-browser.desktop" appli="Tor Browser"
if [ "$EUID" -ne 0 ]; then
f__info "vous devez être$RED ROOT$BLUE pour désinstaller $appli"
f__sudo "exec $0 r-tor"
return $?
fi
if [ ! -d "$dirInstallTor/" ]; then
f__info "$appli n'est pas installé"
return 1
@ -531,22 +531,18 @@ f_tor_remove(){ # 23/12/2017
# suppression lien
unlink "/usr/share/pixmaps/tor-browser.png" &>/dev/null
#finalisation system
update-alternatives --quiet --remove 'x-www-browser' /usr/bin/tor-browser &>/dev/null
update-alternatives --quiet --remove 'gnome-www-browser' /usr/bin/tor-browser &>/dev/null
update-alternatives --quiet --remove 'x-www-browser' /usr/bin/tor-browser # &>/dev/null inutile avec --quiet
update-alternatives --quiet --remove 'gnome-www-browser' /usr/bin/tor-browser # &>/dev/null inutile avec --quiet
f__info "log" "$appli désinstallé"
}
# alternatives, $1=soft wfx|tor [$2=cible lanceur /usr/bin $3=no_set]
f_w_config_system(){ # 26/12/2017
# alternatives, $1=soft wfx|tor [$2=cible lanceur (/usr/bin/$2) $3=no_set]
# no_set: inscription update alternatives mais de configuration comme prioritaire
f_w_config_system(){ # 15/01/2018
local soft="$1" dirSoft
dirSoft="dirInstall${soft^}" # dirInstall + soft avec lettre 1 en majuscule (nom d'une variable)
if [ "$EUID" -ne 0 ]; then
f__info "vous devez être$RED ROOT$BLUE pour configurer $soft comme défaut dans le système"
f__sudo "exec $0 s-$soft"
return $?
fi
if [ ! -d "${!dirSoft}" ]; then # référence à la variable $dirInstallSoft
f__info "$soft n'est pas installé"
return 1
@ -554,14 +550,17 @@ f_w_config_system(){ # 26/12/2017
# update-alternatives
if type -p "update-alternatives" &>/dev/null ; then # update-alternatives existe?
update-alternatives --quiet --install $( type -p x-www-browser 2>/dev/null ) 'x-www-browser' "$2" 100 # nouvelle alternative
update-alternatives --quiet --install $( type -p gnome-www-browser 2>/dev/null ) 'gnome-www-browser' "$2" 100 # nouvelle alternative
if [ "$3" != "no_set" ]; then # pas de sélection pour tor
update-alternatives --quiet --set 'x-www-browser' "$2" # si le priorité n'est pas suffisante
update-alternatives --quiet --set 'gnome-www-browser' "$2" # si le priorité n'est pas suffisante
update-alternatives --quiet --install $( type -p x-www-browser 2>/dev/null ) 'x-www-browser' "$2" 100 # nouvelle alternative
if [ "$3" != "no_set" ]; then # pas de sélection comme prioritaire pour tor
update-alternatives --quiet --set 'x-www-browser' "$2" # si la priorité n'était pas suffisante
fi
if type -p gnome-www-browser &>/dev/null; then # commande gnome-www-browser existe ?
update-alternatives --quiet --install $( type -p gnome-www-browser 2>/dev/null ) 'gnome-www-browser' "$2" 100 # nouvelle alternative
if [ "$3" != "no_set" ]; then # pas de sélection comme prioritaire pour tor
update-alternatives --quiet --set 'gnome-www-browser' "$2" # si la priorité n'était pas suffisante
fi
fi
fi
[ "$3" != "no_set" ] && f__info "log:raw" "$soft est le défaut système"
}
@ -627,19 +626,10 @@ f_wfx_get_version(){ # 25/12/2017
}
# installation, [$1='manuel', $2 archive]
f_wfx_install(){ # 26/12/2017
f_wfx_install(){ # 15/01/2018
local fileDesktop="/usr/share/applications/waterfox.desktop" verArchive dirTemp fileTemp
local dirTemp="/tmp/$script-install_wfx" appli="Waterfox"
if [ "$EUID" -ne 0 ]; then
f__info "vous devez être$RED ROOT$BLUE pour installer $appli dans le système"
if [ "$1" == "manuel" ]; then
f__sudo "exec $0 m-wfx $2"
else
f__sudo "exec $0 i-wfx"
fi
return $?
fi
if [ "$fu_archi" == "linux64" ]; then
fu_archi="x86_64"
else
@ -653,7 +643,7 @@ f_wfx_install(){ # 26/12/2017
else
(( x_wfx_get_version == 1 )) || f_wfx_get_version "quiet"
f__info "installation $appli $ver_wfx_online"
fileTemp="$dirTemp/$appli-$ver_wfx_online.en-US.linux-$fu_archi.tar.bz2"
fileTemp="$dirTemp/${appli,,}-$ver_wfx_online.en-US.linux-$fu_archi.tar.bz2"
# téléchargement & test archive
f__info " - téléchargement..."
mkdir -p "$dirTemp"
@ -673,6 +663,10 @@ f_wfx_install(){ # 26/12/2017
mv -f "$dirTemp/waterfox/"* "$dirInstallWfx/"
chown -R "$fu_user:" "$dirInstallWfx/"
chmod -R g+wrs,a+r "$dirInstallWfx/"
if [ "$dl_to_svg" == "ok" ]; then
chown -R "$fu_user:" "$fileTemp"
mv "$fileTemp" ./
fi
rm -rf "$dirTemp/"
# traitement finaux système
@ -714,9 +708,11 @@ f_wfx_install_manuel(){ # 23/12/2017
}
# création lanceur desktop
f_wfx_lanceur_desktop(){ # 26/12/2017
f_wfx_lanceur_desktop(){ # 16/01/2018
local appli="Waterfox"
[ -d "$dirInstallWfx" ] || return 0 # pas d'installation? sortie
echo "[Desktop Entry]" > "$fileDesktop"
echo "Name=$appli" >> "$fileDesktop"
echo "Name[fr]=$appli" >> "$fileDesktop"
@ -739,7 +735,7 @@ f_wfx_lanceur_desktop(){ # 26/12/2017
echo "X-MultipleArgs=false" >> "$fileDesktop"
echo "Type=Application" >> "$fileDesktop"
echo "Categories=Network;WebBrowser;" >> "$fileDesktop"
echo "MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/vnd.mozilla.xul+xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;" >> "$fileDesktop"
echo "MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;x-scheme-handler/http;x-scheme-handler/https;" >> "$fileDesktop"
echo "StartupNotify=true" >> "$fileDesktop"
}
@ -821,14 +817,9 @@ f_wfx_pers_upgrade(){ # 23/12/2017
}
# désinstallation
f_wfx_remove(){ # 23/12/2017
f_wfx_remove(){ # 14/01/2018
local fileDesktop="/usr/share/applications/waterfox.desktop" appli="Waterfox"
if [ "$EUID" -ne 0 ]; then
f__info "vous devez être$RED ROOT$BLUE pour désinstaller $appli"
f__sudo "exec $0 r-wfx"
return $?
fi
if [ ! -d "$dirInstallWfx" ]; then
f__info "$BLUE$appli n'est pas installé."
return 1
@ -844,8 +835,8 @@ f_wfx_remove(){ # 23/12/2017
unlink "/usr/share/pixmaps/waterfox.png" &>/dev/null
unlink "/usr/bin/waterfox" &>/dev/null
#finalisation system
update-alternatives --quiet --remove 'x-www-browser' /usr/bin/waterfox &>/dev/null
update-alternatives --quiet --remove 'gnome-www-browser' /usr/bin/waterfox &>/dev/null
update-alternatives --quiet --remove 'x-www-browser' /usr/bin/waterfox # &>/dev/null inutile avec --quiet
update-alternatives --quiet --remove 'gnome-www-browser' /usr/bin/waterfox # &>/dev/null inutile avec --quiet
f__info "log" "$appli désinstallé, mais le profil est toujours en place" \
"le supprimer manuellement si nécessaire, pour cela supprimer le répertoire:" \
@ -916,17 +907,12 @@ fscript_get_version(){ # 03/01/2018
}
# installation du script dans le système
fscript_install(){ # 27/12/2017
fscript_install(){ # 15/01/2018
if grep -q 'bin' <<< "$( dirname $0 )" ; then
f__info "$RED""l'installation dans le système doit se faire depuis un script local $GREEN(./$script -i )"
return 1
fi
if [ "$EUID" -ne 0 ]; then
f__info "vous devez être$RED ROOT$BLUE pour installer ce script dans le système"
f__sudo "exec $0 -i"
return $?
fi
[ "$( type -t fscript_install_special )" ] && fscript_install_special # test, si fonction spécifique, appel
f__requis "wget anacron cron" || exit 1
@ -947,7 +933,7 @@ fscript_install(){ # 27/12/2017
}
# suppression du script dans le système
fscript_remove(){ # 27/12/2017
fscript_remove(){ # 15/01/2018
if ! grep -q 'bin' <<< "$( dirname $0 )" ; then
f__info "$RED""cette fonction doit être appelée depuis le script installé dans le système $GREEN($script -r)"
@ -957,11 +943,6 @@ fscript_remove(){ # 27/12/2017
f__info "$RED$script n'est pas installé"
return 1
fi
if [ "$EUID" -ne 0 ]; then
f__info "vous devez être$RED ROOT$BLUE pour supprimer ce script dans le système"
f__sudo "exec $0 -r"
return $?
fi
[ "$( type -t fscript_remove_special )" ] && fscript_remove_special # test, si fonction spécifique, appel
# suppression de /opt lien /usr/bin
@ -1094,12 +1075,30 @@ chromeWfxr="userChrome.css" # nom du fichier userChrome.css sur un dépôt dista
options=$@
if [ "$( dirname $0 )" == "." ] && [ ! -e "$fileDev" ]; then
options="-i" # script install
# auto-installation script éventuel, si pas de marqueur $fileDev
if [[ $( dirname $0 ) != $( dirname $script_install ) && $( dirname $0 ) != "/usr/bin" && ! -e "$fileDev" ]]; then
options="-i" # option installation script
fi
[ "$options" ] || options="-h"
for j in $options; do
for j in $options; do # première passe options
case $j in
-i | --install | -r | --remove | ri | i-* | m-* | r-* | u-* )
if [ "$EUID" -ne 0 ]; then
f__info "vous devez être$RED ROOT$BLUE pour cette opération"
f__sudo "exec $0 $@"
exit
fi
;;&
--sauve )
dl_to_svg="ok"
;;&
esac
done
options=${options//--sauve/ }
[ "$options" ] || options="-h" # vide? help
for j in $options; do # deuxième passe options, actions
case $j in
version | versions ) # versions en ligne & installées
@ -1109,65 +1108,66 @@ for j in $options; do
f_wfx_get_version
f_wfx_pers_get_version
;;
ri ) # réparation icônes
f_tor_lanceur_desktop
f_wfx_lanceur_desktop
;;
i-tor ) # installation
f_tor_install
exit ;;
m-tor ) # installation manuelle d'une archive, $2 fichier archive
f_tor_install_manuel "$2"
exit ;;
p-tor ) # personnalisation
f_tor_pers_install
exit ;;
pr-tor ) # supression personnalisation
f_tor_pers_remove
exit ;;
r-tor ) # désinstallation
f_tor_remove
exit ;;
s-tor )
f_w_config_system "tor" "/usr/bin/tor-browser" # update alternatives
exit ;;
i-tor )
f_tor_install # installation
;;
m-tor )
f_tor_install_manuel "$2" # installation manuelle d'une archive, $2 fichier archive
;;
p-tor )
f_tor_pers_install # personnalisation
;;
pr-tor )
f_tor_pers_remove # personnalisation remove
;;
r-tor )
f_tor_remove # remove tor
;;
u-tor ) # configurer un profil pour un user
f__info "sans objet, Tor Browser est mono utilisateur"
exit ;;
v-tor ) # version
f__info "sans objet, Tor Browser est mono utilisateur, pas de profil à configurer"
;;
v-tor ) # tor: versions & personnalisations
f_tor_get_version
f_tor_pers_get_version
;;
i-wfx ) # installation
f_wfx_install
exit ;;
m-wfx ) # installation manuelle archive, $2 fichier archive
f_wfx_install_manuel "$2"
exit ;;
p-wfx ) # personnalisation
f_wfx_pers_install
exit ;;
pr-wfx ) # supression personnalisation
f_wfx_pers_remove
exit ;;
u-wfx ) # configurer un profil pour un user
f_wfx_config_profil "menu"
f_w_config_system "wfx" "/usr/bin/waterfox"
###
i-wfx )
f_wfx_install # installation
;;
m-wfx )
f_wfx_install_manuel "$2" # installation manuelle archive, $2 fichier archive
;;
p-wfx )
f_wfx_pers_install # personnalisation
;;
pr-wfx )
f_wfx_pers_remove # personnalisation remove
;;
r-wfx )
f_wfx_remove # remove
;;
u-wfx )
f_wfx_config_profil "menu" # configurer un canal pour user en cours
f_w_config_system "wfx" "/usr/bin/waterfox" # défaut système
echo
exit ;;
r-wfx ) # désinstallation
f_wfx_remove
exit ;;
v-wfx ) # version
;;
v-wfx ) # waterfox: versions & personnalisations
f_wfx_get_version
f_wfx_pers_get_version
;;
###
-i | --install ) # installation du script dans le système
fscript_install
exit ;;
-r | --remove | sysremove ) # désinstallation du script
-r | --remove ) # remove script
fscript_remove
exit ;;
-u | --upgrade | upgrade ) # upgrade script & personnalisations
-u | --upgrade ) # upgrade script & personnalisations
operation="upgrade"
fscript_update
f_tor_pers_upgrade
@ -1178,7 +1178,7 @@ for j in $options; do
;;
-h | --help | * ) # affichage help
f_help
exit ;;
;;
esac
done

View File

@ -1,6 +1,20 @@
# getXfox
*todo
* Default dans profiles.ini à implanter pour le futur?
## getXfox 4.11.0 - 16/01/2018
* nouveau: cumul options (opérations) possibles (sauf opés scripts)
* nouveau: option --sauve pour conserver le téléchargement à l'installation
* révision: ffx_lanceur_desktop, mimetype, plus de xul, pas de déclaration images
* révision; f__wget_test
* révision: f_sudo abandonné dans fscript_install et fscript_remove, au profit appel au traitement général des options
* révision: général, invocation f__sudo dans traitement options, plus confortable si su & _all_
* révision: f_sudo, format nombre de tentatives et options appel possibles > 1
* révision: menu réparation icône pour tous les canaux installés, menu help en conséquence
* révision: auto-installation, potentiel bug selon conditions appel
* fix: test gnome-www-browser avant installation (erreur kde)
## getXfox 4.10.0 - 12/01/2018