From abdd50d5344db419518b4bcbdcb4eb9d2fb51f5e Mon Sep 17 00:00:00 2001 From: kyodev Date: Sat, 10 Jun 2017 01:16:49 +0200 Subject: [PATCH] getFirefox 0.1.0 --- docs/scripts/getFirefox.md | 123 ++++++++++++++++ mkdocs.yml | 1 + scripts/getFirefox | 294 +++++++++++++++++++++++++++++++++++++ 3 files changed, 418 insertions(+) create mode 100644 docs/scripts/getFirefox.md create mode 100755 scripts/getFirefox diff --git a/docs/scripts/getFirefox.md b/docs/scripts/getFirefox.md new file mode 100644 index 0000000..d721cf2 --- /dev/null +++ b/docs/scripts/getFirefox.md @@ -0,0 +1,123 @@ +# getFirefox +**version 0.1.0a** + +## charger le script + +```shell +wget https://framagit.org/kyodev/kyopages/raw/master/scripts/getFirefox +chmod +x getFlasPlayer +``` + +## installation du script +en **root** +```shell +su +./getFirefox +exit +``` + * le script est maintenant dans le système et tout utilisateur peut s'en servir. + * si le paquet `firefox-esr` est présent, il sera **désinstallé**. + * **Fermer Firefox existant** avant installation + * si ce paquet devait être ré-installé, il semble préférable de désinstaller le plugin auparavant. + + +## help +lancer le script sans arguments: `getFirefox` + +`getFirefox` +``` + _ _____ _ __ + __ _ ___| |_| ___(_)_ __ ___ / _| _____ __ + / _' |/ _ \ __| |_ | | '__/ _ \ |_ / _ \ \/ / +| (_| | __/ |_| _| | | | | __/ _| (_) > < + \__, |\___|\__|_| |_|_| \___|_| \___/_/\_\ + |___/ + + Firefox-latest pour Debian, version 0.1.0 - 09/06/2017 + + ----------------------------------------------------------------------- + ./getFirefox : installation du script dans le système + + getFirefox +latest : téléchargement & installation de Firefox-latest + getFirefox version : version en ligne de Firefox-latest + getFirefox : installation de Firefox-esr + getFirefox : installation de Firefox Beta + getFirefox : installation branche Developer Edition de Firefox + getFirefox : installation branche Nightly de Firefox + getFirefox : installation TorBrowser + getFirefox : désinstallation de Firefox + + getFirefox sysremove : désinstall du script du système + ----------------------------------------------------------------------- + Ce script doit être exécuté avec les droits ROOT. + Il désinstallera le paquet firefox-esr si présent. + Ce script devrait fonctionner sur Ubuntu. + ----------------------------------------------------------------------- +``` + + +## installation version _latest_ + +``` +su +getFirefox +latest +exit +``` +``` + _.-~-. + 7'' Q..\ + _7 (_ + _7 _/ _q. / + _7 . ___ /VVvv-'_ . + 7/ / /~- \_\\ '-._ .-' / // + ./ ( /-~-/||'=.__ '::. '-~'' { ___ / // ./{ + V V-~-~| || __''_ ':::. ''~-~.___.-'' _/ // / {_ / { / + VV/-~-~-|/ \ .'__'. '. ':: _ _ _ ''. + / /~~~~||VVV/ / \ ) \ _ __ ___ ___ ___(_) | | __ _ .::' + / (~-~-~\\.-' / \' \::::. | '_ ' _ \ / _ \_ / | | |/ _' | :::' +/..\ /..\__/ ' '::: | | | | | | (_) / /| | | | (_| | ::' +vVVv vVVv ': |_| |_| |_|\___/___|_|_|_|\__,_| '' +``` + * Firefox est installé, en étant directement chargé du site Mozilla. + * c'est la dernière release officielle, qui se met à jour automatiquement. + * mise à jour majeure toutes les 6 semaines environ. + * version 53 en juin 2017. + + +## désinstallation Firefox + +`getFirefox` + + * A venir + +## version en ligne + +`getFirefox version`: affiche la version en ligne de + + * Firefox version latest release + * Firexos version esr + + +## installation version _esr_ + +`getFirefox` + + * A venir + + +## supprimer le script sur le systeme + +en **root**: `getFirefox sysremove` + + +## évolution + + * Firefox version Beta + * Firefox version Developer Edition + * Firefox version Nightly + * Firefox version TorBrowser + + +## sources + +sur [framagit](https://framagit.org/kyodev/kyopages/blob/master/scripts/getFirefox) diff --git a/mkdocs.yml b/mkdocs.yml index be5bbb4..f2a8526 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -22,6 +22,7 @@ pages: - trucs/iso-sur-usb.md - script: - scripts/getFlashPlayer.md + - scripts/getFirefox.md - about: - git: "about/git.md" - mkdocs: "about/mkdocs.md" diff --git a/scripts/getFirefox b/scripts/getFirefox new file mode 100755 index 0000000..61c0a91 --- /dev/null +++ b/scripts/getFirefox @@ -0,0 +1,294 @@ +#!/bin/bash + +version="0.1.0alpha" +projet="A définir" +contact="A venir" +date="09/06/2017" +script="getFirefox" + +##### licence LPRAB/WTFPL +# auteurs: kyodev +# contibuteurs: +##### + +#### définition couleurs ----------------------------------------------- +YELLOW=`printf "\033[0;33m"` # ? + GREEN=`printf "\033[0;32m"` # ok + BLUE=`printf "\033[0;34m"` # info + COLOR=`printf "\033[0m"` # standard + RED=`printf "\033[0;31m"` # alerte + + +#### entete ============================================================ +clear +echo "$BLUE" +cat << 'EOF' + _ _____ _ __ + __ _ ___| |_| ___(_)_ __ ___ / _| _____ __ + / _' |/ _ \ __| |_ | | '__/ _ \ |_ / _ \ \/ / +| (_| | __/ |_| _| | | | | __/ _| (_) > < + \__, |\___|\__|_| |_|_| \___|_| \___/_/\_\ + |___/ + +EOF +echo -e "$YELLOW Firefox-latest pour Debian, version $version - $date\n$COLOR" + + +#### fonctions diverses ================================================ + + # sortie sur erreur +f_error() { # affichage paramètre 1 en rouge pour le premier, les suivants optionnels en bleu, sortie du script + echo -e "\n$RED Erreur critique: $1 $COLOR" + for (( i=2 ; i<=$# ; i++ )); do echo " $BLUE${!i}"; done + echo "$COLOR" + exit 1 +} + + # affichage information +f_info() { # tous les paramètres en ligne en couleur bleue, accepte \n, ligne vide à la fin + echo -e " $BLUE $@ $COLOR\n" +} + + #debian? return 0 else 1 +f_debian(){ + if [ -f /etc/debian_version ]; then return 0; else return 1; fi +} + + # root? return 0 else 1 +f_root(){ + if [ $EUID -eq 0 ]; then return 0; else return 1; fi +} + + # script en /bin? return 0 si bin, 1 si local +f_scriptBin(){ + # echo egrep: "-$(echo $0 | grep -Eo '\.\/')-" + if [ "$(echo $0 | grep -Eo '\.\/')" != "./" ]; then return 0; else return 1; fi +} + + +#### fonctions script ================================================== + + # version Firefox en ligne, $verLatest, $verEsr, $user_agent, $urlOnline, si $1="quiet", pas d'affichage +user_agent="Mozilla/5.0 (X11; Linux $architecture; rv:45.0) Gecko/ Firefox" +f_versionFF(){ + urlOnline="https://www.mozilla.org/en-US/firefox/notes/" + verLatest=$(wget --no-check-certificate --tries=1 --timeout=15 --user-agent=$user_agent -nv -qO - $urlOnline | \ + grep -Eo 'data-latest-firefox="[0-9\.]+"' | grep -Eo '[0-9\.]+') + verEsr=$(wget --no-check-certificate --tries=1 --timeout=15 --user-agent=$user_agent -nv -qO - $urlOnline | \ + grep -Eo 'data-esr-versions="[0-9 \.]+"' | grep -Eo ' [0-9\.]+' | grep -Eo '[0-9\.]+') + if [ "$1" != "quiet" ]; then f_info "Version Firefox en ligne: $verLatest\n Version esr: $verEsr"; fi +} + + # ascii art godzilla +f_godzilla(){ +cat << 'EOF' + _.-~-. + 7'' Q..\ + _7 (_ + _7 _/ _q. / + _7 . ___ /VVvv-'_ . + 7/ / /~- \_\\ '-._ .-' / // + ./ ( /-~-/||'=.__ '::. '-~'' { ___ / // ./{ + V V-~-~| || __''_ ':::. ''~-~.___.-'' _/ // / {_ / { / + VV/-~-~-|/ \ .'__'. '. ':: _ _ _ ''. + / /~~~~||VVV/ / \ ) \ _ __ ___ ___ ___(_) | | __ _ .::' + / (~-~-~\\.-' / \' \::::. | '_ ' _ \ / _ \_ / | | |/ _' | :::' +/..\ /..\__/ ' '::: | | | | | | (_) / /| | | | (_| | ::' +vVVv vVVv ': |_| |_| |_|\___/___|_|_|_|\__,_| '' + +EOF +} + + # affichage help +f_help(){ + printf $BLUE +cat << 'EOF' + ----------------------------------------------------------------------- + ./getFirefox : installation du script dans le système + + getFirefox +latest : téléchargement & installation de Firefox-latest + getFirefox version : version en ligne de Firefox-latest + getFirefox : installation de Firefox-esr + getFirefox : installation de Firefox Beta + getFirefox : installation branche Developer Edition de Firefox + getFirefox : installation branche Nightly de Firefox + getFirefox : installation TorBrowser + getFirefox : désinstallation de Firefox + + getFirefox sysremove : désinstall du script du système +EOF + printf $COLOR +cat << 'EOF' + ----------------------------------------------------------------------- + Ce script doit être exécuté avec les droits ROOT. + Il désinstallera le paquet firefox-esr si présent. + Ce script devrait fonctionner sur Ubuntu. + ----------------------------------------------------------------------- + +EOF + printf $COLOR +} + + # install du script dans le système +f_sysinstall(){ + if ! f_root ; then f_error "vous devez être ROOT pour installer ce script dans le système"; fi + + # installation dans /opt + mkdir -p /opt/bin/ + cp -d "$0" /opt/bin/ + ln -s /opt/bin/$script /usr/local/bin/$script &>/dev/null + rm "$0" &>/dev/null + f_info "$GREEN$script est installé dans le système.\n$BLUE appel du script par$GREEN $script$BLUE (sans ./)" + exit 0 +} + + # suppression du script dans le système +f_sysremove(){ + if ! f_root ; then f_error "vous devez être ROOT pour supprimer ce script dans le système"; fi + # suppression de /opt + rm /opt/bin/"$script" &>/dev/null + unlink /usr/local/bin/"$script" &>/dev/null + f_info "$GREEN$script est supprimé du système.\n" +} + + + # install firefox +f_install(){ + if ! f_root ; then f_error "vous devez être ROOT pour installer Firefox en tant que ROOT"; fi + # debian? sinon dehors / utile? / + if ! f_debian ; then f_error "désolé, vous n'utilisez pas Debian :( adieu o/"; fi + + printf $RED + f_godzilla + printf $COLOR + + # on vire 'firefox-esr' si installé + if [ "$( dpkg-query -l firefox-esr | grep -Eo ^ii)" == "ii" ]; then apt-get remove firefox-esr; fi + + f_versionFF "quiet" + # architecture > $architecture (version release) + if [ "$(dpkg --print-architecture)" = "amd64" ]; then architecture='linux64'; else architecture='linux'; fi + + # calcul $file, $url, affichage version pendant l'install + file="firefox-$product.$architecture.tar.bz2" + if [ "$product" == "esr" ]; then + f_info "installation Firefox-esr, version $verEsr" + url="https://download.mozilla.org/?product=firefox-esr-latest&os=$architecture&lang=fr" + elif [ "$product" == "latest" ]; then + f_info "installation Firefox-latest, version $verLatest" + url="https://download.mozilla.org/?product=firefox-latest&os=$architecture&lang=fr" + else f_error "branche firefox inconnue"; fi + + # dossier temporaire de travail, création $dirTemp + dirTemp="/tmp/$script/" + mkdir -p "$dirTemp" + + # chargement + f_info "téléchargement..." + wget --user-agent="$user_agent" -O "$dirTemp$file" "$url" + + # gestion erreur wget / à peaufiner? / + if [ "$?" != "0" ]; then + f_error "problème au chargement, connexion défaillante?" \ + "Si persistance, merci de prévenir $projet" \ + "$contact" + fi + + # décompression archive + f_info "décompression...." + tar -xaf "$dirTemp$file" -C "$dirTemp" + + f_info "installation...." + # install lanceur +f_lanceur(){ +rm -f /usr/share/applications/firefox-"$product".desktop +cat << "EOF" >> /usr/share/applications/firefox-"$product".desktop +#!/usr/bin/env xdg-open +[Desktop Entry] +EOF +echo -e "Name=Firefox $product\nName[fr]=Firefox $product" >> /usr/share/applications/firefox-latest.desktop +echo -e "X-GNOME-FullName=Firefox-$product Web Browser\nX-GNOME-FullName[fr]=Firefox-$product Navigateur Web" >> /usr/share/applications/firefox-latest.desktop +echo -e "StartupWMClass=Firefox-$product" >> /usr/share/applications/firefox-latest.desktop +echo -e "Exec=/opt/firefox-$product/firefox %u" >> /usr/share/applications/firefox-latest.desktop +echo -e "Icon=/opt/firefox-$product/browser/icons/mozicon128.png" >> /usr/share/applications/firefox-latest.desktop +cat << "EOF" >> /usr/share/applications/firefox-latest.desktop +Comment=Browse the World Wide Web +Comment[fr]=Naviguer sur Internet +GenericName=Web Browser +GenericName[fr]=Navigateur Web +Terminal=false +X-MultipleArgs=false +Type=Application +Categories=Network;WebBrowser; +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; +StartupNotify=true +EOF +} + f_lanceur + + # on déplace le répertoire firefox en /opt + rm -rf /opt/firefox-"$product"/ + mkdir -p /opt/firefox-"$product"/ + mv -f "$dirTemp"firefox/* /opt/firefox-"$product"/ +# mv /opt/firefox-"$product"/* "$dirTemp"firefox/ + + # lien pixmap + ln -sf /opt/firefox-"$product"/browser/chrome/icons/default/default48.png /usr/share/pixmaps/firefox-"$product".png + +# # liens /usr/bin inutile? +# ln -sf /opt/firefox/firefox-"$product" /usr/bin/firefox + + # alternatives + update-alternatives --quiet --install /usr/bin/firefox-"$product" x-www-browser /opt/firefox-"$product"/firefox 100 +# update-alternatives --quiet --install /usr/bin/firefox-"$product" gnome-www-browser /opt/firefox-"$product"/firefox 100 +# update-alternatives: erreur: le lien alternatif /usr/bin/firefox-latest est déjà géré par x-www-browser + + #ménage + rm -rf "$dirTemp" + + # the end + f_info "$GREEN""Firefox-$product est installé.\n" +} + + # suppression de firefox +f_remove(){ +return + if f_root ; then f_error "vous ne pouvez pas désinstaller le plugin en tant que ROOT"; fi + # on efface le plugin et le répertoire si vide + rm -f "/home/$USER/.mozilla/plugins/"libflashplayer.* + rm -d "/home/$USER/.mozilla/plugins/" &>/dev/null + f_info "$GREEN""FlashPlayer est désinstallé.\n" +} + + +#### traitements arguments ============================================= + +if [ "$#" -gt 1 ]; then cmd="help" && f_info "$RED trop d'arguments" +elif [ "$1" == "+latest" ]; then cmd="install"; product='latest' +elif [ "$1" == "remove" ]; then cmd="remove" +elif [ "$1" == "version" ]; then cmd="version" +elif [ "$1" == "+esr" ]; then cmd="install"; product='esr' +elif [ "$1" == "sysremove" ]; then cmd="sysremove" +else cmd="help" +fi + + +#### installation script si pas dans le système ======================== +if ! f_scriptBin ; then f_sysinstall; fi + +#### help ============================================================== +if [ "$cmd" == "help" ]; then f_help; fi + +#### système remove ==================================================== +if [ "$cmd" == "sysremove" ]; then f_sysremove; fi + +#### fonction version en ligne ========================================= +if [ "$cmd" == "version" ]; then f_versionFF; fi + +#### remove, on vire flash ============================================= +if [ "$cmd" == "remove" ]; then f_remove; fi + +#### installation ====================================================== +if [ "$cmd" == "install" ]; then f_install; fi + +exit 0