mirror of https://framagit.org/kyodev/kyopages.git
3.0.0
This commit is contained in:
parent
5e0ae4c623
commit
377e65af76
|
@ -1,8 +1,8 @@
|
|||
#!/bin/bash
|
||||
|
||||
version=2.9.0
|
||||
date="30/07/2017"
|
||||
projet="simpledebian"
|
||||
version=3.0.0
|
||||
date="16/08/2017"
|
||||
projet="simpledeb"
|
||||
contact="IRC freenode ##sdeb ou https://framagit.org/kyodev/kyopages/issues"
|
||||
script="getFlashPlayer"
|
||||
urlScript="https://framagit.org/kyodev/kyopages/raw/master/scripts/getFlashPlayer"
|
||||
|
@ -10,12 +10,10 @@ 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
|
||||
# auteur: simpledebian
|
||||
# auteur: simpledeb
|
||||
# contributeurs: kyodev, coyotus, naguam
|
||||
#####
|
||||
|
||||
PATH='/bin:/usr/bin' ; IFS=' '
|
||||
|
||||
f__affichage(){
|
||||
# définition couleurs
|
||||
YELLOW="$(printf "\033[0;33m")" # ?
|
||||
|
@ -37,21 +35,26 @@ EOF
|
|||
echo -e "$YELLOW pour Firefox, version $version - $date$COLOR\n"
|
||||
}
|
||||
|
||||
# user ayant initié la session graphique, assigne $user_, testé avec mate, gnome, xfce. manque KDE
|
||||
# sortie script sur erreur, gestion variable environnement pour personnaliser l'user avec:
|
||||
# USER_INSTALL=user script
|
||||
f__user(){
|
||||
[ "$USER_INSTALL" ] && user_="$USER_INSTALL" # user_ via variable en environnement
|
||||
if [ -z "$user_" ]; then # priorité à $USER_INSTALL
|
||||
[ "$SUDO_UID" ] && user_id="$SUDO_UID" # sudo-gnome
|
||||
echo "$XAUTHORITY" | grep -Eo '[0-9]+' && user_id="$(echo $XAUTHORITY | grep -Eo '[0-9]+')" || \
|
||||
user_id="$(echo $XDG_RUNTIME_DIR | grep -Eo '[0-9]+')"
|
||||
[ "$user_id" ] && user_="$(grep $user_id /etc/passwd | cut -d ":" -f 1 )" || \
|
||||
user_="$(echo $XAUTHORITY | cut -d "/" -f 3)"
|
||||
fi
|
||||
[ "$user_" ] && [ -d "/home/$user_" ] && return 0 || echo " répertoire '/home/$user_' INEXISTANT"
|
||||
f__error " user indéterminé, lancer le script avec:\n USER_INSTALL=user $0" \
|
||||
"merci contacter $projet $contact pour corriger ça"
|
||||
# test validité archive, $1 fichier (gzip), return 1 si invalide
|
||||
f__archive_test(){
|
||||
file -b "$1" | grep -q 'gzip compressed data' || return 1
|
||||
}
|
||||
|
||||
# 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"
|
||||
if [ "$opType" == "upgrade" ]; then f__log "$script $version: $1"; fi
|
||||
exit 1
|
||||
}
|
||||
|
||||
# affichage des paramètres en bleu, ligne vide à la fin, si $1=raw, pas d'espace en début de ligne, pas de ligne vide à la fin
|
||||
f__info() {
|
||||
if [ "$1" == "raw" ]; then depart=2;
|
||||
else local espace=" "; local depart=1; fi
|
||||
for (( i=$depart ; i<=$# ; i++ )); do echo -e "$espace$BLUE${!i}"; done
|
||||
[ "$1" == raw ] && printf "" || echo "$COLOR"
|
||||
}
|
||||
|
||||
# log spécifique, fichier log limité à 10000octets, $1 message à loguer
|
||||
|
@ -65,35 +68,56 @@ f__log(){
|
|||
fi
|
||||
}
|
||||
|
||||
# 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"
|
||||
if [ "$opType" == "upgrade" ]; then f__log "$script $version: $1"; fi
|
||||
exit 1
|
||||
}
|
||||
|
||||
# affichage des paramètres en bleu, ligne vide à la fin
|
||||
f__info() {
|
||||
for (( i=1 ; i<=$# ; i++ )); do echo -e " $BLUE${!i}"; done
|
||||
echo "$COLOR"
|
||||
}
|
||||
|
||||
#test dépendances (commandes disponibles), $1 liste commandes
|
||||
f__requis(){
|
||||
for i in $@; do
|
||||
if [ ! "$(which $i)" ]; then
|
||||
local testDepends="ko"
|
||||
f__info "$RED vous devez avoir la commande $i pour exploiter ce script"
|
||||
# test dépendances/paquets, $1 liste commandes, $2=debOnly et si paquet présent: return 1 $debOnlyPackages
|
||||
# si manquant avertissement des commandes manquantes
|
||||
# si manquant et debian, proposition paquet à installer (syntaxe appel: commande>paquet, ex: killall>psmisc)
|
||||
f__requis(){ # v16/08/2017
|
||||
local dependsMissing packagesMissing
|
||||
for i in $1; do
|
||||
local command=$(cut -d '>' -f 1 <<< $i)
|
||||
local package=$(cut -d '>' -f 2 <<< $i)
|
||||
if [ "$2" == "debOnly" ] && [ "$(which dpkg)" ]; then # package only et debian
|
||||
LC_ALL=C dpkg --get-selections | grep '[[:space:]]install' | grep -q "^$package[[:space:]]" && \
|
||||
debOnlyPackages+="$package "
|
||||
fi
|
||||
if [ -z "$(which $command)" ]; then
|
||||
dependsMissing+="$command "
|
||||
packagesMissing+="$package "
|
||||
fi
|
||||
done
|
||||
[ -z "$testDepends" ] || f__error "Paquets manquants" " Contacter administrateur pour disposer de ces commandes"
|
||||
[ "$debOnlyPackages" ] && return 1 || return 0
|
||||
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
|
||||
}
|
||||
|
||||
# root? return 0 si root else 1
|
||||
f__root(){
|
||||
if [ $EUID == 0 ]; then return 0; else return 1; fi
|
||||
# user ayant initié la session graphique, assigne $user_, testé avec mate, gnome, xfce. manque KDE
|
||||
# return 1 sur echec ident user, return 2 sur absence home
|
||||
# gestion variable environnement user avec: USER_INSTALL=user script
|
||||
f__user(){ # v15/08/2017-4
|
||||
local user_id
|
||||
if [ "$USER_INSTALL" ]; then user_="$USER_INSTALL"; fi # user_ via variable environnement
|
||||
if [ -z "$user_" ]; then # priorité à $USER_INSTALL
|
||||
if [ "$SUDO_UID" ]; then user_id="$SUDO_UID"; fi # sudo
|
||||
user_id=$(grep -qEo '[0-9]+' <<< "$XAUTHORITY") || user_id=$(grep -qEo '[0-9]+' <<< $XDG_RUNTIME_DIR)
|
||||
if [ "$user_id" ]; then user_=$(grep $user_id /etc/passwd | cut -d ":" -f 1 )
|
||||
else user_=$(echo $XAUTHORITY | cut -d "/" -f 3); fi
|
||||
if [ -z "$user_" ] && [ "$LOGNAME" ] ; then user_=$(grep -v 'root' <<< $LOGNAME)
|
||||
elif [ -z "$user_" ] && [ $(grep -v 'root' <<< $HOME) ]; then user_=$(cut -sd / -f 3 <<< $HOME)
|
||||
elif [ -z "$user_" ]; then user_=$(grep -v 'root' <<< $(who | head -n1 | cut -d " " -f1))
|
||||
elif [ -z "$user_" ] && [ $(grep -v 'not') <<< $(LC_ALL=C tty) ]; then user_=$(stat -c %U $(tty)); fi
|
||||
fi
|
||||
if [ -z "$user_" ]; then
|
||||
echo -e "user indéterminé, pour contourner, lancer le script avec:\n USER_INSTALL=user $0 n" \
|
||||
"merci contacter $projet $contact pour corriger ça"
|
||||
return 1
|
||||
fi
|
||||
if [ ! -d "/home/$user_" ]; then
|
||||
echo -e "répertoire '/home/$user_' INEXISTANT"
|
||||
return 2
|
||||
fi
|
||||
}
|
||||
|
||||
# test wget, $1 url à tester, sortie script sur erreur
|
||||
|
@ -103,57 +127,35 @@ f__wget_test(){
|
|||
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__archive_test(){
|
||||
file -b "$1" | grep -q 'gzip compressed data' || return 1
|
||||
}
|
||||
|
||||
# install du script dans le système
|
||||
fscript_install(){
|
||||
f__root || f__error "vous devez être ROOT pour installer ce script dans le système"
|
||||
# si debian on vire 'flashplugin-nonfree' si installé
|
||||
if [ "$(which dpkg)" ]; then
|
||||
dpkg --get-selections | grep '[[:space:]]install' | grep -q '^flashplugin-nonfree[[:space:]]' \
|
||||
&& apt-get purge flashplugin-nonfree
|
||||
fi
|
||||
# install /opt
|
||||
mkdir -p /opt/bin/
|
||||
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"
|
||||
# cron/anacron install
|
||||
fscript_cronAnacron install
|
||||
# création fichier log
|
||||
touch "$fileLogs"
|
||||
chmod a+rwx "$fileLogs"
|
||||
chown "$user_": "$fileLogs"
|
||||
[ -f "$script"_changelog.md ] || rm "$(basename $0)" &>/dev/null ## on efface pas si changelog (dev)
|
||||
f__info "$GREEN$script installé dans le système." "maintenant, appel du script par:$GREEN $script$BLUE (sans ./)"
|
||||
f__log "$script $version installé dans le système"
|
||||
exit 0
|
||||
}
|
||||
|
||||
# suppression du script dans le système
|
||||
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/bin/"$script" &>/dev/null
|
||||
unlink /usr/local/bin/"$script" &>/dev/null # ancienne localisation
|
||||
# cron/anacron remove
|
||||
fscript_cronAnacron remove
|
||||
f__info "$GREEN$script supprimé du système."
|
||||
f__log "$script $version supprimé du système"
|
||||
}
|
||||
|
||||
# version script en ligne, assigne $versionScript, $script_aJour=ok|ko,
|
||||
fscript_get_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"
|
||||
script_aJour="ko"
|
||||
else script_aJour="ok"; fi
|
||||
# inscription dans tache upgrade en anacron hebdomadaire, via cron horaire
|
||||
fscript_cronAnacron(){
|
||||
rm "/home/$user_/.mozilla/plugins/libflashplayer.anacrontab" &>/dev/null # ancienne localisation éventuelle, spécifique getFlash
|
||||
rm "/home/$user_/.config/anacron/spool/getFP"* &>/dev/null # ancien job, spécifique getFlash
|
||||
sed -i "/libflashplayer.anacrontab/d" /etc/crontab # ancienne localisation anacrontab
|
||||
local dirAnacron="/home/$user_/.config/anacron"
|
||||
local dirSpool="$dirAnacron/spool"
|
||||
local fileAnacron="$dirAnacron/$script.anacrontab"
|
||||
sed -i "/$script.anacrontab/d" /etc/crontab
|
||||
case "$1" in
|
||||
install )
|
||||
mkdir -p "$dirAnacron"
|
||||
# table anacron
|
||||
echo "7 01 $script nice /opt/bin/$script --upgrade" > "$fileAnacron"
|
||||
## test: anacron journalier: echo "1 01 ""$script""test nice /opt/bin/$script --upgrade" >> "$fileAnacron"
|
||||
# création spool anacron utilisateur
|
||||
mkdir -p "$dirSpool"
|
||||
chown -R "$user_": "$dirAnacron" "$dirSpool"
|
||||
# crontab pour activation horaire anacron
|
||||
echo "@hourly $user_ /usr/sbin/anacron -t $fileAnacron -S $dirSpool" >> /etc/crontab
|
||||
service cron restart &>/dev/null || /etc/init.d/cron restart &>/dev/null || f__info "redémarrer cron ou le PC"
|
||||
;;
|
||||
remove )
|
||||
rm "$dirSpool/$script"* &>/dev/null
|
||||
rm "$fileAnacron" &>/dev/null
|
||||
rmdir "$dirSpool" "$dirAnacron" &>/dev/null
|
||||
service cron restart &>/dev/null || /etc/init.d/cron restart &>/dev/null || f__info "redémarrer cron ou le PC"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# mise à jour script si dispo
|
||||
|
@ -161,62 +163,66 @@ fscript_dl(){
|
|||
if [ "$script_aJour" == "ok" ]; then return 0; fi
|
||||
local dirTemp="/tmp/$script-$RANDOM/"
|
||||
mkdir -p "$dirTemp"
|
||||
wget -q --show-progress --tries=1 --timeout=15 --user-agent="$user_agent" -O "$dirTemp$script" "$urlScript"
|
||||
opType="upgrade"
|
||||
wget -q --show-progress --tries=2 --timeout=15 -O "$dirTemp$script" "$urlScript"
|
||||
if [ "$?" != "0" ]; then f__wget_test "$urlScript"; fi
|
||||
chmod a+rwx "$dirTemp$script"
|
||||
chmod 755 "$dirTemp$script"
|
||||
chown "$user_": "$dirTemp$script"
|
||||
cp -d "$dirTemp$script" /opt/bin/"$script"
|
||||
rm -rf "$dirTemp"
|
||||
f__info "\n $script mis à jour en version $versionScript"
|
||||
f__log "$script mis à jour en version $versionScript"
|
||||
$0 upgrade #script mis à jour, on relance le script en upgrade pour le plugin
|
||||
$0 upgrade # spécifique getFlash, script mis à jour, on relance le script en upgrade pour le plugin
|
||||
exit 0
|
||||
}
|
||||
|
||||
# inscription dans tache upgrade en anacron hebdomadaire, via cron horaire
|
||||
fscript_cronAnacron(){
|
||||
case "$1" in
|
||||
install )
|
||||
if [ ! -e "$fileAnacron" ]; then
|
||||
# création répertoire plugin/
|
||||
mkdir -p "$dirInstall"
|
||||
chown "$user_": "$dirInstall"
|
||||
# table anacron
|
||||
echo "7 15 getFP nice /opt/bin/$script upgrade &>/dev/null" > "$fileAnacron"
|
||||
## test: anacron journalier: echo "1 05 getFPtest nice /opt/bin/$script upgrade &>/dev/null" >> "$fileAnacron"
|
||||
chown "$user_": "$fileAnacron"
|
||||
# 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 $fileAnacron -S /home/$user_/.config/anacron/spool" >> /etc/crontab
|
||||
fi
|
||||
;;
|
||||
remove )
|
||||
rm "/home/$user_/.config/anacron/spool/getFP"* &>/dev/null
|
||||
sed -i "/^\@hourly.*libflashplayer.anacrontab.*$/d" /etc/crontab
|
||||
rm "$fileAnacron"
|
||||
;;
|
||||
esac
|
||||
# version script en ligne, assigne $versionScript, $script_aJour=ok|ko,
|
||||
fscript_get_version(){
|
||||
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
|
||||
}
|
||||
|
||||
# version Flash en ligne & installée, si $1="quiet" pas d'affichage, $verFlash=x.y|na, $plugin_aJour=ok|ko
|
||||
fflash_get_version(){
|
||||
local verInstall="$(strings $dirInstall/libflashplayer.so | grep -Eo '[0-9]+_[0-9]+_[0-9]+_[0-9]+' | sed 's/_/./g')"
|
||||
plugin_aJour="ok"
|
||||
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__wget_test "$urlOnline"; fi # sortie script si erreur wget
|
||||
if [ $verFlash == "na" ]; then f__error "version FlashPlayer non accessible";
|
||||
else [ "$1" == "quiet" ] || f__info "version FlashPlayer en ligne: $verFlash"; fi
|
||||
if [ -z "$verInstall" ]; then
|
||||
f__info "FlashPlayer non installé"
|
||||
elif [ "$verInstall" == "$verFlash" ]; then
|
||||
[ "$1" == "quiet" ] || f__info "FlashPlayer à jour"
|
||||
else
|
||||
plugin_aJour="ko"
|
||||
[ "$1" == "quiet" ] || f__info "version FlashPlayer installée: $verInstall, mise à jour possible"
|
||||
fi
|
||||
# install du script dans le système
|
||||
fscript_install(){
|
||||
[ $EUID -eq 0 ] || f__error "vous devez être ROOT pour installer ce script dans le système"
|
||||
[ -e "/var/log/sdeb_getFlash.log" ] && mv "/var/log/sdeb_getFlash.log" "$fileLogs" # changement ancien logs
|
||||
f__requis "flashplugin-nonfree" "debOnly" || apt-get purge flashplugin-nonfree
|
||||
# install /opt
|
||||
mkdir -p /opt/bin/
|
||||
cp -d "$(basename $0)" "/opt/bin/$script"
|
||||
ln -s "/opt/bin/$script" "/usr/bin/$script" &>/dev/null
|
||||
chmod 755 "/opt/bin/$script"
|
||||
# cron/anacron install
|
||||
fscript_cronAnacron "install"
|
||||
# création fichier log
|
||||
touch "$fileLogs"
|
||||
chmod 644 "$fileLogs"
|
||||
chown "$user_": "$fileLogs" "/opt/bin/$script"
|
||||
[ -f "$script"_changelog.md ] || rm "$(basename $0)" &>/dev/null ## on efface pas si changelog (dev)
|
||||
f__info "$GREEN$script $version installé dans le système." "maintenant, appel du script par:$GREEN $script$BLUE (sans ./)"
|
||||
f__log "$script $version installé dans le système"
|
||||
exit 0
|
||||
}
|
||||
|
||||
# suppression du script dans le système
|
||||
fscript_remove(){
|
||||
[ $EUID -eq 0 ] || 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/bin/"$script" &>/dev/null
|
||||
unlink /usr/local/bin/"$script" &>/dev/null # ancienne localisation
|
||||
# cron/anacron remove
|
||||
fscript_cronAnacron "remove"
|
||||
f__info "$GREEN$script $version supprimé du système."
|
||||
f__log "$script $version supprimé du système"
|
||||
}
|
||||
|
||||
# pas beau ce soft :(
|
||||
|
@ -233,51 +239,57 @@ EOF
|
|||
echo -e " voir:$GREEN https://developer.mozilla.org/fr/docs/Plugins/Roadmap$COLOR\n"
|
||||
}
|
||||
|
||||
# version Flash en ligne & installée, si $1="quiet" pas d'affichage, $verFlash=x.y, $plugin_aJour=ko
|
||||
fflash_get_version(){
|
||||
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__wget_test "$urlOnline"; fi # sortie script si erreur wget
|
||||
if [ $verFlash == "na" ]; then f__error "version FlashPlayer non accessible";
|
||||
else [ "$1" == "quiet" ] || f__info "version FlashPlayer en ligne: $verFlash"; fi
|
||||
if [ ! -e "$dirInstall/libflashplayer.so" ]; then
|
||||
f__info "FlashPlayer non installé"
|
||||
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
|
||||
[ "$1" == "quiet" ] || f__info "FlashPlayer à jour"
|
||||
else
|
||||
plugin_aJour="ko"
|
||||
[ "$1" == "quiet" ] || f__info "version FlashPlayer installée: $verInstall, mise à jour possible"
|
||||
fi
|
||||
}
|
||||
|
||||
# affichage help
|
||||
fflash_help(){
|
||||
printf "$BLUE"
|
||||
cat << 'EOF'
|
||||
-----------------------------------------------------------------------
|
||||
./getFlashPlayer : installation du script dans le système, en ROOT
|
||||
|
||||
getFlashPlayer install : téléchargement & installation & update Flash
|
||||
getFlashPlayer install : téléchargement & installation de FlashPlashplayer
|
||||
getFlashPlayer remove : désinstallation de FlashPlayer
|
||||
getFlashPlayer version : version en ligne de FlashPlayer
|
||||
getFlashPlayer upgrade : MAJ si disponible, cron hebdomadaire
|
||||
getFlashPlayer upgrade : mise à jour plugin si disponible
|
||||
----
|
||||
getFlashPlayer manuel fichier.tar.gz : installation d'une archive manuellement
|
||||
----
|
||||
getFlashPlayer sysremove : désinstall du script du système, en ROOT
|
||||
./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
|
||||
getFlashPlayer -v, --version : version du script
|
||||
EOF
|
||||
printf "$COLOR"
|
||||
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.
|
||||
Il désinstallera le paquet flashplugin-nonfree si présent.
|
||||
Seul le plugin sera installé, en tant que plugin Mozilla Firefox.
|
||||
Il désinstallera le paquet flashplugin-nonfree si présent (debian).
|
||||
SEUL le plugin sera installé comme plugin Firefox.
|
||||
-----------------------------------------------------------------------
|
||||
EOF
|
||||
echo -e "plus d'infos:$GREEN https://kyodev.frama.io/kyopages/scripts/getFlashPlayer/$COLOR\n"
|
||||
}
|
||||
|
||||
# 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"
|
||||
}
|
||||
|
||||
# installation du plugin chargé manuellement, $1
|
||||
fflash_install_manuel(){
|
||||
if [ ! -e "$1" ]; then f__error "fichier plugin $1 introuvable"; fi
|
||||
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(){
|
||||
[ "$opType" == "upgrade" ] || fflash_avertissement
|
||||
|
@ -288,10 +300,9 @@ fflash_install(){
|
|||
else
|
||||
local file="flash_player_npapi_linux.$(getconf LONG_BIT).tar.gz"
|
||||
local dirTemp="/tmp/$script-$RANDOM/"
|
||||
if [ $verFlash == "na" ]; then fflash_get_version "quiet"; fi
|
||||
if [ -z $verFlash ]; then fflash_get_version "quiet"; fi
|
||||
f__info "installation FlashPlayer, version $verFlash"
|
||||
mkdir -p "$dirTemp"
|
||||
|
||||
# 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"
|
||||
|
@ -301,21 +312,31 @@ fflash_install(){
|
|||
# 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 répertoire temporaire
|
||||
mkdir -p "$dirInstall"
|
||||
cp -f "$dirTemp"libflashplayer.so "$dirInstall/"
|
||||
rm -Rf "$dirTemp"
|
||||
# droits user si jamais installation par root
|
||||
chown -R "$user_": "$dirInstall"
|
||||
|
||||
f__info "\n FlashPlayer $verFlash installé pour $user_" "\tPour tester: http://get.adobe.com/flashplayer/about/"
|
||||
f__log "FlashPlayer $verFlash installé pour $user_"
|
||||
}
|
||||
|
||||
# test et mise à jour plugin si plugin outdated
|
||||
fflash_upgrade(){
|
||||
if [ "$plugin_aJour" == "ko" ]; then fflash_install; fi
|
||||
# installation du plugin chargé manuellement, $1
|
||||
fflash_install_manuel(){
|
||||
if [ ! -e "$1" ]; then f__error "fichier plugin $1 introuvable"; fi
|
||||
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"
|
||||
}
|
||||
|
||||
# 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"
|
||||
}
|
||||
|
||||
# suppression du plugin
|
||||
|
@ -329,51 +350,58 @@ fflash_remove(){
|
|||
f__log "FlashPlayer $verInstall désinstallé pour $user_"
|
||||
}
|
||||
|
||||
#initialisation
|
||||
f__affichage
|
||||
f__user
|
||||
verFlash="na"
|
||||
f__requis "wget file tar"
|
||||
fileLogs="/var/log/sdeb_getFlash.log"
|
||||
dirInstall="/home/$user_/.mozilla/plugins"
|
||||
fileAnacron="$dirInstall/libflashplayer.anacrontab"
|
||||
|
||||
urlOnline="https://get.adobe.com/fr/flashplayer/" # test version & referer
|
||||
[ -e "$dirInstall/libflashplayer.so" ] && flash_installed="ok" || flash_installed="ko"
|
||||
|
||||
# installation du script si appel pas fait depuis le système
|
||||
dirname "$0" | grep -q 'bin' || fscript_install
|
||||
# détection droits inappropriés sur le script, cas de figure sur version de dev
|
||||
[ "$1" != "sysremove" ] && [ -e "/opt/bin/$script" ] && ls -l "/opt/bin/$script" | grep -q 'root' && f__error "bug sécu 01" \
|
||||
"veuillez désinstaller le script et le réinstaller" "voir: $urlNotice#supprimer-le-script"
|
||||
# détection ancien système de logs via syslog
|
||||
[ -w "$fileLogs" ] || f__info "pour bénéficier de la nouvelle version des logs, vous devriez réinstaller manuellement $script" \
|
||||
"voir https://kyodev.frama.io/kyopages/scripts/getFlashPlayer/#installation-rapide-du-script"
|
||||
|
||||
case "$1" in
|
||||
install )
|
||||
fflash_install;; # installation plugin
|
||||
remove )
|
||||
fflash_remove ;; # désinstallation plugin
|
||||
--version | -version ) ;; # affiche version script
|
||||
version )
|
||||
fflash_get_version
|
||||
fscript_get_version ;; # version plugin en ligne & installée
|
||||
sysremove )
|
||||
fscript_remove ;; # désinstallation du script
|
||||
upgrade )
|
||||
# test et mise à jour plugin si plugin outdated
|
||||
fflash_upgrade(){
|
||||
if [ "$plugin_aJour" == "ko" ]; then
|
||||
opType="upgrade"
|
||||
f__log="tests mise à jour"
|
||||
fscript_get_version
|
||||
fscript_dl
|
||||
[ "$flash_installed" == "ko" ] && exit 0
|
||||
fflash_get_version
|
||||
fflash_upgrade ;; # upgrade script et plugin si installé
|
||||
manuel )
|
||||
fflash_install_manuel "$2" ;; # installation manuelle d'un chargement
|
||||
* )
|
||||
fflash_help
|
||||
fflash_avertissement ;; # affichage help par défaut
|
||||
esac
|
||||
fflash_install
|
||||
fi
|
||||
}
|
||||
|
||||
#initialisation
|
||||
PATH='/usr/sbin:/usr/bin:/sbin:/bin' ; IFS=' '
|
||||
f__affichage
|
||||
f__user || f__error "échec détection user"
|
||||
f__requis "wget file tar"
|
||||
|
||||
fileLogs="/var/log/sdeb_$script.log"
|
||||
dirInstall="/home/$user_/.mozilla/plugins"
|
||||
urlOnline="https://get.adobe.com/fr/flashplayer/" # test version & referer
|
||||
|
||||
[ "$(stat -c %G /opt/bin/$script)" == "root" ] && problemDetected+="-1" # droits inappropriés sur le script, version de dev
|
||||
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"
|
||||
|
||||
for i in "$options"; do
|
||||
case "$i" in
|
||||
install ) fflash_install ;; # installation plugin
|
||||
remove ) fflash_remove ;; # désinstallation plugin
|
||||
version ) fflash_get_version ;; # version plugin en ligne & installée
|
||||
upgrade ) fflash_upgrade ;; # upgrade plugin si installé
|
||||
manuel ) fflash_install_manuel "$2" ;; # installation manuelle d'un chargement
|
||||
"" ) if ! dirname "$0" | grep -q 'bin' ; then # installation du script dans le système
|
||||
fscript_install; fi
|
||||
;;
|
||||
-r | --remove | sysremove ) fscript_remove ;; # désinstallation du script
|
||||
-u | --upgrade ) # upgrade script et plugin
|
||||
fscript_get_version
|
||||
fscript_dl
|
||||
fflash_upgrade
|
||||
;;
|
||||
--version | -v | --versions ) fscript_get_version ;; # affiche version script
|
||||
--help | -h | * ) # affichage help
|
||||
fflash_help
|
||||
fflash_avertissement
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
exit 0
|
||||
|
||||
wget -O getFlashPlayer https://framagit.org/kyodev/kyopages/raw/master/scripts/getFlashPlayer
|
||||
chmod +x getFlashPlayer && ./getFlashPlayer
|
||||
|
|
|
@ -1,5 +1,19 @@
|
|||
# changelog getFlashPlayer
|
||||
|
||||
## todo
|
||||
|
||||
|
||||
## 3.0.0 16/08/2017
|
||||
|
||||
* changement pour homogénéisation des options d'appel du script
|
||||
* révision et homogénéisation des fonctions de script , localisation anacrontab
|
||||
**réinstallation manuelle nécessaire (root)**
|
||||
* révision chmod
|
||||
* lancement cron restart (bien que inutile?) à l'installation et à la suppression du script
|
||||
* fix bug critique: maj non fonctionnelle avec fonction f__user récente.. :(
|
||||
* révision f__user
|
||||
* révision f__requis
|
||||
|
||||
## 2.9.0 31/07/2017
|
||||
|
||||
* fix bug: détection user sous gnome
|
||||
|
|
Loading…
Reference in New Issue