This commit is contained in:
kyodev 2017-07-25 00:27:27 +02:00
parent 4e6eb67bb4
commit e5db1d420d
3 changed files with 88 additions and 85 deletions

View File

@ -1,9 +1,8 @@
# getFlashPlayer
> c'est un script bash qui se charge de charger et d'installer le plugin FlashPlayer pour Firefox,
pour l'utilisateur en cours
> c'est un script bash qui télécharge et installe le plugin FlashPlayer pour Firefox, pour l'utilisateur en cours
> le script se met à jour et gère les mises à jour de FlashPlayer par une tâches planifiée hebdomadaire
> le script se met à jour et gère les mises à jour de FlashPlayer par une tâche planifiée hebdomadaire
> le script installe le plugin FlashPlayer pour l'user en cours
@ -25,16 +24,15 @@ chmod +x getFlashPlayer && ./getFlashPlayer
| (_| | __/ |_| _| | | (_| \__ \ | | | __/| | (_| | |_| | __/ |
\__, |\___|\__|_| |_|\__,_|___/_| |_|_| |_|\__,_|\__, |\___|_|
|___/ |___/
pour Firefox sur Debian, version 2.4.0 - 17/07/2017
pour Firefox, version 2.6.5 - 24/07/2017
getFlashPlayer installé dans le système.
maintenant, appel du script par: getFlashPlayer (sans ./)
```
* le script est maintenant dans le système (_/opt/bin/getFlashPlayer_ avec un lien
(_/usr/local/bin/getFlashPlayer_) et tout utilisateur peut s'en servir.
**le plugin n'est pas encore installé**
* le script est maintenant dans le système et tout utilisateur peut s'en servir.
* **le plugin n'est pas encore installé**
* le script est inscrit dans la crontab utilisateur, une mise à jour du plugin et du script sera faite
[périodiquement](#tache-planifiee) si disponible (pas de téléchargement d'archive en aveugle).
* si le paquet `flashplugin-nonfree` est présent, il sera **désinstallé**.
@ -70,7 +68,7 @@ lancer le script sans arguments: `getFlashPlayer` ou avec l'option help `getFlas
| (_| | __/ |_| _| | | (_| \__ \ | | | __/| | (_| | |_| | __/ |
\__, |\___|\__|_| |_|\__,_|___/_| |_|_| |_|\__,_|\__, |\___|_|
|___/ |___/
pour Firefox sur Debian, version 2.6.4 - 19/07/2017
pour Firefox, version 2.6.5 - 24/07/2017
-----------------------------------------------------------------------
./getFlashPlayer : installation du script dans le système, en ROOT
@ -113,8 +111,7 @@ voir: https://developer.mozilla.org/fr/docs/Plugins/Roadmap
| (_| | __/ |_| _| | | (_| \__ \ | | | __/| | (_| | |_| | __/ |
\__, |\___|\__|_| |_|\__,_|___/_| |_|_| |_|\__,_|\__, |\___|_|
|___/ |___/
pour Firefox sur Debian, version 2.4.0 - 17/07/2017
pour Firefox, version 2.6.5 - 24/07/2017
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,
@ -135,6 +132,7 @@ voir: https://developer.mozilla.org/fr/docs/Plugins/Roadmap
FlashPlayer 26.0.0.137 installé ou mis à jour pour kyodev
Pour tester: http://get.adobe.com/flashplayer/about/
```
* FlashPlayer est installé, en étant directement chargé du site Adobe
@ -162,8 +160,7 @@ voir: https://developer.mozilla.org/fr/docs/Plugins/Roadmap
| (_| | __/ |_| _| | | (_| \__ \ | | | __/| | (_| | |_| | __/ |
\__, |\___|\__|_| |_|\__,_|___/_| |_|_| |_|\__,_|\__, |\___|_|
|___/ |___/
pour Firefox sur Debian, version 2.4.0 - 17/07/2017
pour Firefox, version 2.6.5 - 24/07/2017
installation manuelle flash_player_npapi_linux.i386.tar.gz
@ -180,6 +177,7 @@ voir: https://developer.mozilla.org/fr/docs/Plugins/Roadmap
FlashPlayer 26.0.0.137 installé ou mis à jour pour kyodev
Pour tester: http://get.adobe.com/flashplayer/about/
```
@ -193,14 +191,14 @@ voir: https://developer.mozilla.org/fr/docs/Plugins/Roadmap
| (_| | __/ |_| _| | | (_| \__ \ | | | __/| | (_| | |_| | __/ |
\__, |\___|\__|_| |_|\__,_|___/_| |_|_| |_|\__,_|\__, |\___|_|
|___/ |___/
pour Firefox sur Debian, version 2.4.0b7 - 17/07/2017
pour Firefox, version 2.6.5b1 - 24/07/2017
version FlashPlayer en ligne: 26.0.0.137
FlashPlayer à jour
version script en ligne: 2.3.1, mise à jour possible
version script en ligne: 2.6.5, mise à jour possible
```
* affiche la version en ligne de FlashPlayer
@ -218,10 +216,10 @@ voir: https://developer.mozilla.org/fr/docs/Plugins/Roadmap
| (_| | __/ |_| _| | | (_| \__ \ | | | __/| | (_| | |_| | __/ |
\__, |\___|\__|_| |_|\__,_|___/_| |_|_| |_|\__,_|\__, |\___|_|
|___/ |___/
pour Firefox sur Debian, version 2.4.0 - 17/07/2017
pour Firefox, version 2.6.5 - 24/07/2017
FlashPlayer 26.0.0.137 désinstallé pour kyodev
```
* le plugin est effacé du profil Mozilla de l'utilisateur
@ -239,8 +237,7 @@ voir: https://developer.mozilla.org/fr/docs/Plugins/Roadmap
| (_| | __/ |_| _| | | (_| \__ \ | | | __/| | (_| | |_| | __/ |
\__, |\___|\__|_| |_|\__,_|___/_| |_|_| |_|\__,_|\__, |\___|_|
|___/ |___/
pour Firefox sur Debian, version 2.4.0 - 17/07/2017
pour Firefox, version 2.6.5 - 24/07/2017
version FlashPlayer en ligne: 26.0.0.137
@ -252,16 +249,17 @@ voir: https://developer.mozilla.org/fr/docs/Plugins/Roadmap
FlashPlayer 26.0.0.137 installé ou mis à jour pour kyodev
Pour tester: http://get.adobe.com/flashplayer/about/
```
* test toutes les **semaines**
* mise à jour du **script** si une nouvelle version est disponible en ligne
* mise à jour du **plugin** si une nouvelle version est disponible en ligne
* mise à jour du **plugin** si une nouvelle version est disponible en ligne **et** le plugin installé
* le script se mettra à jour même si le plugin n'est pas installé
* pas de nouvelle version: pas de téléchargement
* à la différence de [_getFlashPlayer install_](#installation-plugin) un téléchargement et
une installation **ne sont pas forcés**.
* cette tâche est exécutée périodiquement par cron/anachron et n'a pas vraiment
d'utilité à être lancée manuellement
* cette tâche est exécutée périodiquement par cron/anachron et n'a pas vraiment vocation à être lancée manuellement
* _anacron_ est utilisé, c'est à dire que la mise à jour sera testée, même lors d'arrêts du Pc
@ -299,10 +297,10 @@ en **root**:
| (_| | __/ |_| _| | | (_| \__ \ | | | __/| | (_| | |_| | __/ |
\__, |\___|\__|_| |_|\__,_|___/_| |_|_| |_|\__,_|\__, |\___|_|
|___/ |___/
pour Firefox sur Debian, version 2.4.0 - 17/07/2017
pour Firefox, version 2.6.5 - 24/07/2017
getFlashPlayer supprimé du système.
```
* effacement du script dans le système (_/opt/bin_)

View File

@ -1,8 +1,8 @@
#!/bin/bash
version=2.6.4
date="19/07/2017"
projet="Kyodev"
version=2.6.5
date="24/07/2017"
projet="simpledebian"
contact="IRC freenode ##sdeb ou https://framagit.org/kyodev/kyopages/issues"
script="getFlashPlayer"
urlScript="https://framagit.org/kyodev/kyopages/raw/master/scripts/getFlashPlayer"
@ -10,9 +10,8 @@ urlNotice="https://kyodev.frama.io/kyopages/scripts/getFlashPlayer/"
user_agent="Mozilla/5.0 (X11; Linux $(uname -m); rv:54.0) Gecko/20100101 Firefox/54.0"
##### license LPRAB/WTFPL
# auteurs: kyodev
# contibuteur: coyotus, naguam
# idée: naguam
# auteur: simpledebian
# contributeurs: kyodev, coyotus, naguam
#####
PATH='/bin:/usr/bin' ; IFS=' '
@ -35,7 +34,7 @@ cat << 'EOF'
\__, |\___|\__|_| |_|\__,_|___/_| |_|_| |_|\__,_|\__, |\___|_|
|___/ |___/
EOF
echo -e "$YELLOW pour Firefox sur Debian, version $version - $date$COLOR\n"
echo -e "$YELLOW pour Firefox, version $version - $date$COLOR\n"
# user ayant initié la session graphique, assigne $user_
# sortie script sur erreur, gestion variable environnement pour personnaliser l'user avec:
@ -62,8 +61,8 @@ f__cnxTest(){
wget -q --tries=1 --timeout=15 --user-agent="$user_agent" -O /dev/null "free.fr" || return 1
}
# sortie sur erreur, log $1 si upgrade
f__error() { #affichage $1 en rouge, $1++ optionnels en bleu, sortie du script, log $1 si upgrade
# affichage $1 en rouge, $1++ optionnels en bleu, sortie script sur erreur, log $1 si upgrade($opType)
f__error() {
echo -e "\n$RED Erreur critique: $1 $COLOR"
for (( i=2 ; i<=$# ; i++ )); do echo -e " $BLUE${!i}"; done
echo "$COLOR"
@ -71,8 +70,8 @@ f__error() { #affichage $1 en rouge, $1++ optionnels en bleu, sortie du script,
exit 1
}
# affichage information, log $1 si upgrade
f__info() { # tous les paramètres en ligne en couleur bleue, accepte \n, ligne vide à la fin
# affichage des paramètres en bleu, ligne vide à la fin, syslog $1 si upgrade
f__info() {
for (( i=1 ; i<=$# ; i++ )); do echo -e " $BLUE${!i}"; done
echo "$COLOR"
if [ "$opType" == "upgrade" ]; then logger --id -p user.info "$1"; fi
@ -80,7 +79,7 @@ f__info() { # tous les paramètres en ligne en couleur bleue, accepte \n, ligne
#test dépendances (commandes disponibles), $1 liste commandes
f__requis(){
for i in "$@"; do
for i in $@; do
if [ ! "$(which $i)" ]; then
testDepends="ko"
f__info "$RED vous devez avoir la commande $i pour exploiter ce script"
@ -94,22 +93,22 @@ f__root(){
if [ $EUID == 0 ]; then return 0; else return 1; fi
}
# test wget, $1 url à tester, retourne url testée & entêtes
f__testWget(){
# test wget, $1 url à tester, sortie sur erreur
f__wget_test(){
echo " $1"
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."
}
# test validité archive, $1 fichier (gzip), return 1 si invalide
f__testArchive(){
file -b "$1" | grep 'gzip compressed data' &>/dev/null && archive_detect="gzip" || return 1
f__archive_test(){
file -b "$1" | grep 'gzip compressed data' &>/dev/null || return 1
}
# install du script dans le système
fscript_install(){
# si script inexistant ou inaccessible en écriture, ou si cronAnacron non installé: root requis
if [ ! -w "/opt/bin/$script" ] || [ ! -e "/home/$user_/.mozilla/plugins/libflashplayer.anacrontab" ]; then
if [ ! -w "/opt/bin/$script" ] || [ ! -e "$dirInstall/libflashplayer.anacrontab" ]; then
f__root || f__error "vous devez être ROOT pour installer ce script dans le système"
if [ "$(which dpkg)" ]; then
# on vire 'flashplugin-nonfree' si installé et dpkg possible (debian)
@ -117,7 +116,7 @@ fscript_install(){
fi
# install /opt
mkdir -p /opt/bin/
ln -s /opt/bin/"$script" /usr/local/bin/"$script" &>/dev/null
ln -s /opt/bin/"$script" /usr/bin/"$script" &>/dev/null
cp -d "$(basename $0)" "/opt/bin/$script"
chmod a+rwx "/opt/bin/$script"
chown "$user_": "/opt/bin/$script"
@ -138,28 +137,28 @@ fscript_remove(){
f__root || f__error "vous devez être ROOT pour supprimer ce script dans le système"
# suppression de /opt
rm /opt/bin/"$script" &>/dev/null
unlink /usr/local/bin/"$script" &>/dev/null
unlink /usr/bin/"$script" &>/dev/null || unlink /usr/local/bin/"$script" &>/dev/null
# cron/anacron remove
fscript_cronAnacron remove
f__info "$GREEN$script supprimé du système."
}
# version script en ligne, assigne $versionScript, $uptd_script=""|ko,
# version script en ligne, assigne $versionScript, $script_aJour=ok|ko,
fscript_version(){
versionScript="$(wget -q --tries=2 --timeout=15 --user-agent="$user_agent" -O - "$urlScript" | grep '^version=' | cut -d '=' -f 2)"
if [ "$version" != "$versionScript" ]; then
f__info "version script en ligne: $versionScript, mise à jour possible"
uptd_script="ko"
else uptd_script=""; fi
script_aJour="ko"
else script_aJour="ok"; fi
}
# mise à jour script si dispo
fscript_dl(){
if [ "$uptd_script" != "ko" ]; then return 0; fi
if [ "$script_aJour" == "ok" ]; then return 0; fi
dirTemp="/tmp/$script-$RANDOM/"
mkdir -p "$dirTemp"
wget -q --show-progress --tries=1 --timeout=15 --user-agent="$user_agent" -O "$dirTemp$script" "$urlScript"
if [ "$?" != "0" ]; then f__testWget "$urlScript"; fi
if [ "$?" != "0" ]; then f__wget_test "$urlScript"; fi
chmod a+rwx "$dirTemp$script"
chown "$user_": "$dirTemp$script"
cp -d "$dirTemp$script" /opt/bin/"$script"
@ -169,52 +168,52 @@ fscript_dl(){
exit 0
}
#inscription dans tache upgrade en cron hebdomadaire, une partie requiert root
# inscription dans tache upgrade en anacron hebdomadaire, via cron horaire
fscript_cronAnacron(){
case "$1" in
"install" )
# création répertoire plugin/
mkdir -p "/home/$user_/.mozilla/plugins"
chown "$user_": "/home/$user_/.mozilla/plugins"
mkdir -p "$dirInstall"
chown "$user_": "$dirInstall"
# table anacron
echo "7 15 getFP nice /opt/bin/$script upgrade &>/dev/null" > "/home/$user_/.mozilla/plugins/libflashplayer.anacrontab"
## test: anacron journalier: echo "1 05 getFPtest nice /opt/bin/$script upgrade &>/dev/null" >> "/home/$user_/.mozilla/plugins/libflashplayer.anacrontab"
chown "$user_": "/home/$user_/.mozilla/plugins/libflashplayer.anacrontab"
echo "7 15 getFP nice /opt/bin/$script upgrade &>/dev/null" > "$dirInstall/libflashplayer.anacrontab"
## test: anacron journalier: echo "1 05 getFPtest nice /opt/bin/$script upgrade &>/dev/null" >> "$dirInstall/libflashplayer.anacrontab"
chown "$user_": "$dirInstall/libflashplayer.anacrontab"
# création spool anacron utilisateur
mkdir -p "/home/$user_/.config/anacron/spool"
chown "$user_": "/home/$user_/.config/anacron/spool"
# cron tab pour activation horaire anacron
echo "@hourly $user_ /usr/sbin/anacron -t /home/$user_/.mozilla/plugins/libflashplayer.anacrontab -S /home/$user_/.config/anacron/spool" >> /etc/crontab
echo "@hourly $user_ /usr/sbin/anacron -t $dirInstall/libflashplayer.anacrontab -S /home/$user_/.config/anacron/spool" >> /etc/crontab
;;
"remove" )
[ -e "/home/$user_/.config/anacron/spool/getFP" ] && rm "/home/$user_/.config/anacron/spool/getFP"
sed -i "/^\@hourly.*libflashplayer.anacrontab.*$/d" /etc/crontab
rm "/home/$user_/.mozilla/plugins/libflashplayer.anacrontab"
rm "$dirInstall/libflashplayer.anacrontab"
;;
esac
}
# version Flash en ligne & installée, $verFlash=x|na, $verInstall, $uptd_plug=""|ko, $urlOnline,
# version Flash en ligne & installée, $verFlash=x.y|na, $verInstall, $plugin_aJour=ok|ko, $urlOnline,
fflash_version(){
urlOnline="https://get.adobe.com/fr/flashplayer/"
if ! f__cnxTest; then f__error "pas de connexion internet"; fi
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"
if [ "$?" != "0" ]; then f__testWget "$urlOnline"; fi
if [ "$?" != "0" ]; then f__wget_test "$urlOnline"; fi
verInstall="$(cat /home/"$user_"/.mozilla/plugins/libflashplayer.version 2>/dev/null)"
uptd_plug=""
plugin_aJour="ok"
if [ $verFlash == "na" ]; then f__error "version FlashPlayer non accessible";
else f__info "version FlashPlayer en ligne: $verFlash"; fi
if [ "$verInstall" == "" ]; then f__info "FlashPlayer non installé"; return 0; fi
if [ "$verInstall" == "$verFlash" ]; then f__info "FlashPlayer à jour";
else
f__info "version FlashPlayer installée: $verInstall, mise à jour possible"
uptd_plug="ko"
plugin_aJour="ko"
fi
}
# pas beau ce soft :(
fflash_avert(){
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,
@ -267,14 +266,14 @@ fflash_recup_url_v1(){
# installation du plugin chargé manuellement, $1
fflash_install_manuel(){
if [ ! -e "$1" ]; then f__error "fichier plugin $1 introuvable"; fi
f__testArchive "$1" || f__error "Le fichier $1 n'est pas une archive tar.gz valide"
f__archive_test "$1" || f__error "Le fichier $1 n'est pas une archive tar.gz valide"
f__info "installation manuelle $1"
fflash_install "manuel" "$1"
}
# install plugin dans config user mozilla, $1 manuel (install manuelle), # $2 script à installer si install manuelle
fflash_install(){
if [ "$opType" != "upgrade" ]; then fflash_avert; fi
if [ "$opType" != "upgrade" ]; then fflash_avertissement; fi
if [ "$1" == "manuel" ]; then
file="$(basename $2)"
dirTemp="$(dirname $2)/$script-$RANDOM/"
@ -292,52 +291,53 @@ fflash_install(){
# détection/chargement/test archive plugin flashplayer
fflash_recup_url_v1
wget -q -c --show-progress --tries=1 --timeout=15 --user-agent="$user_agent" --referer="$urlOnline" -O "$dirTemp$file" "$recup_url"
if [ "$?" != "0" ]; then f__testWget "$recup_url"; fi
f__testArchive "$dirTemp$file" || f__error " Le fichier $dirTemp$file n'est pas une archive tar.gz valide"
if [ "$?" != "0" ]; then f__wget_test "$recup_url"; fi
f__archive_test "$dirTemp$file" || f__error " Le fichier $dirTemp$file n'est pas une archive tar.gz valide"
fi
# décompression archive téléchargée dans dossier de travail
if [ -e "$file" ]; then tar -xaf "$file" -C "$dirTemp"; else tar -xaf "$dirTemp$file" -C "$dirTemp"; fi
if [ "$1" == "manuel" ]; then verFlash="$(strings $dirTemp/libflashplayer.so | grep -Eo '[0-9]+_[0-9]+_[0-9]+_[0-9]+' | sed 's/_/./g')"; fi
# copie de la bibliothèque flash dans plugins/ user mozilla, effacement dir temporaire
mkdir -p "/home/$user_/.mozilla/plugins/"
cp -f "$dirTemp"libflashplayer.so "/home/$user_/.mozilla/plugins/"
# copie de la bibliothèque flash dans plugins/ user mozilla, effacement répertoire temporaire
mkdir -p "$dirInstall"
cp -f "$dirTemp"libflashplayer.so "$dirInstall/"
rm -Rf "$dirTemp"
# marqueur version et maj dans plugins/ user mozilla
echo "$verFlash" > "/home/$user_/.mozilla/plugins/libflashplayer.version"
touch "/home/$user_/.mozilla/plugins/libflashplayer.maj"
echo "$verFlash" > "$dirInstall/libflashplayer.version"
touch "$dirInstall/libflashplayer.maj"
# droits user si jamais installation par root
chown -R "$user_": "/home/$user_/.mozilla/plugins"
chown -R "$user_": "$dirInstall"
echo ""; f__info "FlashPlayer $verFlash installé ou mis à jour pour $user_" "\tPour tester: http://get.adobe.com/flashplayer/about/"
}
# test et mise à jour plugin si plugin outdated
fflash_upgrade(){
if [ "$uptd_plug" == "ko" ]; then fflash_install; fi
if [ "$plugin_aJour" == "ko" ]; then fflash_install; fi
}
# suppression du plugin
fflash_remove(){
# on efface le plugin, mais la tache anacron le sera par script remove
[ -e /home/kyodev/.mozilla/plugins/libflashplayer.so ] || f__error "FlashPlayer déjà désinstallé pour $user_\n"
verFlashRemove="$(strings /home/$user_/.mozilla/plugins/libflashplayer.so | grep -Eo '[0-9]+_[0-9]+_[0-9]+_[0-9]+' | sed 's/_/./g')"
rm -f "/home/$user_/.mozilla/plugins/libflashplayer.maj"
rm -f "/home/$user_/.mozilla/plugins/libflashplayer.so"
rm -f "/home/$user_/.mozilla/plugins/libflashplayer.version"
verFlashRemove="$(strings $dirInstall/libflashplayer.so | grep -Eo '[0-9]+_[0-9]+_[0-9]+_[0-9]+' | sed 's/_/./g')"
rm -f "$dirInstall/libflashplayer.maj"
rm -f "$dirInstall/libflashplayer.so"
rm -f "$dirInstall/libflashplayer.version"
f__info "$GREEN FlashPlayer $verFlashRemove désinstallé pour $user_"
}
#initialisation
f__user
verFlash="na"
f__requis "wget" "logger" "file" "tar"
f__requis "wget logger file tar"
dirInstall="/home/$user_/.mozilla/plugins"
[ -e "$dirInstall/libflashplayer.so" ] && flash_installed="ok" || flash_installed="ko"
# installation du script si pas dans le système
# installation du script si appel pas fait depuis le système
dirname "$0" | grep 'bin' &>/dev/null || fscript_install
# détection droits inappropriés sur le script
[ "$1" != "sysremove" ] && [ -e "/opt/bin/$script" ] && ls -l "/opt/bin/$script" | grep 'root' &>/dev/null && f__error "bug sécu 01" \
@ -357,13 +357,14 @@ case "$1" in
opType="upgrade"
fscript_version
fscript_dl
[ "$flash_installed" == "ko" ] && exit 0
fflash_version
fflash_upgrade ;; # upgrade plugin et script si MAJs possibles
fflash_upgrade ;; # upgrade script et plugin si installé
"manuel" )
fflash_install_manuel "$2" ;; # install manuelle d'un chargement
* )
fflash_help
fflash_avert ;; # affichage help par défaut
fflash_avertissement ;; # affichage help par défaut
esac
exit 0

View File

@ -1,11 +1,15 @@
# changelog getFlashPlayer
## 2.6.4 23/07/2017
## tofo
* cosmétique
* script en stand-by
## 2.6.3 19/07/2017
## 2.6.3-2.6.5 24/07/2017
* séparation mise à jour script et plugin, le script peut être en stand-by, se mettre à jour, sans
plugin installé
* replacement lien script dans /usr/bin/
* cosmétique
## 2.6.2 18/07/2017