This commit is contained in:
kyodev 2017-06-06 20:04:42 +02:00
parent e79a6a58b0
commit 041794eda1
1 changed files with 161 additions and 114 deletions

275
scripts/getFlashPlayer Executable file → Normal file
View File

@ -1,88 +1,61 @@
#!/bin/bash
version="0.5.0"
version="0.6.0"
projet="DFLinux"
contact="https://framagit.org/dflinux/DFiso/issues ou irc.feenode.net##DFLinux"
#####
# licence LPRAB/WTFPL
# auteurs naguam / kyodev
# 06/2017
##### licence LPRAB/WTFPL
# auteur kyodev
# contibuteurs naguam / coyotus / arpinux
# 06/2017
#####
#### 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 ---------------------------------------------------------------
#### entete ============================================================
clear
cat << "EOF"
echo "$BLUE"
cat << 'EOF'
_ _____ _ _ ____ _
__ _ ___| |_| ___| | __ _ ___| |__ | _ \| | __ _ _ _ ___ _ __
/ _' |/ _ \ __| |_ | |/ _' / __| '_ \| |_) | |/ _' | | | |/ _ \ '__|
| (_| | __/ |_| _| | | (_| \__ \ | | | __/| | (_| | |_| | __/ |
\__, |\___|\__|_| |_|\__,_|___/_| |_|_| |_|\__,_|\__, |\___|_|
|___/ |___/
EOF
echo -e " pour Firefox\t\t version $version\n"
echo -e "$YELLOW pour Firefox sur Debian, \t version $version\n$COLOR"
# fonction avertissement -----------------------------------------------
f_avertisement(){
cat << "EOF"
#### fonctions diverses ================================================
FlashPlayer n'est pas libre, c'est un programmme propriétaire dont on ne
peut pas connaître le code source, ni l'utiliser sans conditions, ni le
distribuer librement.
Il souffre de nombreuses vulnérabilités chroniques, depuis de nombreuses années
sans que l'éditeur fasse beaucoup d'efforts pour corriger cet état de fait...
Il sera donc bloqué à plus ou moins court terme pas les navigateurs majeurs,
c'est à dire Firefox et Chrom(ium). Préparez vous à cela...
EOF
# sortie sur erreur
f_error() { # affichage paramètre 1 en rouge pour le premier, les suivants optionnels en bleu
echo -e "\n$RED Erreur critique: $1 $COLOR"
for (( i=2 ; i<=$# ; i++ )); do echo " $BLUE${!i}"; done
echo "$COLOR"
exit 1
}
# arguments-------------------------------------------------------------
# affichage information
f_info() { # tous les paramètres en ligne en couleur bleue, accepte \n, ligne vide à la fin
echo -e " $BLUE $@ $COLOR\n"
}
if [ "$1" == "install" ]; then cmd="install"
elif [ "$1" == "remove" ]; then cmd="remove"
elif [ "$1" == "version" ]; then cmd="version"
else
# pas d'arguments ou mauvais argument, affichage help
cat << "EOF"
------------------------------------------------------------------------
#debian? return 0 else 1
f_debian(){
if [ -f /etc/debian_version ]; then
return 0
else
return 1
fi
}
Pour tous les utilisateurs du système:
getFlashPlayer install: téléchargement et installation FlashPlayer
getFlashPlayer remove : désinstallation FlashPlayer
getFlashPlayer version: récupération version en ligne FlashPlayer
------------------------------------------------------------------------
Ce script doit être exécuté avec les droits administrateur root
uniquement pour l'installation
Il désinstallera le paquet flashplugin-nonfree si présent.
Seul le plugin sera installé, en tant que plugin Mozilla Firefox.
La désinstallation de FlashPlayer ne nécessite pas d'être root, comme
la récupération de la version en ligne.
------------------------------------------------------------------------
EOF
f_avertisement
exit 1
fi
# requis ---------------------------------------------------------------
# debian?
if [ ! -f /etc/debian_version ]; then
echo "Vous n'utilisez pas debian, adieu o/"
exit 1
fi
# fonctions diverses----------------------------------------------------
# root? $oui="oui"
# root? return 0 else 1
f_root(){
if [ $EUID -eq 0 ]; then
return 0
@ -91,14 +64,83 @@ f_root(){
fi
}
# liste des users déclarés dans le système
# liste des users déclarés dans le système, assigne $listeUsers
f_allUsers(){
# valeurs séparées par espace
listeUsers=$(cat /etc/passwd | sed -En 's/^(.*):x:[0-9]{4}.*$/\1/p' | grep -v 'nobody' | tr '\n' ' ')
}
# fonction remove ------------------------------------------------------
f_remove() {
# version Flash en ligne, assign $verFlash, assigne $user_agent , $urlOnline , $verFlash
f_versionFlash(){
user_agent="Mozilla/5.0 (X11; Linux $architecture; rv:45.0) Gecko/20100101 Firefox/52.0"
urlOnline="https://get.adobe.com/flashplayer/"
verFlash=$(wget --no-check-certificate --tries=1 --timeout=15 --user-agent=$user_agent -nv -qO - $urlOnline | \
grep "AUTO_ID_columnleft_p_version" | grep -o '[0-9].*[0-9]')
}
# pas bô ce soft :( ================================================
f_avertissement(){
cat << 'EOF'
FlashPlayer n'est pas libre, c'est un programmme propriétaire dont on
ne peut pas connaître le code source, ni l'utiliser sans conditions,
ni le distribuer librement.
Il souffre de nombreuses vulnérabilités chroniques, depuis des années
sans que l'éditeur fasse beaucoup d'efforts pour corriger cet état
de fait...
Il sera donc bloqué à plus ou moins court terme pas les navigateurs
majeurs, c'est à dire Firefox et Chrom(ium). Préparez vous à cela...
EOF
}
#### traitements arguments =============================================
if [ "$#" -gt 1 ]; then cmd="help" && f_info "$RED trop d'arguments"
elif [ "$1" == "install" ]; then cmd="install"
elif [ "$1" == "remove" ]; then cmd="remove"
elif [ "$1" == "version" ]; then cmd="version"
elif [ "$1" == "test" ]; then cmd="installTest"
else cmd="help"
fi
if [ "$cmd" == "help" ]; then
# HELP si pas d'arguments ou mauvais argument
echo "$BLUE"
cat << 'EOF'
----------------------------------------------------------------------
getFlashPlayer install : téléchargement et installation FlashPlayer
getFlashPlayer remove : désinstallation FlashPlayer
getFlashPlayer version : récupération version en ligne FlashPlayer
getFlashPlayer test : installation version de test alternative
ce script agit sur TOUS les utilisateurs déclarés du système
----------------------------------------------------------------------
EOF
echo $COLOR
cat << 'EOF'
Ce script doit être exécuté avec les droits administrateur root
uniquement pour l'installation.
Il désinstallera le paquet flashplugin-nonfree si présent.
Seul le plugin sera installé, en tant que plugin Mozilla Firefox.
Ce script devrait fonctionner pour Ubuntu
----------------------------------------------------------------------
EOF
f_avertissement
exit 1
fi
#### fonction version en ligne =========================================
if [ "$cmd" == "version" ]; then
f_versionFlash
# fin de script
f_info "Version FlashPlayer en ligne: $verFlash."
exit 0
fi
#### remove, on vire flash =============================================
if [ "$cmd" == "remove" ]; then
# on récupère la liste des users dans $listeUsers
f_allUsers
@ -106,78 +148,83 @@ f_remove() {
for user in $listeUsers; do
rm -f /home/"$user"/.mozilla/plugins/libflashplayer.*
done
}
if [ "$cmd" == "remove" ]; then
f_remove
# on sort du script
echo -e " FlashPlayer est désinstallé.\n"
rm -d /home/"$user"/.mozilla/plugins/
f_info "$GREEN""FlashPlayer est désinstallé pour tous les utlisateurs.\n"
# fin de script
exit 0
fi
# fonction version Flash en ligne --------------------------------------
# assign $verFlash
f_versionFlash(){
user_agent="Mozilla/5.0 (X11; Linux $architecture; rv:45.0) Gecko/20100101 Firefox/52.0"
urlTest="https://get.adobe.com/flashplayer/"
verFlash=$(wget --no-check-certificate --tries=1 --timeout=15 --user-agent=$user_agent -nv -qO - $urlTest | \
grep "AUTO_ID_columnleft_p_version" | grep -o '[0-9].*[0-9]')
}
if [ "$cmd" == "version" ]; then
f_versionFlash
# on sort du script
echo -e " Version FlashPlayer en ligne: $verFlash.\n"
exit 0
fi
#### installation ======================================================
# installation----------------------------------------------------------
# root? sinon dehors
if ! f_root ; then f_error "vous devez être ROOT pour installer"; fi
# root?
if ! f_root; then
# sortie sur test root
echo " Vous devez être root pour installer FlashPlayer"
echo -e " Relancer après 'su' ou avec 'sudo'\n"
exit 1
fi
# debian? sinon dehors / utile? /
if ! f_debian ; then f_error "désolé, vous n'utilisez pas Debian :( adieu o/"; fi
# information soft daube
f_avertisement
f_avertissement
#on récupère la version en ligne
f_versionFlash
# affichage version en ligne pendant l'install version release
if [ "$cmd" == "install" ]; then
f_info "installation FlashPlayer, version $verFlash"
else
f_info "installation FlashPlayer, version alternative de test"
fi
# on vire 'flashplugin-nonfree' si installé
if [ ! dpkg-query -l bash &> /dev/null ]; then
apt-get purge flashplugin-nonfree
fi
if [ ! dpkg-query -l bash &> /dev/null ]; then apt-get purge flashplugin-nonfree; fi
# architecture?
# architecture? & url alternative pour version test
if [ "$(dpkg --print-architecture)" = "amd64" ]; then
architecture='x86_64'
urlTest="https://fpdownload.macromedia.com/pub/labs/flashruntimes/flashplayer/linux64/"
else
architecture='i386'
urlTest="https://fpdownload.macromedia.com/pub/labs/flashruntimes/flashplayer/linux32/"
fi
# variables daube
f_versionFlash
url="https://fpdownload.adobe.com/get/flashplayer/pdc/$verFlash/"
file="flash_player_npapi_linux.$architecture.tar.gz"
# affichage version en ligne si install
if [ "$cmd" == "install" ]; then echo -e " Installation FlashPlayer version $verFlash\n"; fi
# dossier temporaire de travail
fileTemp="/tmp/flash-file/"
mkdir -p "$fileTemp"
# chargement flash
wget --user-agent="$user_agent" -O $fileTemp$file $url$file
# variables daube release
url="https://fpdownload.adobe.com/get/flashplayer/pdc/$verFlash/"
file="flash_player_npapi_linux.$architecture.tar.gz"
# décompression archive téléchargée
# chargement flash / à peaufiner les sorties wget /
if [ "$cmd" == "installTest" ]; then
wget --user-agent="$user_agent" -O $fileTemp$file $urlTest$file &>/dev/null
else
wget --user-agent="$user_agent" -O $fileTemp$file $url$file &>/dev/null
fi
# gestion erreur wget
#1 Generic error code.
#2 Parse error---for instance, when parsing command-line options, the .wgetrc or .netrc...
#3 File I/O error.
#4 Network failure.
#5 SSL verification failure.
#6 Username/password authentication failure.
#7 Protocol errors.
#8 Server issued an error response.
if [ "$?" != "0" ]; then
f_error "problème au chargement, connexion défaillante?" \
"Si persistance, merci de prévenir l'équipe $projet" \
"$contact"
fi
# décompression archive téléchargée dans dossier de travail
tar xaf $fileTemp$file -C $fileTemp
# on récupère la liste des users dans $listeUsers
# on récupère la liste de tous les users dans $listeUsers
f_allUsers
# copie dans la config user mozilla, pour *chaque user déclaré* sur le système
# copie de la biblio dans la config user mozilla, pour *chaque user déclaré* sur le système
for user in $listeUsers; do
mkdir -p /home/"$user"/.mozilla/plugins
cp "$fileTemp"libflashplayer.so /home/"$user"/.mozilla/plugins/
@ -188,6 +235,6 @@ done
rm -Rf "$fileTemp"
# the end
echo -e " FlashPlayer est installé.\n\tPour tester: http://get.adobe.com/flashplayer/about/\n"
f_info "$GREEN""FlashPlayer est installé.\n\t""$BLUE""Pour tester: http://get.adobe.com/flashplayer/about/"
exit 0