kyopages/scripts/getFlashPlayer

443 lines
18 KiB
Plaintext
Raw Normal View History

2017-06-06 02:43:07 +02:00
#!/bin/bash
2017-08-24 01:58:43 +02:00
version=3.2.2
date="24/08/2017"
2017-08-16 11:42:46 +02:00
projet="simpledeb"
2017-07-19 16:58:08 +02:00
contact="IRC freenode ##sdeb ou https://framagit.org/kyodev/kyopages/issues"
2017-06-10 00:21:43 +02:00
script="getFlashPlayer"
2017-07-13 01:13:52 +02:00
urlScript="https://framagit.org/kyodev/kyopages/raw/master/scripts/getFlashPlayer"
2017-07-18 21:45:59 +02:00
urlNotice="https://kyodev.frama.io/kyopages/scripts/getFlashPlayer/"
2017-08-17 12:09:14 +02:00
user_agent="Mozilla/5.0 Firefox"
2017-08-18 20:16:14 +02:00
lognameDev="kyodev"
2017-07-13 01:13:52 +02:00
2017-06-10 21:16:48 +02:00
##### license LPRAB/WTFPL
2017-08-16 11:42:46 +02:00
# auteur: simpledeb
2017-07-25 00:27:27 +02:00
# contributeurs: kyodev, coyotus, naguam
2017-06-06 02:43:07 +02:00
#####
2017-08-19 09:29:58 +02:00
f__affichage(){ # v06/2017 définition couleurs
2017-07-27 23:26:40 +02:00
YELLOW="$(printf "\033[0;33m")" # ?
GREEN="$(printf "\033[0;32m")" # ok
BLUE="$(printf "\033[0;34m")" # info
RED="$(printf "\033[0;31m")" # alerte
COLOR="$(printf "\033[0m")" # standard
2017-06-06 02:43:07 +02:00
2017-07-27 23:26:40 +02:00
clear
printf "$BLUE"
2017-06-06 20:04:42 +02:00
cat << 'EOF'
2017-06-06 02:43:07 +02:00
_ _____ _ _ ____ _
__ _ ___| |_| ___| | __ _ ___| |__ | _ \| | __ _ _ _ ___ _ __
/ _' |/ _ \ __| |_ | |/ _' / __| '_ \| |_) | |/ _' | | | |/ _ \ '__|
| (_| | __/ |_| _| | | (_| \__ \ | | | __/| | (_| | |_| | __/ |
\__, |\___|\__|_| |_|\__,_|___/_| |_|_| |_|\__,_|\__, |\___|_|
|___/ |___/
EOF
2017-07-25 00:27:27 +02:00
echo -e "$YELLOW pour Firefox, version $version - $date$COLOR\n"
2017-07-27 23:26:40 +02:00
}
2017-06-06 02:43:07 +02:00
2017-08-16 11:42:46 +02:00
# test validité archive, $1 fichier (gzip), return 1 si invalide
2017-08-17 09:16:13 +02:00
f__archive_test(){ # v07/2017
2017-08-16 11:42:46 +02:00
file -b "$1" | grep -q 'gzip compressed data' || return 1
2017-07-28 20:18:25 +02:00
}
2017-07-25 00:27:27 +02:00
# affichage $1 en rouge, $1++ optionnels en bleu, sortie script sur erreur, log $1 si upgrade($opType)
2017-08-17 09:16:13 +02:00
f__error() { # v16/08/2017
2017-08-16 19:31:27 +02:00
echo -e "\n$RED Erreur critique: $1 $COLOR"
for (( i=2 ; i<=$# ; i++ )); do echo -e " $BLUE${!i}"; done
2017-06-06 20:04:42 +02:00
echo "$COLOR"
2017-07-28 20:18:25 +02:00
if [ "$opType" == "upgrade" ]; then f__log "$script $version: $1"; fi
2017-06-06 20:04:42 +02:00
exit 1
2017-06-06 02:43:07 +02:00
}
2017-08-16 19:31:27 +02:00
# affichage des paramètres en bleu, si $1=raw, pas d'espace en début de ligne, pas de ligne vide à la fin
2017-08-21 19:04:11 +02:00
# si $1=log, uniquement $2 logué
f__info() { # v21/08/2017
if [ "$1" == "raw" ] || [ "$1" == "log" ]; then depart=2;
2017-08-16 11:42:46 +02:00
else local espace=" "; local depart=1; fi
2017-08-21 19:04:11 +02:00
[ "$1" == "log" ] && f__log "$(sed -E 's/\\t//;s/\\n// ' <<< $2 | xargs )"
2017-08-16 11:42:46 +02:00
for (( i=$depart ; i<=$# ; i++ )); do echo -e "$espace$BLUE${!i}"; done
2017-08-16 19:31:27 +02:00
[ "$1" == raw ] && printf "$COLOR" || echo "$COLOR"
2017-06-21 20:15:27 +02:00
}
2017-08-16 11:42:46 +02:00
# log spécifique, fichier log limité à 10000octets, $1 message à loguer
2017-08-17 07:59:24 +02:00
f__log(){ # v08/2017
2017-08-16 11:42:46 +02:00
if [ -w "$fileLogs" ]; then
if [ "$(stat -c %s $fileLogs)" -ge "10000" ]; then
echo "$(date +%Y%m%d\ %H%M%S) $1" &>/dev/null > "$fileLogs"
else
echo "$(date +%Y%m%d\ %H%M%S) $1" &>/dev/null >> "$fileLogs"
fi
2017-08-17 07:59:24 +02:00
else
f__info "$fileLogs doit être activé"
2017-08-16 11:42:46 +02:00
fi
}
2017-08-16 19:31:27 +02:00
# test dépendances/paquets, $1 liste commande[>paquet] (ex: killall>psmisc)
2017-08-18 20:16:14 +02:00
# si manque, SORTIE & info commandes manquantes, si debian, SORTIE & proposition paquet à installer
2017-08-16 19:31:27 +02:00
# si $2=debOnly et si paquets manquants: return 1 et $debOnlyPackages ( $1=liste paquets )
# si $2=debOnly et si paquets présent: return 0 et $debOnlyPresents ( $1=liste paquets )
# attention priorité $debOnlyPackages sur $debOnlyPresents
2017-08-17 12:09:14 +02:00
f__requis(){ # v17/08/2017-3
2017-08-16 11:42:46 +02:00
local dependsMissing packagesMissing
2017-08-16 19:31:27 +02:00
unset debOnlyPackages debOnlyPresents
2017-08-16 11:42:46 +02:00
for i in $1; do
2017-08-17 12:09:14 +02:00
local command="$(cut -d '>' -f 1 <<< $i)"
local package="$(cut -d '>' -f 2 <<< $i)"
2017-08-16 19:31:27 +02:00
if [ "$2" == "debOnly" ]; then
if [ "$(which dpkg)" ]; then # package only et debian
LC_ALL=C dpkg --get-selections | grep -qE "^$package[[:space:]]+install" \
&& debOnlyPresents+="$package " || debOnlyPackages+="$package "
else f__error "dpkg n'est pas disponible sur ce système"; fi
elif [ -z "$(which $command)" ]; then
2017-08-16 11:42:46 +02:00
dependsMissing+="$command "
packagesMissing+="$package "
2017-07-17 13:38:04 +02:00
fi
done
2017-08-17 12:09:14 +02:00
[ "$debOnlyPackages" ] && debOnlyPackages="$(xargs <<< $debOnlyPackages)" # trim début & fin
[ "$debOnlyPresents" ] && debOnlyPresents="$(xargs <<< $debOnlyPresents)" # trim début & fin
2017-08-16 19:31:27 +02:00
[ "$debOnlyPackages" ] && return 1
[ "$debOnlyPresents" ] && return 0
2017-08-16 11:42:46 +02:00
if [ "$dependsMissing" ]; then
if [ -e /etc/debian_version ]; then f__error "paquet(s) manquant(s): " " $dependsMissing" \
" vous devriez exécuter:$GREEN apt install $packagesMissing"
else f__error "commandes(s) manquante(s): " "$dependsMissing"; fi
fi
2017-07-17 13:38:04 +02:00
}
2017-08-21 19:04:11 +02:00
# user ayant initié la session graphique, assigne $user_
# return 1 sur échec identification user, return 2 sur absence home/
2017-08-16 11:42:46 +02:00
# gestion variable environnement user avec: USER_INSTALL=user script
2017-08-21 19:04:11 +02:00
f__user(){ # v21/08/2017-4
if [ "$USER_INSTALL" ]; then # user_ via variable environnement, moyen d'injecter root
user_="$USER_INSTALL";
return 0
2017-08-16 11:42:46 +02:00
fi
2017-08-21 19:04:11 +02:00
local user_id test
local root_login="$(grep ':0:' /etc/passwd | cut -d':' -f1)" || local root_login="root"
if [ "$SUDO_UID" ]; then
user_id="$SUDO_UID";
elif grep -qEo '[0-9]+' <<< "$XDG_RUNTIME_DIR" ; then
user_id="$(grep -Eo '[0-9]+' <<< $XDG_RUNTIME_DIR | cut -d'/' -f4)"
elif grep -qEo '[0-9]+' <<< "$XAUTHORITY" ; then
user_id="$(grep -Eo '[0-9]+' <<< $XAUTHORITY | cut -d'/' -f4)"
2017-08-16 11:42:46 +02:00
fi
2017-08-21 19:04:11 +02:00
[ "$user_id" ] && user_="$(grep $user_id /etc/passwd | cut -d ":" -f 1 )"
if [ "$user_" ] && [ "$user_" != "$root_login" ]; then
return 0
else
if [ "$SUDO_USER" ] && [ "$SUDO_USER" != "$root_login" ]; then
user_="$SUDO_USER";
elif grep -qv 'root' <<< "$(who)"; then
user_="$(grep -v 'root' <<< $(who) | head -n1 | cut -d ' ' -f1)";
elif grep -q 'hourly.*get[A-Z].*\.anacrontab.*\.config/anacron/spool' /etc/crontab; then
user_="$(grep 'hourly.*get[A-Z].*\.anacrontab.*\.config/anacron/spool' /etc/crontab | head -n1 | cut -d' ' -f2)";
fi
2017-08-16 11:42:46 +02:00
fi
2017-08-21 19:04:11 +02:00
if [ -z "$user_" ]; then return 1; fi
if [ ! -d "/home/$user_" ]; then return 2; fi
return 0
2017-06-06 20:04:42 +02:00
}
2017-06-06 02:43:07 +02:00
2017-07-26 13:15:00 +02:00
# test wget, $1 url à tester, sortie script sur erreur
2017-08-17 09:16:13 +02:00
f__wget_test(){ # v07/2017
2017-07-13 11:32:01 +02:00
echo " $1"
2017-07-17 13:38:04 +02:00
wget -Sq --tries=1 --timeout=15 --user-agent="$user_agent" -O /dev/null "$1"
f__error "Erreur wget" " réessayer et si persistance, contacter $projet $contact" " en indiquant les messages précédents."
2017-07-13 11:32:01 +02:00
}
2017-06-08 14:09:19 +02:00
2017-08-19 09:29:58 +02:00
# spécifique getFlashPlayer
fscript_cronAnacron_special(){ # v19/08/2017
rm "/home/$user_/.mozilla/plugins/libflashplayer.anacrontab" &>/dev/null # ancienne localisation
rm "/home/$user_/.config/anacron/spool/getFP"* &>/dev/null # ancien job
2017-08-18 20:30:28 +02:00
[ $EUID -eq 0 ] && sed -i "/libflashplayer.anacrontab/d" /etc/crontab # ancienne localisation anacrontab
2017-08-19 09:29:58 +02:00
}
# inscription dans tache upgrade en anacron hebdomadaire, via cron horaire
2017-08-23 02:47:51 +02:00
fscript_cronAnacron(){ # v23/08/2017
2017-08-20 10:13:39 +02:00
[ "$(type -t fscript_cronAnacron_special)" ] && fscript_cronAnacron_special # test, si fonction spécifique, appel
2017-08-16 11:42:46 +02:00
local dirAnacron="/home/$user_/.config/anacron"
local dirSpool="$dirAnacron/spool"
local fileAnacron="$dirAnacron/$script.anacrontab"
2017-08-18 20:16:14 +02:00
[ $EUID -eq 0 ] && sed -i "/$script.anacrontab/d" /etc/crontab
2017-08-16 11:42:46 +02:00
case "$1" in
2017-08-17 09:16:13 +02:00
install | upgrade )
2017-08-16 11:42:46 +02:00
mkdir -p "$dirAnacron"
# table anacron
2017-08-23 02:47:51 +02:00
echo "7 10 $script nice /opt/bin/$script --upgrade 1>/dev/null" > "$fileAnacron" # juste erreurs en syslog
2017-08-19 09:29:58 +02:00
## anacron journalier pour dev logname
if [ "$user_" == "$lognameDev" ]; then
2017-08-23 02:47:51 +02:00
echo "1 00 $script""Dev nice /opt/bin/$script --upgrade 1>/dev/null" >> "$fileAnacron" # juste erreurs en syslog
2017-08-19 09:29:58 +02:00
fi
2017-08-16 11:42:46 +02:00
# création spool anacron utilisateur
mkdir -p "$dirSpool"
chown -R "$user_": "$dirAnacron" "$dirSpool"
2017-08-17 09:16:13 +02:00
if [ $EUID -eq 0 ]; then
# crontab pour activation horaire anacron
echo "@hourly $user_ /usr/sbin/anacron -t $fileAnacron -S $dirSpool" >> /etc/crontab
fi
2017-08-17 08:02:52 +02:00
[ "$(grep "$script" /etc/crontab)" ] || echo f__error "inscription crontab" \
2017-08-17 07:59:24 +02:00
"certains systèmes semblent poser poser problème, merci de rapporter ce bug à $projet $contact"
2017-08-16 11:42:46 +02:00
;;
remove )
rm "$dirSpool/$script"* &>/dev/null
rm "$fileAnacron" &>/dev/null
rmdir "$dirSpool" "$dirAnacron" &>/dev/null
;;
2017-08-18 20:16:14 +02:00
esac
2017-08-16 11:42:46 +02:00
}
# mise à jour script si dispo
2017-08-22 09:42:39 +02:00
fscript_dl(){ # v22/08/2017
2017-08-18 20:16:14 +02:00
f__requis "wget"
2017-08-21 19:04:11 +02:00
if [ "$script_aJour" == "ok" ]; then
2017-08-22 09:42:39 +02:00
f__info "log" "pas de mise à jour disponible pour $script"
2017-08-21 19:04:11 +02:00
return 0
fi
2017-08-16 11:42:46 +02:00
local dirTemp="/tmp/$script-$RANDOM/"
mkdir -p "$dirTemp"
2017-08-19 09:29:58 +02:00
wget -q --tries=2 --timeout=15 -O "$dirTemp$script" "$urlScript"
2017-08-16 11:42:46 +02:00
if [ "$?" != "0" ]; then f__wget_test "$urlScript"; fi
chmod 755 "$dirTemp$script"
chown "$user_": "$dirTemp$script"
cp -d "$dirTemp$script" /opt/bin/"$script"
rm -rf "$dirTemp"
2017-08-17 09:16:13 +02:00
fscript_cronAnacron "upgrade"
2017-08-21 19:04:11 +02:00
f__info "log" "\n $script mis à jour en version $versionScript"
2017-08-16 11:42:46 +02:00
}
2017-08-18 20:16:14 +02:00
# version script en ligne, assigne $versionScript, $script_aJour=ok|ko
2017-08-19 09:29:58 +02:00
fscript_get_version(){ # v19/08/2017
2017-08-18 20:16:14 +02:00
f__requis "wget"
2017-08-19 09:29:58 +02:00
f__info "$GREEN""\n version script en cours: $version"
2017-08-16 11:42:46 +02:00
versionScript="$(wget -q --tries=2 --timeout=15 -O - "$urlScript" | grep '^version=' | cut -d '=' -f 2)"
if [ "$versionScript" ]; then
if [ "$version" != "$versionScript" ]; then
f__info "version script en ligne: $versionScript, mise à jour possible"
script_aJour="ko"
else
f__info "version script en ligne: $versionScript"
script_aJour="ok"
fi
else f__info "version script en ligne non accessible"; fi
2017-07-13 17:08:36 +02:00
}
2017-08-18 20:16:14 +02:00
# installation du script dans le système
2017-08-21 19:04:11 +02:00
fscript_install(){ # v21/08/2017
2017-08-18 20:16:14 +02:00
if dirname "$0" | grep -q 'bin' ; then
2017-08-19 09:29:58 +02:00
f__info "\n $script $version est déjà installé"
2017-08-18 20:16:14 +02:00
return 1
2017-08-16 19:31:27 +02:00
fi
[ $EUID -eq 0 ] || f__error "vous devez être ROOT pour installer ce script dans le système"
2017-08-18 20:16:14 +02:00
f__requis "wget anacron cron"
2017-07-27 23:26:40 +02:00
# install /opt
mkdir -p /opt/bin/
cp -d "$(basename $0)" "/opt/bin/$script"
2017-08-16 11:42:46 +02:00
ln -s "/opt/bin/$script" "/usr/bin/$script" &>/dev/null
chmod 755 "/opt/bin/$script"
2017-07-27 23:26:40 +02:00
# cron/anacron install
2017-08-16 11:42:46 +02:00
fscript_cronAnacron "install"
2017-07-28 20:18:25 +02:00
# création fichier log
2017-07-30 16:32:22 +02:00
touch "$fileLogs"
2017-08-16 11:42:46 +02:00
chmod 644 "$fileLogs"
chown "$user_": "$fileLogs" "/opt/bin/$script"
2017-07-14 18:40:49 +02:00
[ -f "$script"_changelog.md ] || rm "$(basename $0)" &>/dev/null ## on efface pas si changelog (dev)
2017-08-21 19:04:11 +02:00
f__info "log" "$script $version installé dans le système." "maintenant, appel du script par:$GREEN $script$BLUE (sans ./)"
2017-07-13 11:32:01 +02:00
}
# suppression du script dans le système
2017-08-21 19:04:11 +02:00
fscript_remove(){ # v21/08/2017
2017-08-16 11:42:46 +02:00
[ $EUID -eq 0 ] || f__error "vous devez être ROOT pour supprimer ce script dans le système"
2017-07-13 11:32:01 +02:00
# suppression de /opt
rm /opt/bin/"$script" &>/dev/null
2017-07-28 20:18:25 +02:00
unlink /usr/bin/"$script" &>/dev/null
2017-07-18 16:47:33 +02:00
# cron/anacron remove
2017-08-16 11:42:46 +02:00
fscript_cronAnacron "remove"
2017-08-21 19:04:11 +02:00
f__info "log" "$script $version supprimé du système."
2017-07-13 11:32:01 +02:00
}
2017-08-16 11:42:46 +02:00
# pas beau ce soft :(
fflash_avertissement(){
cat << 'EOF'
FlashPlayer n'est pas libre, c'est un programme 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 cela...
Il sera bloqué plus ou moins bloqué à terme pas les navigateurs majeurs,
c'est à dire Firefox et Chrom(ium). Préparez vous à cela...
EOF
echo -e " voir:$GREEN https://developer.mozilla.org/fr/docs/Plugins/Roadmap$COLOR\n"
2017-07-13 11:32:01 +02:00
}
2017-08-16 11:42:46 +02:00
# version Flash en ligne & installée, si $1="quiet" pas d'affichage, $verFlash=x.y, $plugin_aJour=ko
2017-07-26 13:15:00 +02:00
fflash_get_version(){
2017-07-17 13:38:04 +02:00
verFlash="$(wget -q --tries=2 --timeout=15 --user-agent="$user_agent" -O - "$urlOnline" | \
sed -nr 's/^.*AUTO_ID.*Version[[:blank:]]+([0-9].*[0-9]).*$/\1/p')" || verFlash="na"
2017-07-26 13:15:00 +02:00
if [ "$?" != "0" ]; then f__wget_test "$urlOnline"; fi # sortie script si erreur wget
2017-07-17 03:14:54 +02:00
if [ $verFlash == "na" ]; then f__error "version FlashPlayer non accessible";
2017-07-28 20:18:25 +02:00
else [ "$1" == "quiet" ] || f__info "version FlashPlayer en ligne: $verFlash"; fi
2017-08-16 11:42:46 +02:00
if [ ! -e "$dirInstall/libflashplayer.so" ]; then
2017-07-26 13:15:00 +02:00
f__info "FlashPlayer non installé"
2017-08-16 11:42:46 +02:00
return 0
fi
# détection version du plugin installé
local verInstall="$(strings $dirInstall/libflashplayer.so | grep -Eo '[0-9]+_[0-9]+_[0-9]+_[0-9]+' | sed 's/_/./g')"
if [ "$verInstall" == "$verFlash" ]; then
2017-07-28 20:18:25 +02:00
[ "$1" == "quiet" ] || f__info "FlashPlayer à jour"
2017-07-13 11:32:01 +02:00
else
2017-07-25 00:27:27 +02:00
plugin_aJour="ko"
2017-07-28 20:18:25 +02:00
[ "$1" == "quiet" ] || f__info "version FlashPlayer installée: $verInstall, mise à jour possible"
2017-07-13 11:32:01 +02:00
fi
2017-06-06 20:04:42 +02:00
}
2017-06-06 02:43:07 +02:00
2017-06-08 14:09:19 +02:00
# affichage help
2017-07-13 11:32:01 +02:00
fflash_help(){
2017-07-23 00:41:57 +02:00
printf "$BLUE"
2017-06-06 20:04:42 +02:00
cat << 'EOF'
2017-06-07 03:12:35 +02:00
-----------------------------------------------------------------------
2017-08-16 11:42:46 +02:00
getFlashPlayer install : téléchargement & installation de FlashPlashplayer
2017-06-07 03:12:35 +02:00
getFlashPlayer remove : désinstallation de FlashPlayer
2017-08-16 23:55:56 +02:00
getFlashPlayer version : version en ligne de FlashPlayer et du script
2017-08-16 11:42:46 +02:00
getFlashPlayer upgrade : mise à jour plugin si disponible
2017-06-10 21:16:48 +02:00
----
2017-07-23 00:41:57 +02:00
getFlashPlayer manuel fichier.tar.gz : installation d'une archive manuellement
2017-07-13 17:08:36 +02:00
----
2017-08-16 11:42:46 +02:00
./getFlashPlayer : installation du script dans le système
getFlashPlayer -h, --help : affichage aide
getFlashPlayer -r, --remove, sysremove : désinstallation du script du système
getFlashPlayer -u, --upgrade : mise à jour script & plugin, cron hebdomadaire
2017-08-16 23:55:56 +02:00
getFlashPlayer -v, --version : versions du script
2017-06-06 20:04:42 +02:00
EOF
2017-07-23 00:41:57 +02:00
printf "$COLOR"
cat << 'EOF'
2017-06-08 14:09:19 +02:00
-----------------------------------------------------------------------
Ce script doit être exécuté avec les droits root uniquement pour
2017-07-17 13:38:04 +02:00
l'installation et la suppression du script dans le système.
2017-08-16 11:42:46 +02:00
Il désinstallera le paquet flashplugin-nonfree si présent (debian).
SEUL le plugin sera installé comme plugin Firefox.
2017-06-07 03:12:35 +02:00
-----------------------------------------------------------------------
2017-06-06 20:04:42 +02:00
EOF
2017-08-16 23:55:56 +02:00
echo -e " plus d'infos:$GREEN https://kyodev.frama.io/kyopages/scripts/getFlashPlayer/$COLOR\n"
2017-06-08 14:09:19 +02:00
}
2017-06-06 02:43:07 +02:00
2017-07-26 13:15:00 +02:00
# install plugin dans config user mozilla, $1 manuel (install manuelle), $2 script à installer si install manuelle
2017-07-13 11:32:01 +02:00
fflash_install(){
2017-07-26 13:15:00 +02:00
[ "$opType" == "upgrade" ] || fflash_avertissement
2017-07-17 03:14:54 +02:00
if [ "$1" == "manuel" ]; then
2017-08-20 03:11:59 +02:00
f__info "installation manuelle de $2"
2017-07-26 13:15:00 +02:00
local dirTemp="$(dirname $2)/$script-$RANDOM/"
2017-08-20 03:11:59 +02:00
local fileTemp="$(basename $2)"
2017-07-13 17:08:36 +02:00
mkdir -p "$dirTemp"
else
2017-08-20 03:11:59 +02:00
[ -z $verFlash ] && fflash_get_version "quiet"
2017-07-28 20:18:25 +02:00
f__info "installation FlashPlayer, version $verFlash"
2017-08-20 03:11:59 +02:00
local dirTemp="/tmp/$script-$RANDOM/"
local fileTemp="$dirTemp""flash_player_npapi_linux.$(getconf LONG_BIT).tar.gz"
2017-07-13 17:08:36 +02:00
mkdir -p "$dirTemp"
2017-07-17 13:38:04 +02:00
# détection/chargement/test archive plugin flashplayer
2017-08-20 03:11:59 +02:00
f__info " - téléchargement..."
2017-07-19 16:58:08 +02:00
fflash_recup_url_v1
2017-08-20 03:11:59 +02:00
wget -q -c --show-progress --tries=1 --timeout=15 --user-agent="$user_agent" --referer="$urlOnline" -O "$fileTemp" "$recup_url"
2017-07-25 00:27:27 +02:00
if [ "$?" != "0" ]; then f__wget_test "$recup_url"; fi
2017-08-20 03:11:59 +02:00
f__archive_test "$fileTemp" || f__error " Le fichier $fileTemp n'est pas une archive tar.gz valide"
2017-06-08 14:09:19 +02:00
fi
# décompression archive téléchargée dans dossier de travail
2017-08-20 03:11:59 +02:00
f__info " - décompression..."
tar -xaf "$fileTemp" -C "$dirTemp"
2017-07-17 03:14:54 +02:00
if [ "$1" == "manuel" ]; then verFlash="$(strings $dirTemp/libflashplayer.so | grep -Eo '[0-9]+_[0-9]+_[0-9]+_[0-9]+' | sed 's/_/./g')"; fi
2017-07-25 00:27:27 +02:00
# copie de la bibliothèque flash dans plugins/ user mozilla, effacement répertoire temporaire
mkdir -p "$dirInstall"
cp -f "$dirTemp"libflashplayer.so "$dirInstall/"
2017-06-10 00:21:43 +02:00
rm -Rf "$dirTemp"
2017-07-17 03:14:54 +02:00
# droits user si jamais installation par root
2017-07-25 00:27:27 +02:00
chown -R "$user_": "$dirInstall"
2017-08-21 19:04:11 +02:00
f__info "log" "FlashPlayer $verFlash installé pour $user_" "\tPour tester: http://get.adobe.com/flashplayer/about/"
2017-07-13 11:32:01 +02:00
}
2017-08-16 11:42:46 +02:00
# installation du plugin chargé manuellement, $1
fflash_install_manuel(){
2017-08-20 03:11:59 +02:00
[ -e "$1" ] || f__error "fichier plugin $1 introuvable"
f__archive_test "$1" || f__error "Le fichier $1 n'est pas une archive valide"
2017-08-16 11:42:46 +02:00
fflash_install "manuel" "$1"
2017-08-20 03:11:59 +02:00
[ "$user_" != "$lognameDev" ] && rm "$1" &>/dev/null # si user pas dev, effacement archive
2017-08-16 11:42:46 +02:00
}
# calcul url téléchargement plugin, assigne $recup_url,
fflash_recup_url_v1(){
local recup1="https://fpdownload.adobe.com/get/flashplayer/pdc/"
if [ "$(uname -m)" == "i686" ] || [ "$(uname -m)" == "i386" ]; then local recup2='i386';
elif [ "$(uname -m)" == "x86_64" ] || [ "$(uname -m)" == "amd64" ]; then local recup2='x86_64';
else f__error "architecture non reconnue" ; fi
recup_url="$recup1$verFlash/flash_player_npapi_linux.$recup2.tar.gz"
2017-06-08 14:09:19 +02:00
}
2017-06-06 02:43:07 +02:00
2017-06-21 20:15:27 +02:00
# suppression du plugin
2017-07-13 11:32:01 +02:00
fflash_remove(){
2017-07-26 13:15:00 +02:00
[ -e /home/kyodev/.mozilla/plugins/libflashplayer.so ] || f__error "FlashPlayer inexistant pour $user_\n"
2017-07-30 16:32:22 +02:00
local verInstall="$(strings $dirInstall/libflashplayer.so | grep -Eo '[0-9]+_[0-9]+_[0-9]+_[0-9]+' | sed 's/_/./g')"
rm "$dirInstall/libflashplayer.so"
rm "$dirInstall/libflashplayer.maj" &>/dev/null # ancien fichier éventuel
rm "$dirInstall/libflashplayer.version" &>/dev/null # ancien fichier éventuel
2017-08-21 19:04:11 +02:00
f__info "log" "FlashPlayer $verInstall désinstallé pour $user_"
2017-07-13 01:13:52 +02:00
}
2017-06-10 21:16:48 +02:00
2017-08-16 11:42:46 +02:00
# test et mise à jour plugin si plugin outdated
2017-08-24 01:58:43 +02:00
fflash_upgrade(){ #24/08/2017
2017-08-16 23:55:56 +02:00
fflash_get_version
2017-08-16 11:42:46 +02:00
if [ "$plugin_aJour" == "ko" ]; then
opType="upgrade"
fflash_install
2017-08-24 01:58:43 +02:00
else f__info "log" "pas de plugin Flash à mettre à jour"; fi
2017-08-16 11:42:46 +02:00
}
2017-06-21 20:15:27 +02:00
#initialisation
2017-08-22 01:53:43 +02:00
PATH='/usr/sbin:/usr/bin:/sbin:/bin' ; IFS=' '; TERM=xterm
export PATH TERM
2017-07-27 23:26:40 +02:00
f__affichage
2017-08-16 11:42:46 +02:00
f__user || f__error "échec détection user"
2017-08-18 20:16:14 +02:00
f__requis "file tar" # pour fonctionnement programme
2017-07-30 16:32:22 +02:00
2017-08-16 11:42:46 +02:00
fileLogs="/var/log/sdeb_$script.log"
dirInstall="/home/$user_/.mozilla/plugins"
2017-07-26 13:15:00 +02:00
urlOnline="https://get.adobe.com/fr/flashplayer/" # test version & referer
2017-06-06 02:43:07 +02:00
2017-08-16 19:43:54 +02:00
[ -e "/opt/bin/$script" ] && [ "$(stat -c %G /opt/bin/$script)" == "root" ] && problemDetected+="-1" # droits inappropriés sur le script, version de dev
2017-08-16 11:42:46 +02:00
options="$@"
if [ "$(dirname $0)" == "." ]; then unset options
elif ! grep -qE '\-u|\-\-upgrade' <<< "$options"; then
if [ ! -w "$fileLogs" ] && [ -e "$dirInstall/libflashplayer.so" ] ; then problemDetected+="-2"; fi # ancien système de logs via syslog
fi
[ "$problemDetected" ] && f__info "$RED""l'installation du script est obsolète ($problemDetected)" \
" veuillez réinstaller le script manuellement" "$GREEN voir $urlNotice""#installation-rapide-du-script"
2017-08-20 03:11:59 +02:00
for i in $options; do
2017-08-16 11:42:46 +02:00
case "$i" in
2017-08-20 03:11:59 +02:00
install ) fflash_install; break ;; # installation plugin
manuel ) fflash_install_manuel "$2"; break ;; # installation manuelle d'un chargement
remove ) fflash_remove; break ;; # désinstallation plugin
upgrade ) fflash_upgrade; break ;; # upgrade plugin si installé
2017-08-16 23:55:56 +02:00
version | versions )
fflash_get_version
2017-08-20 03:11:59 +02:00
fscript_get_version; break ;; # version plugin en ligne & installée
"" ) if ! dirname "$0" | grep -q 'bin' ; then
2017-08-16 23:55:56 +02:00
fscript_install
2017-08-20 03:11:59 +02:00
else fflash_help; fi ;; # installation du script dans le système
-r | --remove | sysremove ) fscript_remove; break ;; # désinstallation du script
-u | --upgrade )
2017-08-18 20:16:14 +02:00
opType="upgrade"
2017-08-16 11:42:46 +02:00
fscript_get_version
fscript_dl
2017-08-20 10:13:39 +02:00
$0 upgrade # si script mis à jour, on relance le script en upgrade pour le plugin
break ;; # upgrade script et plugin
2017-08-20 03:11:59 +02:00
-v | --version ) fscript_get_version; break ;; # version du script, en ligne et exécuté
-h | --help | * )
2017-08-16 11:42:46 +02:00
fflash_help
2017-08-20 03:11:59 +02:00
fflash_avertissement; break ;; # affichage help
2017-08-16 11:42:46 +02:00
esac
done
2017-06-10 21:16:48 +02:00
2017-06-06 02:43:07 +02:00
exit 0
2017-08-16 11:42:46 +02:00
wget -O getFlashPlayer https://framagit.org/kyodev/kyopages/raw/master/scripts/getFlashPlayer
chmod +x getFlashPlayer && ./getFlashPlayer