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
version=3.21.0
date="18/12/2017"
version=4.0.0
date="27/12/2017"
projet="simpledeb"
contact="IRC freenode ##sdeb ou https://framagit.org/kyodev/kyopages/issues/"
script="getFlashPlayer"
@ -11,31 +11,39 @@ script="getFlashPlayer"
# contributeurs: kyodev, coyotus, naguam
#####
f_affichage(){ # 5/12/2017
f__color
clear
echo -n "$BLUE"
cat << 'EOF'
_ _____ _ _ ____ _
__ _ ___| |_| ___| | __ _ ___| |__ | _ \| | __ _ _ _ ___ _ __
/ _' |/ _ \ __| |_ | |/ _' / __| '_ \| |_) | |/ _' | | | |/ _ \ '__|
| (_| | __/ |_| _| | | (_| \__ \ | | | __/| | (_| | |_| | __/ |
\__, |\___|\__|_| |_|\__,_|___/_| |_|_| |_|\__,_|\__, |\___|_|
|___/ |___/
EOF
echo -e "$YELLOW pour Firefox, version $version - $date$STD\n"
# détecte architecture système, assign $fu_archi: i386|x86_64
# return 1 on unknown architecture
# remarque, debian: dpkg --print-architecture affiche i386
f__architecture(){ # 14/12/2017 SPECIFIQUE
x_architecture=1
case "$(uname -m)" in
amd64 | x86_64 )
fu_archi="x86_64";;
i?86 | x86 )
fu_archi="i386";;
* )
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
f__archive_test(){ # 30/08/2017
local filetest="$(file -b $1)"
f__archive_test(){ # 19/12/2017
local filetest=$( file -b $1 )
grep -q 'gzip compressed data' <<< "$filetest" && archive_detect="gzip"
grep -q 'bzip2 compressed data' <<< "$filetest" && archive_detect="bzip2"
grep -q 'Debian binary package' <<< "$filetest" && archive_detect="deb"
grep -q 'Zip archive data' <<< "$filetest" && archive_detect="zip"
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
@ -51,8 +59,8 @@ f__color(){ # 08/10/2017
SOUL=$(tput smul)
}
# affichage $1 en rouge, $1++ optionnels en bleu, sortie script sur erreur, log $1 si $opType=upgrade
f__error(){ # 4/12/2017
# affichage $1 en rouge, $1++ optionnels en bleu, sortie script sur erreur, log $1 si $operation=upgrade
f__error(){ # 18/12/2017
local depart=1 i
echo -e "\n$RED $script $version, erreur critique: $1 $STD"
@ -60,29 +68,30 @@ f__error(){ # 4/12/2017
echo -e " $BLUE${!i}$STD"
done
echo
if [ "$opType" == "upgrade" ]; then f__log "$script $version: $1"; fi
[ "$operation" == "upgrade" ] && f__log "$script $version: $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é
f__info(){ # 15/10/2017
# 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(){ # 26/12/2017
local depart=1 i
if [ "$1" == "raw" ] || [ "$1" == "log" ]; then depart=2; fi
[ "$1" == "log" ] && f__log "$(sed -E 's/\\t//;s/\\n// ' <<< $2 | xargs )"
[[ "$1" =~ "raw" || "$1" =~ "log" ]] && depart=2
[[ "$1" =~ "log" ]] && f__log "$(sed -E 's/\\t//;s/\\n// ' <<< $2 | xargs )"
for (( i=$depart ; i<=$# ; i++ )); do
echo -e " $BLUE${!i}$STD"
done
[ "$1" == raw ] || echo
[[ "$1" =~ raw ]] || echo
}
# log spécifique, fichier log limité à 10000 octets, $1 message à loguer
f__log(){ # 4/12/2017
if [ -w "$scriptLogs" ]; then
if [ "$(stat -c %s $scriptLogs)" -ge "10000" ]; then
echo "$(date +%Y%m%d\ %H%M%S) $1" &>/dev/null > "$scriptLogs"
if [ -w "$script_logs" ]; then
if [ "$(stat -c %s $script_logs)" -ge "10000" ]; then
echo "$(date +%Y%m%d\ %H%M%S) $1" &>/dev/null > "$script_logs"
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
}
@ -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
f__sudo(){ # 4/12/2017
f__sudo(){ # 23/12/2017
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 ?
if sudo -v &>/dev/null && [ $EUID -ne 0 ] ; then
sudo="sudo su --shell $toBash --preserve-environment -c "
else
sudo="su --shell $toBash --preserve-environment -c "
fi
[ "$2" ] && nb="$2"
[ "$2" ] && nb=$(( "$2" ))
for (( isudo=1 ; isudo<="$nb" ; isudo++ )); do
$sudo " $1"
[ "$?" == 0 ] && break
@ -189,14 +198,14 @@ f__user(){ # 3/12/2017
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=loc affiche seulement location, return 0
# si $2=test return 0 si ok, return 1 si KO
f__wget_test(){ # 11/12/2017
local file_test_wget retourWget retourHttp location
f__wget_test(){ # 24/12/2017
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"
retourWget="$?"
[ "$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 )
location=$( grep -i 'location' $file_test_wget | xargs )
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
[ "$( 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
fi
if [ "$2" == "print" ]; then
if [ "$retourWget" != "0" ]; then
echo "erreur wget: $RED$retourWget"
echo "erreur wget: erreur $RED$retourWget"
echo -e "$BLUE $1$STD\t$RED $retourHttp"
else
echo -e "$BLUE $1$STD\t$GREEN $retourHttp"
@ -225,55 +234,61 @@ f__wget_test(){ # 11/12/2017
echo "$STD"
fi
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"
rm "$file_test_wget" 2>/dev/null
rm -f "$file_test_wget"
return 0
fi
if [ "$retourWget" != "0" ]; then
rm "$file_test_wget" 2>/dev/null
f__error "wget, $retourWget" "$1" "$YELLOW$retourHttp" "$location"
rm -f "$file_test_wget"
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
return 1
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"
fi
rm "$file_test_wget" 2>/dev/null
rm -f "$file_test_wget"
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
f_help(){ # 5/12/2017
f_help(){ # 27/12/2017
echo -n "$BLUE"
cat << 'EOF'
-----------------------------------------------------------------------
getFlashPlayer install : téléchargement & installation de FlashPlashplayer
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 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 -r, --remove, sysremove : désinstallation du script du système
getFlashPlayer -u, --upgrade : mise à jour script & plugin, cron hebdomadaire
getFlashPlayer -r, --remove, sysremove : désinstallation du script du système (root)
getFlashPlayer -u, --upgrade : mise à jour script & plugin
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
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
echo -n "$BLUE"
cat << 'EOF'
@ -287,134 +302,111 @@ EOF
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
fflash_get_version(){ # 5/12/2017
# version Flash en ligne & installée, si $1="quiet" pas d'affichage, $ver_flash, $plugin_a_jour=ko
fflash_get_version(){ # 27/12/2017
local verInstall
x_get_version=1
# détection version en ligne
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" ] || verFlash="n/a"
[ "$1" == "quiet" ] || f__info "version FlashPlayer en ligne: $YELLOW$verFlash"
if [ ! -e "$dirInstall/libflashplayer.so" ]; then
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"
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' )
# détection version installée
if [ -e "$dir_install/libflashplayer.so" ]; then
verInstall=$( strings $dir_install/libflashplayer.so | grep -Eo '[0-9]+_[0-9]+_[0-9]+_[0-9]+' | sed 's/_/./g' )
else
plugin_aJour="ko"
[ "$1" == "quiet" ] || f__info "version FlashPlayer en place: $GREEN$verInstall$STD, mise à jour possible"
verInstall="Non Installé"
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
fflash_install(){ # 18/12/2017
local dirTemp fileTemp
# install plugin dans config user mozilla, [$1='manuel', $2 archive]
fflash_install(){ # 27/12/2017
local verArchive recup_url file_temp dirTemp="/tmp/$script"
[ "$opType" == "upgrade" ] || fflash_avertissement
mkdir -p "$dirTemp"
if [ "$1" == "manuel" ]; then
f__info "installation manuelle de $2"
dirTemp="$(dirname $2)/$script-$RANDOM"
fileTemp=$( dirname $2 )/$( basename $2 )
mkdir -p "$dirTemp"
f__info "installation manuelle de $2 version $verArchive"
fileTemp="$2"
else
[ -z $verFlash ] && fflash_get_version "quiet" # pas de test si version=n/a, dès fois que le DL fonctionne
f__info "installation FlashPlayer, version $verFlash"
dirTemp="/tmp/$script-$RANDOM"
fileTemp="$dirTemp/flash_player_npapi_linux.$(getconf LONG_BIT).tar.gz"
mkdir -p "$dirTemp"
(( x_get_version == 1 )) || fflash_get_version "quiet"
f__info "installation FlashPlayer, version $ver_flash"
fileTemp="$dirTemp/flash_player_npapi-linux$( getconf LONG_BIT ).tar.gz"
# détection/chargement/test archive plugin flashplayer
f__info " - téléchargement..."
fflash_recup_url_v1
wget -q --show-progress --tries=2 --timeout=15 --user-agent="$user_agent" --referer="$urlOnline" -O "$fileTemp" "$recup_url" 2>&1
recup_url="https://fpdownload.adobe.com/get/flashplayer/pdc/"
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"
f__archive_test "$fileTemp" || f__error " Le fichier $fileTemp n'est pas une archive tar.gz valide"
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
f__info " - décompression..."
f__info "\n - décompression..."
tar -xaf "$fileTemp" -C "$dirTemp/"
if [ "$1" == "manuel" ]; then
verFlash="$(strings $dirTemp/libflashplayer.so | grep -Eo '[0-9]+_[0-9]+_[0-9]+_[0-9]+' | sed 's/_/./g')"
fi
verArchive=$( grep -m1 -i 'version' "$dirTemp/readme.txt" )
verArchive=${verArchive,,}
verArchive=${verArchive#version }
# copie de la bibliothèque flash dans plugins/ user mozilla, effacement répertoire temporaire
mkdir -p "$dirInstall"
cp -f "$dirTemp/libflashplayer.so" "$dirInstall/"
mkdir -p "$dir_install"
cp -f "$dirTemp/libflashplayer.so" "$dir_install/"
rm -Rf "$dirTemp/"
# droits user si jamais installation par root
chown -R "$fu_user:" "$dirInstall"
f__info "log" "FlashPlayer $verFlash installé pour $fu_user" "\tPour tester$YELLOW: http://get.adobe.com/flashplayer/about/"
}
chown -R "$fu_user:" "$dir_install"
# installation du plugin chargé manuellement, $1
fflash_install_manuel(){ # 5/12//2017
[ -e "$1" ] || f__error "fichier plugin $1 introuvable"
f__archive_test "$1" || f__error "Le fichier $1 n'est pas une archive valide"
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"
if [ "$1" == "manuel" ]; then
f__info "log" "archive FlashPlayer $verArchive installé pour $fu_user"
else
f__info "log:raw" "FlashPlayer $ver_flash installé pour $fu_user"
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
fflash_remove(){ # 5/12/2017
fflash_remove(){ # 27/12/2017
local verInstall
[ -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 "$dirInstall/libflashplayer.so"
rm "$dirInstall/libflashplayer.maj" &>/dev/null # ancien fichier éventuel
rm "$dirInstall/libflashplayer.version" &>/dev/null # ancien fichier éventuel
f__info "log" "FlashPlayer $verInstall désinstallé pour $fu_user"
rm "$dir_install/libflashplayer.so"
rm -f "$dir_install/libflashplayer.maj" # ancien fichier éventuel
rm -f "$dir_install/libflashplayer.version" # ancien fichier éventuel
f__info "log" "FlashPlayer désinstallé pour $fu_user"
}
# test et mise à jour plugin si plugin outdated
fflash_upgrade(){ # 5/12/2017
fflash_get_version
if [ "$verFlash" == "n/a" ]; then
f__info "log" "version du plugin flash non accessible flash"
elif [ "$plugin_aJour" == "ko" ]; then
fflash_upgrade(){ # 27/12/2017
(( x_get_version == 1 )) || fflash_get_version "quiet"
if [[ "$ver_flash" =~ "n/a" ]]; then
f__info "log" "version en ligne du plugin flash non accessible"
elif [ "$plugin_a_jour" == "ko" ]; then
fflash_install
else
f__info "log" "pas de mise à jour disponible pour Flash"
f__info "log" "pas de mise à jour disponible"
fi
}
# spécifique script
fscript_cronAnacron_special(){ # 5/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
# tache upgrade dans anacron hebdomadaire, via cron horaire, $1=upgrade|install|remove
fscript_cronAnacron(){ # 27/12/2017
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"
dirSpool="$dirAnacron/spool"
fileAnacron="$dirAnacron/$script.anacrontab"
@ -423,10 +415,10 @@ fscript_cronAnacron(){ # 4/12/2017
install | upgrade )
mkdir -p "$dirAnacron"
# 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
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
# création spool anacron utilisateur
mkdir -p "$dirSpool"
@ -435,39 +427,48 @@ fscript_cronAnacron(){ # 4/12/2017
# crontab pour activation horaire anacron
echo "@hourly $fu_user /usr/sbin/anacron -t $fileAnacron -S $dirSpool" >> /etc/crontab
fi
[ "$(grep "$script" /etc/crontab)" ] || echo f__error "inscription crontab" \
"certains systèmes semblent poser poser problème, merci de rapporter ce bug à $projet, $contact"
grep -q "$script" "/etc/crontab" || echo f__error "inscription crontab"
;;
remove )
rm "$dirSpool/$script"* &>/dev/null
rm "$fileAnacron" &>/dev/null
rmdir "$dirSpool" "$dirAnacron" &>/dev/null
rm -f "$dirSpool/$script"*
rm -f "$fileAnacron"
rmdir "$dirSpool" "$dirAnacron"
;;
esac
}
# version script en ligne, [$1=update], assigne $versionScript, $script_aJour=ok|ko
fscript_get_version(){ # 5/12/2017
local var_temp
# version script en ligne, [$1=quiet], assigne $ver_script_install, $ver_script_online, $script_a_jour=ok|KO
fscript_get_version(){ # 27/12/2017
local wget_log="/tmp/wget_$RANDOM.log"
f__info "raw" "version script en cours: $GREEN$version"
versionScript=$(wget -q --timeout=15 -O - "$urlScript" | grep -m1 '^version=' | cut -d'=' -f2)
if [ "$versionScript" ]; then
if [ "$version" != "$versionScript" ]; then
[ "$1" == "update" ] && var_temp=", mise à jour en cours" || var_temp=", mise à jour possible"
script_aJour="ko"
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"
x_script_get_version=1
# version online
ver_script_online=$( wget -q --timeout=15 -o "$wget_log" -O - "$url_script" | grep -m1 '^version=' | cut -d'=' -f2 )
if [ "$?" -ne 0 ]; then
rm "$wget_log"
f__wget_test "$url_script"
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
fscript_install(){ # 4/12/2017
if grep -q 'bin' <<< "$(dirname $0)" ; then
fscript_install(){ # 27/12/2017
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 )"
return 1
fi
@ -476,30 +477,33 @@ fscript_install(){ # 4/12/2017
f__sudo "exec $0 -i"
return $?
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
# install /opt
mkdir -p /opt/bin/
cp -d "$(basename $0)" "$scriptInstall"
ln -s "$scriptInstall" "/usr/bin/$script" &>/dev/null
chmod 775 "$scriptInstall" # rwx rwx r-x, proprio fu_user
cp -d "$0" "$script_install"
ln -s "$script_install" "/usr/bin/$script" &>/dev/null
chmod 775 "$script_install" # rwx rwx r-x, proprio fu_user
# cron/anacron install
fscript_cronAnacron "install"
# création fichier log
touch "$scriptLogs"
chmod 664 "$scriptLogs" # rw- rw- r--, proprio fu_user
chown "$fu_user:" "$scriptLogs" "$scriptInstall"
[ -e "$fileDev" ] || rm "$(basename $0)" &>/dev/null ## on efface pas si fileDev (dev)
touch "$script_logs"
chmod 664 "$script_logs" # rw- rw- r--, proprio fu_user
chown "$fu_user:" "$script_logs" "$script_install"
[ -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 ./)"
}
# suppression du script dans le système
fscript_remove(){ # 4/12/2017
if ! grep -q 'bin' <<< "$(dirname $0)" ; then
fscript_remove(){ # 27/12/2017
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)"
return 1
fi
if [ ! -x "$scriptInstall" ];then
if [ ! -x "$script_install" ];then
f__info "$RED$script n'est pas installé"
return 1
fi
@ -508,43 +512,51 @@ fscript_remove(){ # 4/12/2017
f__sudo "exec $0 -r"
return $?
fi
[ "$(type -t fscript_remove_special)" ] && fscript_remove_special # test, si fonction spécifique, appel
# suppression de /opt
rm "$scriptInstall" &>/dev/null
[ "$( type -t fscript_remove_special )" ] && fscript_remove_special # test, si fonction spécifique, appel
# suppression de /opt lien /usr/bin
rm -f "$script_install"
unlink "/usr/bin/$script" &>/dev/null
# cron/anacron remove
fscript_cronAnacron "remove"
f__info "log" "$script $version supprimé du système."
}
# mise à jour script si dispo, v2, +update spécifique
fscript_update(){ # 6/12/2017
local dirTemp="/tmp/$script-$RANDOM"
# mise à jour script, [$1 != "" si upgrade en place, $1 dans message info]
fscript_update(){ # 27/12/2017
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
if [ -z "$updateSpecial" ] && ! grep -q 'bin' <<< "$(dirname $0)" ; then
[ "$(type -t fscript_update_special)" ] && fscript_update_special # test, si fonction spécifique, appel
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)"
return 1
fi
fscript_get_version "update"
if [ "$script_aJour" == "ok" ]; then
(( x_script_get_version == 1 )) || fscript_get_version
if [ "$script_a_jour" == "ok" ]; then
f__info "log" "pas de mise à jour disponible pour $script $version"
return 0
else
f__info "mise à jour en cours"
fi
mkdir -p "$dirTemp"
wget -q --tries=2 --timeout=15 -O "$dirTemp/$script" "$urlScript"
if [ "$?" != "0" ]; then f__wget_test "$urlScript"; fi
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
wget -q --tries=2 --timeout=15 -o "$wget_log" -O "$dirTemp/$script" "$url_script"
if [ "$?" -ne 0 ]; then
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
rm -rf "$dirTemp/"
rm -f "$wget_log"
}
prg_init(){ # 4/12/2017
@ -563,6 +575,9 @@ prg_init(){ # 4/12/2017
# test $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
f__user
retourFUser="$?"
@ -573,8 +588,15 @@ prg_init(){ # 4/12/2017
f__info "user root"
fi
# définition couleurs
f__color
# 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
@ -585,28 +607,23 @@ prg_init
# logo et définition couleurs
f_affichage
urlScript="https://framagit.org/kyodev/kyopages/raw/master/scripts/getFlashPlayer"
urlNotice="https://kyodev.frama.io/kyopages/scripts/getFlashPlayer/"
# paramètres script
user_agent="Mozilla/5.0 Firefox"
scriptInstall="/opt/bin/$script"
scriptLogs="/var/log/sdeb_$script.log"
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"
urlOnline="https://get.adobe.com/fr/flashplayer/" # test version & referer
# paramètres flash
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=$@
if [ "$(dirname $0)" == "." ] && [ ! -e "$fileDev" ]; then
options="-i" # script install
else
if [ ! -w "$scriptLogs" ] && [ -e "$dirInstall/libflashplayer.so" ]; then # ancien système de logs via syslog
problemDetected+="-2"
fi
fi
[ "$problemDetected" ] && f__info "$RED""l'installation du script est obsolète ($problemDetected)" \
"veuillez réinstaller le script manuellement" "$GREEN""voir $urlNotice#messages-avertissement"
[ "$options" ] || options="-h" # vide? help
for j in $options; do
case $j in
@ -624,9 +641,10 @@ for j in $options; do
fflash_upgrade
exit ;; # upgrade plugin si installé
version | versions )
fflash_get_version
fscript_get_version
fflash_get_version
exit ;; # version plugin en ligne & installée
-i )
fscript_install
exit ;; # installation du script dans le système

View File

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