This commit is contained in:
kyodev 2017-12-28 08:31:34 +01:00
parent d309a05f67
commit 4b7885b1db
2 changed files with 246 additions and 223 deletions

View File

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
version=3.21.0 version=4.0.0
date="18/12/2017" date="27/12/2017"
projet="simpledeb" projet="simpledeb"
contact="IRC freenode ##sdeb ou https://framagit.org/kyodev/kyopages/issues/" contact="IRC freenode ##sdeb ou https://framagit.org/kyodev/kyopages/issues/"
script="getFlashPlayer" script="getFlashPlayer"
@ -11,31 +11,39 @@ script="getFlashPlayer"
# contributeurs: kyodev, coyotus, naguam # contributeurs: kyodev, coyotus, naguam
##### #####
f_affichage(){ # 5/12/2017 # détecte architecture système, assign $fu_archi: i386|x86_64
f__color # return 1 on unknown architecture
clear # remarque, debian: dpkg --print-architecture affiche i386
echo -n "$BLUE" f__architecture(){ # 14/12/2017 SPECIFIQUE
cat << 'EOF'
_ _____ _ _ ____ _ x_architecture=1
__ _ ___| |_| ___| | __ _ ___| |__ | _ \| | __ _ _ _ ___ _ __ case "$(uname -m)" in
/ _' |/ _ \ __| |_ | |/ _' / __| '_ \| |_) | |/ _' | | | |/ _ \ '__| amd64 | x86_64 )
| (_| | __/ |_| _| | | (_| \__ \ | | | __/| | (_| | |_| | __/ | fu_archi="x86_64";;
\__, |\___|\__|_| |_|\__,_|___/_| |_|_| |_|\__,_|\__, |\___|_| i?86 | x86 )
|___/ |___/ fu_archi="i386";;
EOF * )
echo -e "$YELLOW pour Firefox, version $version - $date$STD\n" case "$(getconf LONG_BIT)" in
64 )
fu_archi="x86_64";;
32 )
fu_archi="i386";;
*)
return 1
esac ;;
esac
} }
# test validité archive, $1 archive, assigne $archive_detect (gzip|xz|deb|zip), return 1 si inconnue # test validité archive, $1 archive, assigne $archive_detect (gzip|xz|deb|zip), return 1 si inconnue
f__archive_test(){ # 30/08/2017 f__archive_test(){ # 19/12/2017
local filetest="$(file -b $1)" local filetest=$( file -b $1 )
grep -q 'gzip compressed data' <<< "$filetest" && archive_detect="gzip" grep -q 'gzip compressed data' <<< "$filetest" && archive_detect="gzip"
grep -q 'bzip2 compressed data' <<< "$filetest" && archive_detect="bzip2" grep -q 'bzip2 compressed data' <<< "$filetest" && archive_detect="bzip2"
grep -q 'Debian binary package' <<< "$filetest" && archive_detect="deb" grep -q 'Debian binary package' <<< "$filetest" && archive_detect="deb"
grep -q 'Zip archive data' <<< "$filetest" && archive_detect="zip" grep -q 'Zip archive data' <<< "$filetest" && archive_detect="zip"
grep -q 'XZ compressed data' <<< "$filetest" && archive_detect="xz" grep -q 'XZ compressed data' <<< "$filetest" && archive_detect="xz"
if [ ! "$archive_detect" ] || [ "$archive_detect" == "empty" ]; then return 1; fi [[ -z "$archive_detect" || "$archive_detect" == "empty" ]] && return 1 || return 0 # laisser return 0 final sinon erreur, toujours return 1?!!
} }
f__color(){ # 08/10/2017 f__color(){ # 08/10/2017
@ -51,8 +59,8 @@ f__color(){ # 08/10/2017
SOUL=$(tput smul) SOUL=$(tput smul)
} }
# affichage $1 en rouge, $1++ optionnels en bleu, sortie script sur erreur, log $1 si $opType=upgrade # affichage $1 en rouge, $1++ optionnels en bleu, sortie script sur erreur, log $1 si $operation=upgrade
f__error(){ # 4/12/2017 f__error(){ # 18/12/2017
local depart=1 i local depart=1 i
echo -e "\n$RED $script $version, erreur critique: $1 $STD" echo -e "\n$RED $script $version, erreur critique: $1 $STD"
@ -60,29 +68,30 @@ f__error(){ # 4/12/2017
echo -e " $BLUE${!i}$STD" echo -e " $BLUE${!i}$STD"
done done
echo echo
if [ "$opType" == "upgrade" ]; then f__log "$script $version: $1"; fi [ "$operation" == "upgrade" ] && f__log "$script $version: $1"
exit 1 exit 1
} }
# affichage des paramètres en bleu, si $1=raw pas de ligne vide à la fin, si $1=log alors uniquement $2 logué # affichage en bleu, si $1=raw pas de ligne vide à la fin, si $1=log alors uniquement $2 logué, combiné: $1="log:raw"
f__info(){ # 15/10/2017 f__info(){ # 26/12/2017
local depart=1 i local depart=1 i
if [ "$1" == "raw" ] || [ "$1" == "log" ]; then depart=2; fi [[ "$1" =~ "raw" || "$1" =~ "log" ]] && depart=2
[ "$1" == "log" ] && f__log "$(sed -E 's/\\t//;s/\\n// ' <<< $2 | xargs )" [[ "$1" =~ "log" ]] && f__log "$(sed -E 's/\\t//;s/\\n// ' <<< $2 | xargs )"
for (( i=$depart ; i<=$# ; i++ )); do for (( i=$depart ; i<=$# ; i++ )); do
echo -e " $BLUE${!i}$STD" echo -e " $BLUE${!i}$STD"
done done
[ "$1" == raw ] || echo [[ "$1" =~ raw ]] || echo
} }
# log spécifique, fichier log limité à 10000 octets, $1 message à loguer # log spécifique, fichier log limité à 10000 octets, $1 message à loguer
f__log(){ # 4/12/2017 f__log(){ # 4/12/2017
if [ -w "$scriptLogs" ]; then
if [ "$(stat -c %s $scriptLogs)" -ge "10000" ]; then if [ -w "$script_logs" ]; then
echo "$(date +%Y%m%d\ %H%M%S) $1" &>/dev/null > "$scriptLogs" if [ "$(stat -c %s $script_logs)" -ge "10000" ]; then
echo "$(date +%Y%m%d\ %H%M%S) $1" &>/dev/null > "$script_logs"
else else
echo "$(date +%Y%m%d\ %H%M%S) $1" &>/dev/null >> "$scriptLogs" echo "$(date +%Y%m%d\ %H%M%S) $1" &>/dev/null >> "$script_logs"
fi fi
fi fi
} }
@ -127,17 +136,17 @@ f__requis(){ # 4/12/2017
} }
# $1=cmd si $2: nb de tentatives pour s'identifier, sinon 2 tentatives par défaut, suppose bash existant # $1=cmd si $2: nb de tentatives pour s'identifier, sinon 2 tentatives par défaut, suppose bash existant
f__sudo(){ # 4/12/2017 f__sudo(){ # 23/12/2017
local nb=2 sudo isudo toBash local nb=2 sudo isudo toBash
[ $( type -p bash 2>/dev/null ) ] && toBash="$( type -p bash )" || return 2 type -p bash &>/dev/null && toBash=$( type -p bash ) || return 2
# sudo --shell bash équivalent su ? # sudo --shell bash équivalent su ?
if sudo -v &>/dev/null && [ $EUID -ne 0 ] ; then if sudo -v &>/dev/null && [ $EUID -ne 0 ] ; then
sudo="sudo su --shell $toBash --preserve-environment -c " sudo="sudo su --shell $toBash --preserve-environment -c "
else else
sudo="su --shell $toBash --preserve-environment -c " sudo="su --shell $toBash --preserve-environment -c "
fi fi
[ "$2" ] && nb="$2" [ "$2" ] && nb=$(( "$2" ))
for (( isudo=1 ; isudo<="$nb" ; isudo++ )); do for (( isudo=1 ; isudo<="$nb" ; isudo++ )); do
$sudo " $1" $sudo " $1"
[ "$?" == 0 ] && break [ "$?" == 0 ] && break
@ -189,14 +198,14 @@ f__user(){ # 3/12/2017
return 0 return 0
} }
# test wget, $1=url à tester, sortie du script (même si url testée ok) avec affichage erreur ou ok # test wget, $1=url à tester, $2=''|print|loc|test
# par défaut, sortie du script (même si url testée ok) avec affichage erreur ou ok
# si $2=print affiche url testée & entêtes http & location, return 0 # si $2=print affiche url testée & entêtes http & location, return 0
# si $2=loc affiche seulement location, return 0 # si $2=loc affiche seulement location, return 0
# si $2=test return 0 si ok, return 1 si KO # si $2=test return 0 si ok, return 1 si KO
f__wget_test(){ # 11/12/2017 f__wget_test(){ # 24/12/2017
local file_test_wget retourWget retourHttp location local file_test_wget="/tmp/testWget-$script" retourWget retourHttp location
file_test_wget="/tmp/testWget-$$-$RANDOM"
wget -Sq --timeout=5 --tries=2 --user-agent="$user_agent" --spider --save-headers "$1" &>"$file_test_wget" wget -Sq --timeout=5 --tries=2 --user-agent="$user_agent" --spider --save-headers "$1" &>"$file_test_wget"
retourWget="$?" retourWget="$?"
[ "$retourWget" == 1 ] && retourWget="1: code erreur générique" [ "$retourWget" == 1 ] && retourWget="1: code erreur générique"
@ -210,14 +219,14 @@ f__wget_test(){ # 11/12/2017
retourHttp=$( grep -i 'HTTP/' "$file_test_wget" | tr -d '\n' | xargs ) retourHttp=$( grep -i 'HTTP/' "$file_test_wget" | tr -d '\n' | xargs )
location=$( grep -i 'location' $file_test_wget | xargs ) location=$( grep -i 'location' $file_test_wget | xargs )
if [ "$2" == "test" ]; then if [ "$2" == "test" ]; then
rm "$file_test_wget" 2>/dev/null rm -f "$file_test_wget"
# spécial maintenance frama.link, pas de redirection sur page status framalink # spécial maintenance frama.link, pas de redirection sur page status framalink
[ "$( grep -c '303' <<< $retourHttp )" -ne 0 ] && return 1 # 303 See Other grep -q '303' <<< $retourHttp && return 1 # 303 See Other
[ "$retourWget" == "0" ] && return 0 || return 1 [ "$retourWget" == "0" ] && return 0 || return 1
fi fi
if [ "$2" == "print" ]; then if [ "$2" == "print" ]; then
if [ "$retourWget" != "0" ]; then if [ "$retourWget" != "0" ]; then
echo "erreur wget: $RED$retourWget" echo "erreur wget: erreur $RED$retourWget"
echo -e "$BLUE $1$STD\t$RED $retourHttp" echo -e "$BLUE $1$STD\t$RED $retourHttp"
else else
echo -e "$BLUE $1$STD\t$GREEN $retourHttp" echo -e "$BLUE $1$STD\t$GREEN $retourHttp"
@ -225,55 +234,61 @@ f__wget_test(){ # 11/12/2017
echo "$STD" echo "$STD"
fi fi
if [ "$2" == "print" ] || [ "$2" == "loc" ]; then 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" echo "$STD"
rm "$file_test_wget" 2>/dev/null rm -f "$file_test_wget"
return 0 return 0
fi fi
if [ "$retourWget" != "0" ]; then if [ "$retourWget" != "0" ]; then
rm "$file_test_wget" 2>/dev/null rm -f "$file_test_wget"
f__error "wget, $retourWget" "$1" "$YELLOW$retourHttp" "$location" f__error "wget, erreur $retourWget" "$1" "$YELLOW$retourHttp" "$location"
echo -e "$RED erreur wget, $retourWget \n $1 \n $YELLOW$retourHttp \n $location$STD" # pour les diags echo -e "$RED erreur wget, $retourWget \n $1 \n $YELLOW$retourHttp \n $location$STD" # pour les diags
return 1 return 1
fi fi
if [ "$(grep -c '200' <<< $retourHttp)" -ne 0 ]; then if grep -q '200' <<< $retourHttp; then
echo -e "$GREEN\ntout est ok, réessayer$STD\n" echo -e "$GREEN\ntout est ok, réessayer$STD\n"
fi fi
rm "$file_test_wget" 2>/dev/null rm -f "$file_test_wget"
exit 0 exit 0
} }
f_affichage(){ # 27/12/2017
clear
echo -n "$BLUE"
cat << 'EOF'
_ _____ _ _ ____ _
__ _ ___| |_| ___| | __ _ ___| |__ | _ \| | __ _ _ _ ___ _ __
/ _' |/ _ \ __| |_ | |/ _' / __| '_ \| |_) | |/ _' | | | |/ _ \ '__|
| (_| | __/ |_| _| | | (_| \__ \ | | | __/| | (_| | |_| | __/ |
\__, |\___|\__|_| |_|\__,_|___/_| |_|_| |_|\__,_|\__, |\___|_|
|___/ |___/
EOF
echo -e "$YELLOW pour Firefox, version $version - $date$STD\n"
}
# affichage help # affichage help
f_help(){ # 5/12/2017 f_help(){ # 27/12/2017
echo -n "$BLUE" echo -n "$BLUE"
cat << 'EOF' cat << 'EOF'
----------------------------------------------------------------------- -----------------------------------------------------------------------
getFlashPlayer install : téléchargement & installation de FlashPlashplayer getFlashPlayer install : téléchargement & installation de FlashPlashplayer
getFlashPlayer remove : désinstallation de FlashPlayer getFlashPlayer remove : désinstallation de FlashPlayer
getFlashPlayer version : version en ligne de FlashPlayer et du script getFlashPlayer version : versions de FlashPlayer et du script, en ligne et installées
getFlashPlayer upgrade : mise à jour plugin si disponible getFlashPlayer upgrade : mise à jour plugin si disponible
---- ----
getFlashPlayer manuel fichier.tar.gz : installation manuelle d'une archive getFlashPlayer manuel archive.tar.gz : installation manuelle d'une archive
---- ----
./getFlashPlayer : installation du script dans le système ./getFlashPlayer : installation du script dans le système (root)
getFlashPlayer -h, --help : affichage aide getFlashPlayer -h, --help : affichage aide
getFlashPlayer -r, --remove, sysremove : désinstallation du script du système getFlashPlayer -r, --remove, sysremove : désinstallation du script du système (root)
getFlashPlayer -u, --upgrade : mise à jour script & plugin, cron hebdomadaire getFlashPlayer -u, --upgrade : mise à jour script & plugin
getFlashPlayer -v, --version : versions du script getFlashPlayer -v, --version : versions du script
EOF
echo -n "$STD"
cat << 'EOF'
-----------------------------------------------------------------------
Ce script doit être exécuté avec les droits root uniquement pour
l'installation et la suppression du script dans le système.
SEUL le plugin sera installé comme plugin Firefox, par tout utilisateur,
sans droits root requis.
----------------------------------------------------------------------- -----------------------------------------------------------------------
EOF EOF
echo -e " plus d'infos: $GREEN https://kyodev.frama.io/kyopages/scripts/getFlashPlayer/\n$STD" echo -e "$STD plus d'infos: $GREEN https://kyodev.frama.io/kyopages/scripts/getFlashPlayer/\n$STD"
} }
# pas beau ce soft :(
fflash_avertissement(){ # 5/12/2017 fflash_avertissement(){ # 5/12/2017
echo -n "$BLUE" echo -n "$BLUE"
cat << 'EOF' cat << 'EOF'
@ -287,134 +302,111 @@ EOF
echo -e " voir:$GREEN https://developer.mozilla.org/fr/docs/Plugins/Roadmap$STD\n" echo -e " voir:$GREEN https://developer.mozilla.org/fr/docs/Plugins/Roadmap$STD\n"
} }
# version Flash en ligne & installée, si $1="quiet" pas d'affichage, $verFlash=x.y, $plugin_aJour=ko # version Flash en ligne & installée, si $1="quiet" pas d'affichage, $ver_flash, $plugin_a_jour=ko
fflash_get_version(){ # 5/12/2017 fflash_get_version(){ # 27/12/2017
local verInstall local verInstall
x_get_version=1
# détection version en ligne # détection version en ligne
verFlash="$(wget -q --tries=2 --timeout=15 --user-agent="$user_agent" -O - "$urlOnline" | \ ver_flash=$( wget -q --tries=2 --timeout=15 --user-agent="$user_agent" -O - "$url_online" | \
sed -nr 's/^.*AUTO_ID.*Version[[:blank:]]+([0-9].*[0-9]).*$/\1/p')" sed -nr 's/^.*AUTO_ID.*Version[[:blank:]]+([0-9].*[0-9]).*$/\1/p' )
[ "$verFlash" ] || verFlash="n/a" # détection version installée
[ "$1" == "quiet" ] || f__info "version FlashPlayer en ligne: $YELLOW$verFlash" if [ -e "$dir_install/libflashplayer.so" ]; then
if [ ! -e "$dirInstall/libflashplayer.so" ]; then verInstall=$( strings $dir_install/libflashplayer.so | grep -Eo '[0-9]+_[0-9]+_[0-9]+_[0-9]+' | sed 's/_/./g' )
f__info "FlashPlayer non installé"
return 0
fi
# détection version du plugin installé
verInstall="$(strings $dirInstall/libflashplayer.so | grep -Eo '[0-9]+_[0-9]+_[0-9]+_[0-9]+' | sed 's/_/./g')"
if [ "$verInstall" == "$verFlash" ]; then
[ "$1" == "quiet" ] || f__info "FlashPlayer $GREENà jour"
elif [[ "$verFlash" == "n/a" ]]; then
f__info "version FlashPlayer en place: $GREEN$verInstall"
else else
plugin_aJour="ko" verInstall="Non Installé"
[ "$1" == "quiet" ] || f__info "version FlashPlayer en place: $GREEN$verInstall$STD, mise à jour possible"
fi fi
if [[ "$verInstall" && "$ver_flash" ]]; then
[ "$verInstall" == "$ver_flash" ] || plugin_a_jour="ko"
fi
[ "$ver_flash" ] || ver_flash="$RED""n/a"
[ "$1" == "quiet" ] && return 0
f__info "raw" "FlashPlayer en place: $GREEN$verInstall"
f__info "FlashPlayer en ligne: $YELLOW$ver_flash"
} }
# install plugin dans config user mozilla, $1 manuel (install manuelle), $2 script à installer si install manuelle # install plugin dans config user mozilla, [$1='manuel', $2 archive]
fflash_install(){ # 18/12/2017 fflash_install(){ # 27/12/2017
local dirTemp fileTemp local verArchive recup_url file_temp dirTemp="/tmp/$script"
[ "$opType" == "upgrade" ] || fflash_avertissement [ "$opType" == "upgrade" ] || fflash_avertissement
mkdir -p "$dirTemp"
if [ "$1" == "manuel" ]; then if [ "$1" == "manuel" ]; then
f__info "installation manuelle de $2" f__info "installation manuelle de $2 version $verArchive"
dirTemp="$(dirname $2)/$script-$RANDOM" fileTemp="$2"
fileTemp=$( dirname $2 )/$( basename $2 )
mkdir -p "$dirTemp"
else else
[ -z $verFlash ] && fflash_get_version "quiet" # pas de test si version=n/a, dès fois que le DL fonctionne (( x_get_version == 1 )) || fflash_get_version "quiet"
f__info "installation FlashPlayer, version $verFlash" f__info "installation FlashPlayer, version $ver_flash"
dirTemp="/tmp/$script-$RANDOM" fileTemp="$dirTemp/flash_player_npapi-linux$( getconf LONG_BIT ).tar.gz"
fileTemp="$dirTemp/flash_player_npapi_linux.$(getconf LONG_BIT).tar.gz"
mkdir -p "$dirTemp"
# détection/chargement/test archive plugin flashplayer # détection/chargement/test archive plugin flashplayer
f__info " - téléchargement..." f__info " - téléchargement..."
fflash_recup_url_v1 recup_url="https://fpdownload.adobe.com/get/flashplayer/pdc/"
wget -q --show-progress --tries=2 --timeout=15 --user-agent="$user_agent" --referer="$urlOnline" -O "$fileTemp" "$recup_url" 2>&1 recup_url+="$ver_flash/flash_player_npapi_linux.$fu_archi.tar.gz"
wget -q -c --show-progress --tries=2 --timeout=15 --user-agent="$user_agent" --referer="$url_online" -o "$wget_log" -O "$fileTemp" "$recup_url"
[ "$?" -eq 0 ] || f__wget_test "$recup_url" [ "$?" -eq 0 ] || f__wget_test "$recup_url"
f__archive_test "$fileTemp" || f__error " Le fichier $fileTemp n'est pas une archive tar.gz valide"
fi fi
f__archive_test "$fileTemp" || f__error " Le fichier $fileTemp n'est pas une archive tar.gz valide"
# décompression archive téléchargée dans dossier de travail # décompression archive téléchargée dans dossier de travail
f__info " - décompression..." f__info "\n - décompression..."
tar -xaf "$fileTemp" -C "$dirTemp/" tar -xaf "$fileTemp" -C "$dirTemp/"
if [ "$1" == "manuel" ]; then verArchive=$( grep -m1 -i 'version' "$dirTemp/readme.txt" )
verFlash="$(strings $dirTemp/libflashplayer.so | grep -Eo '[0-9]+_[0-9]+_[0-9]+_[0-9]+' | sed 's/_/./g')" verArchive=${verArchive,,}
fi verArchive=${verArchive#version }
# copie de la bibliothèque flash dans plugins/ user mozilla, effacement répertoire temporaire # copie de la bibliothèque flash dans plugins/ user mozilla, effacement répertoire temporaire
mkdir -p "$dirInstall" mkdir -p "$dir_install"
cp -f "$dirTemp/libflashplayer.so" "$dirInstall/" cp -f "$dirTemp/libflashplayer.so" "$dir_install/"
rm -Rf "$dirTemp/" rm -Rf "$dirTemp/"
# droits user si jamais installation par root # droits user si jamais installation par root
chown -R "$fu_user:" "$dirInstall" chown -R "$fu_user:" "$dir_install"
f__info "log" "FlashPlayer $verFlash installé pour $fu_user" "\tPour tester$YELLOW: http://get.adobe.com/flashplayer/about/"
}
# installation du plugin chargé manuellement, $1 if [ "$1" == "manuel" ]; then
fflash_install_manuel(){ # 5/12//2017 f__info "log" "archive FlashPlayer $verArchive installé pour $fu_user"
[ -e "$1" ] || f__error "fichier plugin $1 introuvable" else
f__archive_test "$1" || f__error "Le fichier $1 n'est pas une archive valide" f__info "log:raw" "FlashPlayer $ver_flash installé pour $fu_user"
fflash_install "manuel" "$1"
}
# calcul url téléchargement plugin, assigne $recup_url,
fflash_recup_url_v1(){ # 30/08/2017
local recup1 recup2
recup1="https://fpdownload.adobe.com/get/flashplayer/pdc/"
if [ "$(uname -m)" == "i686" ] || [ "$(uname -m)" == "i386" ]; then
recup2='i386'
elif [ "$(uname -m)" == "x86_64" ] || [ "$(uname -m)" == "amd64" ]; then
recup2='x86_64'
else
f__error "architecture non reconnue"
fi fi
recup_url="$recup1$verFlash/flash_player_npapi_linux.$recup2.tar.gz" f__info " Pour tester$YELLOW: http://get.adobe.com/flashplayer/about/"
}
# installation du plugin chargé manuellement, $1=archive
fflash_install_manuel(){ # 27/12//2017
[ -e "$1" ] || f__error "fichier plugin $1 introuvable"
fflash_install "manuel" "$1"
[ -e "$fileDev" ] || rm -f "$1" ## on n'efface pas si fileDev (dev)
} }
# suppression du plugin # suppression du plugin
fflash_remove(){ # 5/12/2017 fflash_remove(){ # 27/12/2017
local verInstall local verInstall
[ -e "/home/$fu_user/.mozilla/plugins/libflashplayer.so" ] || f__error "FlashPlayer inexistant pour $fu_user\n" [ -e "/home/$fu_user/.mozilla/plugins/libflashplayer.so" ] || f__error "FlashPlayer inexistant pour $fu_user\n"
verInstall=$( strings $dirInstall/libflashplayer.so | grep -Eo '[0-9]+_[0-9]+_[0-9]+_[0-9]+' | sed 's/_/./g' ) rm "$dir_install/libflashplayer.so"
rm "$dirInstall/libflashplayer.so" rm -f "$dir_install/libflashplayer.maj" # ancien fichier éventuel
rm "$dirInstall/libflashplayer.maj" &>/dev/null # ancien fichier éventuel rm -f "$dir_install/libflashplayer.version" # ancien fichier éventuel
rm "$dirInstall/libflashplayer.version" &>/dev/null # ancien fichier éventuel
f__info "log" "FlashPlayer $verInstall désinstallé pour $fu_user" f__info "log" "FlashPlayer désinstallé pour $fu_user"
} }
# test et mise à jour plugin si plugin outdated # test et mise à jour plugin si plugin outdated
fflash_upgrade(){ # 5/12/2017 fflash_upgrade(){ # 27/12/2017
fflash_get_version
if [ "$verFlash" == "n/a" ]; then (( x_get_version == 1 )) || fflash_get_version "quiet"
f__info "log" "version du plugin flash non accessible flash" if [[ "$ver_flash" =~ "n/a" ]]; then
elif [ "$plugin_aJour" == "ko" ]; then f__info "log" "version en ligne du plugin flash non accessible"
elif [ "$plugin_a_jour" == "ko" ]; then
fflash_install fflash_install
else else
f__info "log" "pas de mise à jour disponible pour Flash" f__info "log" "pas de mise à jour disponible"
fi fi
} }
# spécifique script # tache upgrade dans anacron hebdomadaire, via cron horaire, $1=upgrade|install|remove
fscript_cronAnacron_special(){ # 5/12/2017 fscript_cronAnacron(){ # 27/12/2017
rm "/home/$fu_user/.mozilla/plugins/libflashplayer.anacrontab" &>/dev/null # ancienne localisation
rm "/home/$fu_user/.config/anacron/spool/getFP"* &>/dev/null # ancien job
# ancienne localisation anacrontab, suppression
[ "$EUID" -eq 0 ] && sed -i "/libflashplayer.anacrontab/d" /etc/crontab
}
# spécifique script
fscript_install_special(){ # 5/12/2017
# changement ancien logs
[ -e "/var/log/sdeb_getFlash.log" ] && mv "/var/log/sdeb_getFlash.log" "$scriptLogs"
}
# inscription dans tache upgrade en anacron hebdomadaire, via cron horaire, $1=upgrade|install|remove
fscript_cronAnacron(){ # 4/12/2017
local dirAnacron dirSpool fileAnacron local dirAnacron dirSpool fileAnacron
[ "$(type -t fscript_cronAnacron_special)" ] && fscript_cronAnacron_special # test, si fonction spécifique, appel [ "$( type -t fscript_cronAnacron_special )" ] && fscript_cronAnacron_special # test, si fonction spécifique, appel
dirAnacron="/home/$fu_user/.config/anacron" dirAnacron="/home/$fu_user/.config/anacron"
dirSpool="$dirAnacron/spool" dirSpool="$dirAnacron/spool"
fileAnacron="$dirAnacron/$script.anacrontab" fileAnacron="$dirAnacron/$script.anacrontab"
@ -423,10 +415,10 @@ fscript_cronAnacron(){ # 4/12/2017
install | upgrade ) install | upgrade )
mkdir -p "$dirAnacron" mkdir -p "$dirAnacron"
# table anacron # table anacron
echo "7 10 $script nice $scriptInstall --upgrade 1>/dev/null" > "$fileAnacron" # juste erreurs en syslog echo "7 10 $script nice $script_install --upgrade 1>/dev/null" > "$fileAnacron" # juste erreurs en syslog
## anacron journalier pour dev logname ## anacron journalier pour dev logname
if [ -e "$fileDev" ]; then if [ -e "$fileDev" ]; then
echo "1 00 $script""Dev nice $scriptInstall --upgrade 1>/dev/null" >> "$fileAnacron" echo "1 00 $script""Dev nice $script_install --upgrade 1>/dev/null" >> "$fileAnacron"
fi fi
# création spool anacron utilisateur # création spool anacron utilisateur
mkdir -p "$dirSpool" mkdir -p "$dirSpool"
@ -435,39 +427,48 @@ fscript_cronAnacron(){ # 4/12/2017
# crontab pour activation horaire anacron # crontab pour activation horaire anacron
echo "@hourly $fu_user /usr/sbin/anacron -t $fileAnacron -S $dirSpool" >> /etc/crontab echo "@hourly $fu_user /usr/sbin/anacron -t $fileAnacron -S $dirSpool" >> /etc/crontab
fi fi
[ "$(grep "$script" /etc/crontab)" ] || echo f__error "inscription crontab" \ grep -q "$script" "/etc/crontab" || echo f__error "inscription crontab"
"certains systèmes semblent poser poser problème, merci de rapporter ce bug à $projet, $contact"
;; ;;
remove ) remove )
rm "$dirSpool/$script"* &>/dev/null rm -f "$dirSpool/$script"*
rm "$fileAnacron" &>/dev/null rm -f "$fileAnacron"
rmdir "$dirSpool" "$dirAnacron" &>/dev/null rmdir "$dirSpool" "$dirAnacron"
;; ;;
esac esac
} }
# version script en ligne, [$1=update], assigne $versionScript, $script_aJour=ok|ko # version script en ligne, [$1=quiet], assigne $ver_script_install, $ver_script_online, $script_a_jour=ok|KO
fscript_get_version(){ # 5/12/2017 fscript_get_version(){ # 27/12/2017
local var_temp local wget_log="/tmp/wget_$RANDOM.log"
f__info "raw" "version script en cours: $GREEN$version" x_script_get_version=1
versionScript=$(wget -q --timeout=15 -O - "$urlScript" | grep -m1 '^version=' | cut -d'=' -f2) # version online
if [ "$versionScript" ]; then ver_script_online=$( wget -q --timeout=15 -o "$wget_log" -O - "$url_script" | grep -m1 '^version=' | cut -d'=' -f2 )
if [ "$version" != "$versionScript" ]; then if [ "$?" -ne 0 ]; then
[ "$1" == "update" ] && var_temp=", mise à jour en cours" || var_temp=", mise à jour possible" rm "$wget_log"
script_aJour="ko" f__wget_test "$url_script"
else
script_aJour="ok"
fi
f__info "version script en ligne: $YELLOW$versionScript$BLUE$var_temp"
else
f__info "version script en ligne$RED non accessible"
fi fi
# version installée
if [ -e "$script_install" ]; then
ver_script_install=$( grep -m1 '^version=' $script_install | cut -d'=' -f2 )
fi
if [[ "$ver_script_online" && "$script_install" ]]; then
[ "$ver_script_install" != "$ver_script_online" ] && script_a_jour="KO" || script_a_jour="ok"
fi
[ "$ver_script_online" ] || ver_script_online="$RED""n/a"
[ "$ver_script_install" ] || ver_script_install="Non installé"
rm "$wget_log"
[ "$1" == "quiet" ] && return 0
f__info "raw" "script en place: $GREEN$ver_script_install"
f__info "script en ligne: $YELLOW$ver_script_online"
} }
# installation du script dans le système # installation du script dans le système
fscript_install(){ # 4/12/2017 fscript_install(){ # 27/12/2017
if grep -q 'bin' <<< "$(dirname $0)" ; then
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 )" f__info "$RED""l'installation dans le système doit se faire depuis un script local $GREEN(./$script -i )"
return 1 return 1
fi fi
@ -476,30 +477,33 @@ fscript_install(){ # 4/12/2017
f__sudo "exec $0 -i" f__sudo "exec $0 -i"
return $? return $?
fi fi
[ "$(type -t fscript_install_special)" ] && fscript_install_special # test, si fonction spécifique, appel
[ "$( type -t fscript_install_special )" ] && fscript_install_special # test, si fonction spécifique, appel
f__requis "wget anacron cron" || exit 1 f__requis "wget anacron cron" || exit 1
# install /opt # install /opt
mkdir -p /opt/bin/ mkdir -p /opt/bin/
cp -d "$(basename $0)" "$scriptInstall" cp -d "$0" "$script_install"
ln -s "$scriptInstall" "/usr/bin/$script" &>/dev/null ln -s "$script_install" "/usr/bin/$script" &>/dev/null
chmod 775 "$scriptInstall" # rwx rwx r-x, proprio fu_user chmod 775 "$script_install" # rwx rwx r-x, proprio fu_user
# cron/anacron install # cron/anacron install
fscript_cronAnacron "install" fscript_cronAnacron "install"
# création fichier log # création fichier log
touch "$scriptLogs" touch "$script_logs"
chmod 664 "$scriptLogs" # rw- rw- r--, proprio fu_user chmod 664 "$script_logs" # rw- rw- r--, proprio fu_user
chown "$fu_user:" "$scriptLogs" "$scriptInstall" chown "$fu_user:" "$script_logs" "$script_install"
[ -e "$fileDev" ] || rm "$(basename $0)" &>/dev/null ## on efface pas si fileDev (dev) [ -e "$fileDev" ] || rm -f "$0" ## on efface pas si fileDev (dev)
f__info "log" "$script $version installé dans le système." "maintenant, appel du script par: $GREEN$script$BLUE (sans ./)" f__info "log" "$script $version installé dans le système." "maintenant, appel du script par: $GREEN$script$BLUE (sans ./)"
} }
# suppression du script dans le système # suppression du script dans le système
fscript_remove(){ # 4/12/2017 fscript_remove(){ # 27/12/2017
if ! grep -q 'bin' <<< "$(dirname $0)" ; then
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)" f__info "$RED""cette fonction doit être appelée depuis le script installé dans le système $GREEN($script -r)"
return 1 return 1
fi fi
if [ ! -x "$scriptInstall" ];then if [ ! -x "$script_install" ];then
f__info "$RED$script n'est pas installé" f__info "$RED$script n'est pas installé"
return 1 return 1
fi fi
@ -508,43 +512,51 @@ fscript_remove(){ # 4/12/2017
f__sudo "exec $0 -r" f__sudo "exec $0 -r"
return $? return $?
fi fi
[ "$(type -t fscript_remove_special)" ] && fscript_remove_special # test, si fonction spécifique, appel
# suppression de /opt [ "$( type -t fscript_remove_special )" ] && fscript_remove_special # test, si fonction spécifique, appel
rm "$scriptInstall" &>/dev/null # suppression de /opt lien /usr/bin
rm -f "$script_install"
unlink "/usr/bin/$script" &>/dev/null unlink "/usr/bin/$script" &>/dev/null
# cron/anacron remove # cron/anacron remove
fscript_cronAnacron "remove" fscript_cronAnacron "remove"
f__info "log" "$script $version supprimé du système." f__info "log" "$script $version supprimé du système."
} }
# mise à jour script si dispo, v2, +update spécifique # mise à jour script, [$1 != "" si upgrade en place, $1 dans message info]
fscript_update(){ # 6/12/2017 fscript_update(){ # 27/12/2017
local dirTemp="/tmp/$script-$RANDOM" local dirTemp="/tmp/$script-maj" wget_log="/tmp/wget_$RANDOM.log" upgradeEnPlace="$1"
[ $(type -t fscript_update_special) ] && fscript_update_special # test, si fonction spécifique, appel [ "$(type -t fscript_update_special)" ] && fscript_update_special # test, si fonction spécifique, appel
if [ -z "$updateSpecial" ] && ! grep -q 'bin' <<< "$(dirname $0)" ; then if [ -z "$upgradeEnPlace" ] && ! 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 -u)" f__info "$RED""cette fonction doit être appelée depuis le script installé dans le système $GREEN($script -u)"
return 1 return 1
fi fi
fscript_get_version "update" (( x_script_get_version == 1 )) || fscript_get_version
if [ "$script_aJour" == "ok" ]; then if [ "$script_a_jour" == "ok" ]; then
f__info "log" "pas de mise à jour disponible pour $script $version" f__info "log" "pas de mise à jour disponible pour $script $version"
return 0 return 0
else
f__info "mise à jour en cours"
fi fi
mkdir -p "$dirTemp" mkdir -p "$dirTemp"
wget -q --tries=2 --timeout=15 -O "$dirTemp/$script" "$urlScript" wget -q --tries=2 --timeout=15 -o "$wget_log" -O "$dirTemp/$script" "$url_script"
if [ "$?" != "0" ]; then f__wget_test "$urlScript"; fi if [ "$?" -ne 0 ]; then
if grep -q '#!/bin/bash' "$dirTemp/$script" && grep -q '^### END CONTROL' "$dirTemp/$script"; then
cp -d "$dirTemp/$script" "$scriptInstall"
chmod 775 "$scriptInstall" # rwx rwx r-x, proprio fu_user
chown "$fu_user:" "$scriptInstall"
[ -z "$updateSpecial" ] && fscript_cronAnacron "upgrade"
f__info "log" "$script mis à jour en version $versionScript $updateSpecial"
else
rm -rf "$dirTemp/" rm -rf "$dirTemp/"
f__error "échec update" "mauvais téléchargement, réessayer plus tard" rm -f "$wget_log"
f__wget_test "$url_script"
fi
if grep -q '#!/bin/bash' "$dirTemp/$script" && grep -q '^### END CONTROL' "$dirTemp/$script"; then
cp -d "$dirTemp/$script" "$script_install"
chmod 775 "$script_install" # rwx rwx r-x, proprio fu_user
chown "$fu_user:" "$script_install"
[ -z "$upgradeEnPlace" ] && fscript_cronAnacron "upgrade"
f__info "log" "$script mis à jour en version $ver_script_online $updateSpecial"
else
f_info "log" "$script: échec update" "mauvais téléchargement, réessayer plus tard"
fi fi
rm -rf "$dirTemp/" rm -rf "$dirTemp/"
rm -f "$wget_log"
} }
prg_init(){ # 4/12/2017 prg_init(){ # 4/12/2017
@ -563,6 +575,9 @@ prg_init(){ # 4/12/2017
# test $DISPLAY # test $DISPLAY
[ -z "$DISPLAY" ] && ENV_DISPLAY="no DISPLAY" [ -z "$DISPLAY" ] && ENV_DISPLAY="no DISPLAY"
# architectures possibles
f__architecture || f__error "Seules les architecture 32 et/ou 64 bits sont supportée (i686 & amd64)"
# détermination user derrière root # détermination user derrière root
f__user f__user
retourFUser="$?" retourFUser="$?"
@ -573,8 +588,15 @@ prg_init(){ # 4/12/2017
f__info "user root" f__info "user root"
fi fi
# définition couleurs
f__color
# requis pour fonctionnement programme # requis pour fonctionnement programme
f__requis "file tar" || exit 1 f__requis "file tar strings>binutils getconf>libc-bin" || exit 1
# fichier log pour wget, évite bug wget? sur testing
touch "/tmp/wget.log" && wget_log="/tmp/wget.log" || wget_log="/tmp/wget-$RANDOM.log" # accessible?: wget.log sinon avec un random
chmod 666 "$wget_log" 2>/dev/null # rw pour tous, écrasable et effaçable par tous
} }
######## début script / initialisation ######## début script / initialisation
@ -585,28 +607,23 @@ prg_init
# logo et définition couleurs # logo et définition couleurs
f_affichage f_affichage
urlScript="https://framagit.org/kyodev/kyopages/raw/master/scripts/getFlashPlayer" # paramètres script
urlNotice="https://kyodev.frama.io/kyopages/scripts/getFlashPlayer/"
user_agent="Mozilla/5.0 Firefox" user_agent="Mozilla/5.0 Firefox"
scriptInstall="/opt/bin/$script"
scriptLogs="/var/log/sdeb_$script.log"
fileDev="/opt/bin/fileDev" fileDev="/opt/bin/fileDev"
script_install="/opt/bin/$script"
script_logs="/var/log/sdeb_$script.log"
url_script="https://framagit.org/kyodev/kyopages/raw/master/scripts/getFlashPlayer"
url_notice="https://kyodev.frama.io/kyopages/scripts/getFlashPlayer/"
dirInstall="/home/$fu_user/.mozilla/plugins" # paramètres flash
urlOnline="https://get.adobe.com/fr/flashplayer/" # test version & referer dir_install="/home/$fu_user/.mozilla/plugins"
url_online="https://get.adobe.com/fr/flashplayer/" # test version & referer
[ -e "$scriptInstall" ] && [ "$(stat -c %G $scriptInstall)" == "root" ] && problemDetected+="-1" # droits inappropriés sur le script, version de dev
options=$@ options=$@
if [ "$(dirname $0)" == "." ] && [ ! -e "$fileDev" ]; then if [ "$(dirname $0)" == "." ] && [ ! -e "$fileDev" ]; then
options="-i" # script install options="-i" # script install
else
if [ ! -w "$scriptLogs" ] && [ -e "$dirInstall/libflashplayer.so" ]; then # ancien système de logs via syslog
problemDetected+="-2"
fi
fi fi
[ "$problemDetected" ] && f__info "$RED""l'installation du script est obsolète ($problemDetected)" \ [ "$options" ] || options="-h" # vide? help
"veuillez réinstaller le script manuellement" "$GREEN""voir $urlNotice#messages-avertissement"
for j in $options; do for j in $options; do
case $j in case $j in
@ -624,9 +641,10 @@ for j in $options; do
fflash_upgrade fflash_upgrade
exit ;; # upgrade plugin si installé exit ;; # upgrade plugin si installé
version | versions ) version | versions )
fflash_get_version
fscript_get_version fscript_get_version
fflash_get_version
exit ;; # version plugin en ligne & installée exit ;; # version plugin en ligne & installée
-i ) -i )
fscript_install fscript_install
exit ;; # installation du script dans le système exit ;; # installation du script dans le système

View File

@ -1,6 +1,11 @@
# changelog getFlashPlayer # changelog getFlashPlayer
## getFlashPlayer 4.0.0 27/12/2017
* remodelage complet
* mise à niveau fonctions
## getFlashPlayer 3.21.0 18/12/2017 ## getFlashPlayer 3.21.0 18/12/2017
* fix: install manuelle, bug potentiel * fix: install manuelle, bug potentiel