kyopages/scripts/getFlashPlayer

577 lines
23 KiB
Plaintext
Raw Normal View History

2017-06-06 02:43:07 +02:00
#!/bin/bash
2017-10-17 00:02:38 +02:00
version=3.17.0
date="16/10/2017"
2017-08-16 11:42:46 +02:00
projet="simpledeb"
2017-08-26 09:07:14 +02:00
contact="IRC freenode ##sdeb ou https://framagit.org/kyodev/kyopages/issues/"
2017-06-10 00:21:43 +02:00
script="getFlashPlayer"
2017-07-13 01:13:52 +02:00
urlScript="https://framagit.org/kyodev/kyopages/raw/master/scripts/getFlashPlayer"
2017-07-18 21:45:59 +02:00
urlNotice="https://kyodev.frama.io/kyopages/scripts/getFlashPlayer/"
2017-08-17 12:09:14 +02:00
user_agent="Mozilla/5.0 Firefox"
2017-07-13 01:13:52 +02:00
2017-06-10 21:16:48 +02:00
##### license LPRAB/WTFPL
2017-08-16 11:42:46 +02:00
# auteur: simpledeb
2017-07-25 00:27:27 +02:00
# contributeurs: kyodev, coyotus, naguam
2017-06-06 02:43:07 +02:00
#####
2017-10-09 20:22:15 +02:00
f__affichage(){ # 08/10/2017
f__color
2017-07-27 23:26:40 +02:00
clear
printf "$BLUE"
2017-06-06 20:04:42 +02:00
cat << 'EOF'
2017-06-06 02:43:07 +02:00
_ _____ _ _ ____ _
__ _ ___| |_| ___| | __ _ ___| |__ | _ \| | __ _ _ _ ___ _ __
/ _' |/ _ \ __| |_ | |/ _' / __| '_ \| |_) | |/ _' | | | |/ _ \ '__|
| (_| | __/ |_| _| | | (_| \__ \ | | | __/| | (_| | |_| | __/ |
\__, |\___|\__|_| |_|\__,_|___/_| |_|_| |_|\__,_|\__, |\___|_|
|___/ |___/
EOF
2017-10-09 20:22:15 +02:00
echo -e "$YELLOW pour Firefox, version $version - $date$STD\n"
2017-07-27 23:26:40 +02:00
}
2017-06-06 02:43:07 +02:00
2017-08-30 22:43:36 +02:00
# test validité archive, $1 archive, assigne $archive_detect (gzip|xz|deb|zip), return 1 si inconnue
2017-09-23 11:46:04 +02:00
f__archive_test(){ # 30/08/2017
2017-08-30 22:43:36 +02:00
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
2017-07-28 20:18:25 +02:00
}
2017-10-09 20:22:15 +02:00
f__color(){ # 08/10/2017
YELLOW=$(tput setaf 3) # question
GREEN=$(tput setaf 2) # ok
BLUE=$(tput setaf 4) # info
RED=$(tput setaf 1) # alerte
STD=$(tput sgr0) # retour normal
MAGENTA=$(tput setaf 5)
CYAN=$(tput setaf 6)
BOLD=$(tput bold)
ITAL=$(tput sitm)
SOUL=$(tput smul)
}
2017-08-26 09:07:14 +02:00
# affichage $1 en rouge, $1++ optionnels en bleu, sortie script sur erreur, log $1 si $opType=upgrade
2017-10-17 00:02:38 +02:00
f__error(){ # 15/10/2017
2017-10-09 20:22:15 +02:00
echo -e "\n$RED $script $version, erreur critique: $1 $STD"
for (( i=2 ; i<=$# ; i++ )); do
echo -e " $BLUE${!i}$STD"
done
echo
2017-07-28 20:18:25 +02:00
if [ "$opType" == "upgrade" ]; then f__log "$script $version: $1"; fi
2017-06-06 20:04:42 +02:00
exit 1
2017-06-06 02:43:07 +02:00
}
2017-10-09 20:22:15 +02:00
# affichage des paramètres en bleu, si $1=raw pas de ligne vide à la fin, si $1=log alors uniquement $2 logué
2017-10-17 00:02:38 +02:00
f__info(){ # 15/10/2017
local depart=1 i
2017-08-26 09:07:14 +02:00
if [ "$1" == "raw" ] || [ "$1" == "log" ]; then depart=2; fi
2017-08-21 19:04:11 +02:00
[ "$1" == "log" ] && f__log "$(sed -E 's/\\t//;s/\\n// ' <<< $2 | xargs )"
2017-10-09 20:22:15 +02:00
for (( i=$depart ; i<=$# ; i++ )); do
echo -e " $BLUE${!i}$STD"
done
[ "$1" == raw ] || echo
2017-06-21 20:15:27 +02:00
}
2017-08-16 11:42:46 +02:00
# log spécifique, fichier log limité à 10000octets, $1 message à loguer
2017-10-09 20:22:15 +02:00
f__log(){ # 08/09/2017
2017-08-16 11:42:46 +02:00
if [ -w "$fileLogs" ]; then
if [ "$(stat -c %s $fileLogs)" -ge "10000" ]; then
echo "$(date +%Y%m%d\ %H%M%S) $1" &>/dev/null > "$fileLogs"
else
echo "$(date +%Y%m%d\ %H%M%S) $1" &>/dev/null >> "$fileLogs"
fi
2017-08-17 07:59:24 +02:00
else
2017-09-09 20:23:47 +02:00
f__info "$fileLogs doit être activé" "Réinstaller un script plus récent" \
"voir $GREEN""$urlNotice#installation-rapide-du-script"
2017-08-16 11:42:46 +02:00
fi
}
2017-10-09 20:22:15 +02:00
# $1=cmd si $2: nb de tentatives pour s'identifier, sinon 1 tentative par défaut
2017-10-12 08:42:05 +02:00
f__sudo(){ # 11/10/2017
2017-10-09 20:22:15 +02:00
local nb=1 sudo isudo
# sudo --shell bash équivalent su ?
if sudo -v &>/dev/null && [ $EUID -ne 0 ] ; then
2017-10-12 08:42:05 +02:00
sudo="sudo su --shell $(which bash) --preserve-environment -c "
2017-10-09 20:22:15 +02:00
else
sudo="su --shell $(which bash) --preserve-environment -c "
fi
[ "$2" ] && nb="$2"
for (( isudo=1 ; isudo<="$nb" ; isudo++ )); do
$sudo " $1"
[ "$?" == 0 ] && break
[ "$isudo" == "$nb" ] && return 1
done
}
2017-08-16 19:31:27 +02:00
# test dépendances/paquets, $1 liste commande[>paquet] (ex: killall>psmisc)
2017-08-18 20:16:14 +02:00
# si manque, SORTIE & info commandes manquantes, si debian, SORTIE & proposition paquet à installer
2017-08-16 19:31:27 +02:00
# si $2=debOnly et si paquets manquants: return 1 et $debOnlyPackages ( $1=liste paquets )
# si $2=debOnly et si paquets présent: return 0 et $debOnlyPresents ( $1=liste paquets )
# attention priorité $debOnlyPackages sur $debOnlyPresents
2017-10-17 00:02:38 +02:00
f__requis(){ # 15/10/2017
local dependsMissing packagesMissing command package i
2017-08-16 19:31:27 +02:00
unset debOnlyPackages debOnlyPresents
2017-08-16 11:42:46 +02:00
for i in $1; do
2017-08-30 22:43:36 +02:00
command="$(cut -d '>' -f 1 <<< $i)"
package="$(cut -d '>' -f 2 <<< $i)"
2017-08-16 19:31:27 +02:00
if [ "$2" == "debOnly" ]; then
if [ "$(which dpkg)" ]; then # package only et debian
LC_ALL=C dpkg --get-selections | grep -qE "^$package[[:space:]]+install" \
&& debOnlyPresents+="$package " || debOnlyPackages+="$package "
else f__error "dpkg n'est pas disponible sur ce système"; fi
elif [ -z "$(which $command)" ]; then
2017-08-16 11:42:46 +02:00
dependsMissing+="$command "
packagesMissing+="$package "
2017-07-17 13:38:04 +02:00
fi
done
2017-08-17 12:09:14 +02:00
[ "$debOnlyPackages" ] && debOnlyPackages="$(xargs <<< $debOnlyPackages)" # trim début & fin
[ "$debOnlyPresents" ] && debOnlyPresents="$(xargs <<< $debOnlyPresents)" # trim début & fin
2017-08-16 19:31:27 +02:00
[ "$debOnlyPackages" ] && return 1
[ "$debOnlyPresents" ] && return 0
2017-08-16 11:42:46 +02:00
if [ "$dependsMissing" ]; then
if [ -e /etc/debian_version ]; then f__error "paquet(s) manquant(s): " " $dependsMissing" \
" vous devriez exécuter:$GREEN apt install $packagesMissing"
2017-10-17 00:02:38 +02:00
else f__error "commandes(s) manquante(s): " "$dependsMissing"; fi # -> exit
return 1
2017-08-16 11:42:46 +02:00
fi
2017-07-17 13:38:04 +02:00
}
2017-08-21 19:04:11 +02:00
# user ayant initié la session graphique, assigne $user_
# return 1 sur échec identification user, return 2 sur absence home/
2017-08-16 11:42:46 +02:00
# gestion variable environnement user avec: USER_INSTALL=user script
2017-10-09 20:22:15 +02:00
f__user(){ # 06/10/2017
local user_id test root_login
root_login="$(grep ':0:' /etc/passwd | cut -d':' -f1)" || root_login="root"
2017-08-21 19:04:11 +02:00
if [ "$USER_INSTALL" ]; then # user_ via variable environnement, moyen d'injecter root
user_="$USER_INSTALL";
return 0
2017-10-09 20:22:15 +02:00
elif [[ "$TERM" =~ linux ]]; then #debian 9 recovery ou nomodeset TERM=linux
if [ "$USER" ]; then
user_="$USER"
elif [ "$EUID" -eq 0 ]; then
user_="$root_login"
return 0
fi
2017-08-16 11:42:46 +02:00
fi
2017-08-21 19:04:11 +02:00
if [ "$SUDO_UID" ]; then
user_id="$SUDO_UID";
elif grep -qEo '[0-9]+' <<< "$XDG_RUNTIME_DIR" ; then
user_id="$(grep -Eo '[0-9]+' <<< $XDG_RUNTIME_DIR | cut -d'/' -f4)"
elif grep -qEo '[0-9]+' <<< "$XAUTHORITY" ; then
user_id="$(grep -Eo '[0-9]+' <<< $XAUTHORITY | cut -d'/' -f4)"
2017-08-16 11:42:46 +02:00
fi
2017-08-21 19:04:11 +02:00
[ "$user_id" ] && user_="$(grep $user_id /etc/passwd | cut -d ":" -f 1 )"
if [ "$user_" ] && [ "$user_" != "$root_login" ]; then
return 0
else
if [ "$SUDO_USER" ] && [ "$SUDO_USER" != "$root_login" ]; then
user_="$SUDO_USER";
elif grep -qv 'root' <<< "$(who)"; then
2017-10-09 20:22:15 +02:00
user_="$(grep -v 'root' <<< $(who) | head -n1 | cut -d ' ' -f1)"; # grep -v 'root' <<< $(who) | awk 'FNR==1{print $1}'
2017-08-21 19:04:11 +02:00
elif grep -q 'hourly.*get[A-Z].*\.anacrontab.*\.config/anacron/spool' /etc/crontab; then
2017-10-09 20:22:15 +02:00
user_="$(grep 'hourly.*get[A-Z].*\.anacrontab.*\.config/anacron/spool' /etc/crontab | head -n1 | cut -d' ' -f2)"; # grep 'hourly.*get[A-Z].*\.anacrontab.*\.config/anacron/spool' /etc/crontab | awk 'FNR==1{print $2}
2017-08-21 19:04:11 +02:00
fi
2017-08-16 11:42:46 +02:00
fi
2017-08-21 19:04:11 +02:00
if [ -z "$user_" ]; then return 1; fi
if [ ! -d "/home/$user_" ]; then return 2; fi
return 0
2017-06-06 20:04:42 +02:00
}
2017-06-06 02:43:07 +02:00
2017-10-09 20:22:15 +02:00
# test wget, $1 url à tester, sortie du script si $1 seul (même si url testée ok)
2017-08-28 10:08:16 +02:00
# si $2=print affiche url testée & entêtes http & location (si présente) et sortie normale fonction
2017-10-09 20:22:15 +02:00
# si $2=loc affiche seulement location et sortie normale fonction
# si $2=test return 0 si ok, return 1 si ko
2017-10-17 00:02:38 +02:00
f__wget_test(){ # 15/10/2017
2017-08-30 22:43:36 +02:00
local file_test_wget retourWget retourHttp location
2017-10-09 20:22:15 +02:00
file_test_wget="/tmp/testWget-$$-$RANDOM"
wget -Sq --tries=1 --timeout=10 --user-agent="$user_agent" --spider --save-headers "$1" &>"$file_test_wget"
retourWget="$?"
[ "$2" == "test" ] && rm "$file_test_wget"
[ "$2" == "test" ] && [ "$retourWget" == "0" ] && return 0 || return 1
2017-08-26 09:07:14 +02:00
[ "$retourWget" == 1 ] && retourWget="code erreur générique"
[ "$retourWget" == 2 ] && retourWget="parse erreur (ligne de commande?)"
[ "$retourWget" == 3 ] && retourWget="erreur Entrée/sortie fichier"
[ "$retourWget" == 4 ] && retourWget="défaut réseau"
[ "$retourWget" == 5 ] && retourWget="défaut vérification SSL"
[ "$retourWget" == 6 ] && retourWget="défaut authentification"
[ "$retourWget" == 7 ] && retourWget="erreur de protocole"
[ "$retourWget" == 8 ] && retourWget="réponse serveur en erreur"
2017-08-30 22:43:36 +02:00
retourHttp="$(grep -i 'HTTP/' "$file_test_wget" | tr -d '\n' | xargs)"
location="$(grep -i 'location' $file_test_wget | xargs)"
2017-09-09 20:23:47 +02:00
if [ "$2" == "print" ]; then
if [ "$retourWget" ]; then
2017-10-09 20:22:15 +02:00
echo "erreur wget: $RED$retourWget"
echo -e "$BLUE $1$STD\t$RED $retourHttp"
2017-09-09 20:23:47 +02:00
else
2017-10-09 20:22:15 +02:00
echo -e "$BLUE $1$STD\t$GREEN $retourHttp"
2017-09-09 20:23:47 +02:00
fi
fi
2017-10-09 20:22:15 +02:00
if [ "$2" == "print" ] || [ "$2" == "loc" ]; then
[ "$location" ] && echo "$YELLOW $location" || echo "$YELLOW no location"
echo "$STD"
return 0
2017-08-28 10:08:16 +02:00
fi
if [ "$retourWget" ]; then
rm "$file_test_wget"
2017-10-17 00:02:38 +02:00
f__error "erreur wget, $retourWget" "$1" "$YELLOW$retourHttp"
2017-08-28 10:08:16 +02:00
fi
2017-10-09 20:22:15 +02:00
if [ "$(grep -c '200' <<< $retourHttp)" -ne 0 ]; then
echo -e "$GREEN\ntout est ok, réessayer\n$STD"
fi
2017-08-26 09:07:14 +02:00
rm "$file_test_wget"
2017-08-28 10:08:16 +02:00
exit 0
2017-07-13 11:32:01 +02:00
}
2017-09-09 20:23:47 +02:00
# affichage help
2017-10-09 20:22:15 +02:00
f_help(){ # 08/10/2017
2017-09-09 20:23:47 +02:00
printf "$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 upgrade : mise à jour plugin si disponible
----
getFlashPlayer manuel fichier.tar.gz : installation manuelle d'une archive
----
./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 : versions du script
EOF
2017-10-09 20:22:15 +02:00
printf "$STD"
2017-09-09 20:23:47 +02:00
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 (debian).
SEUL le plugin sera installé comme plugin Firefox.
-----------------------------------------------------------------------
EOF
2017-10-09 20:22:15 +02:00
echo -e " plus d'infos: $GREEN https://kyodev.frama.io/kyopages/scripts/getFlashPlayer/\n"
2017-09-09 20:23:47 +02:00
}
2017-08-16 11:42:46 +02:00
# pas beau ce soft :(
2017-09-23 11:46:04 +02:00
fflash_avertissement(){ # 06/2017
2017-08-16 11:42:46 +02:00
cat << 'EOF'
FlashPlayer n'est pas libre, c'est un programme propriétaire dont on
ne peut pas connaître le code source, ni l'utiliser sans conditions,
ni le distribuer librement.
Il souffre de nombreuses vulnérabilités chroniques, depuis des années
sans que l'éditeur fasse beaucoup d'efforts pour corriger cela...
Il sera bloqué plus ou moins bloqué à terme pas les navigateurs majeurs,
c'est à dire Firefox et Chrom(ium). Préparez vous à cela...
EOF
2017-10-09 20:22:15 +02:00
echo -e " voir:$GREEN https://developer.mozilla.org/fr/docs/Plugins/Roadmap$STD\n"
2017-07-13 11:32:01 +02:00
}
2017-08-16 11:42:46 +02:00
# version Flash en ligne & installée, si $1="quiet" pas d'affichage, $verFlash=x.y, $plugin_aJour=ko
2017-09-23 11:46:04 +02:00
fflash_get_version(){ # 06/2017
2017-07-17 13:38:04 +02:00
verFlash="$(wget -q --tries=2 --timeout=15 --user-agent="$user_agent" -O - "$urlOnline" | \
sed -nr 's/^.*AUTO_ID.*Version[[:blank:]]+([0-9].*[0-9]).*$/\1/p')" || verFlash="na"
2017-07-26 13:15:00 +02:00
if [ "$?" != "0" ]; then f__wget_test "$urlOnline"; fi # sortie script si erreur wget
2017-07-17 03:14:54 +02:00
if [ $verFlash == "na" ]; then f__error "version FlashPlayer non accessible";
2017-07-28 20:18:25 +02:00
else [ "$1" == "quiet" ] || f__info "version FlashPlayer en ligne: $verFlash"; fi
2017-08-16 11:42:46 +02:00
if [ ! -e "$dirInstall/libflashplayer.so" ]; then
2017-07-26 13:15:00 +02:00
f__info "FlashPlayer non installé"
2017-08-16 11:42:46 +02:00
return 0
fi
# détection version du plugin installé
local verInstall="$(strings $dirInstall/libflashplayer.so | grep -Eo '[0-9]+_[0-9]+_[0-9]+_[0-9]+' | sed 's/_/./g')"
if [ "$verInstall" == "$verFlash" ]; then
2017-07-28 20:18:25 +02:00
[ "$1" == "quiet" ] || f__info "FlashPlayer à jour"
2017-07-13 11:32:01 +02:00
else
2017-07-25 00:27:27 +02:00
plugin_aJour="ko"
2017-07-28 20:18:25 +02:00
[ "$1" == "quiet" ] || f__info "version FlashPlayer installée: $verInstall, mise à jour possible"
2017-07-13 11:32:01 +02:00
fi
2017-06-06 20:04:42 +02:00
}
2017-06-06 02:43:07 +02:00
2017-07-26 13:15:00 +02:00
# install plugin dans config user mozilla, $1 manuel (install manuelle), $2 script à installer si install manuelle
2017-09-23 11:46:04 +02:00
fflash_install(){ # 06/09/2017
2017-08-30 22:43:36 +02:00
local dirTemp fileTemp
2017-07-26 13:15:00 +02:00
[ "$opType" == "upgrade" ] || fflash_avertissement
2017-07-17 03:14:54 +02:00
if [ "$1" == "manuel" ]; then
2017-08-20 03:11:59 +02:00
f__info "installation manuelle de $2"
2017-09-06 14:07:08 +02:00
dirTemp="$(dirname $2)/$script-$RANDOM"
2017-08-30 22:43:36 +02:00
fileTemp="$(basename $2)"
2017-07-13 17:08:36 +02:00
mkdir -p "$dirTemp"
else
2017-08-20 03:11:59 +02:00
[ -z $verFlash ] && fflash_get_version "quiet"
2017-07-28 20:18:25 +02:00
f__info "installation FlashPlayer, version $verFlash"
2017-09-06 14:07:08 +02:00
dirTemp="/tmp/$script-$RANDOM"
fileTemp="$dirTemp/flash_player_npapi_linux.$(getconf LONG_BIT).tar.gz"
2017-07-13 17:08:36 +02:00
mkdir -p "$dirTemp"
2017-07-17 13:38:04 +02:00
# détection/chargement/test archive plugin flashplayer
2017-08-20 03:11:59 +02:00
f__info " - téléchargement..."
2017-07-19 16:58:08 +02:00
fflash_recup_url_v1
2017-08-28 10:08:16 +02:00
wget -q --show-progress --tries=2 --timeout=15 --user-agent="$user_agent" --referer="$urlOnline" -O "$fileTemp" "$recup_url" 2>&1
2017-07-25 00:27:27 +02:00
if [ "$?" != "0" ]; then f__wget_test "$recup_url"; fi
2017-08-20 03:11:59 +02:00
f__archive_test "$fileTemp" || f__error " Le fichier $fileTemp n'est pas une archive tar.gz valide"
2017-06-08 14:09:19 +02:00
fi
# décompression archive téléchargée dans dossier de travail
2017-08-20 03:11:59 +02:00
f__info " - décompression..."
2017-09-06 14:07:08 +02:00
tar -xaf "$fileTemp" -C "$dirTemp/"
2017-07-17 03:14:54 +02:00
if [ "$1" == "manuel" ]; then verFlash="$(strings $dirTemp/libflashplayer.so | grep -Eo '[0-9]+_[0-9]+_[0-9]+_[0-9]+' | sed 's/_/./g')"; fi
2017-07-25 00:27:27 +02:00
# copie de la bibliothèque flash dans plugins/ user mozilla, effacement répertoire temporaire
mkdir -p "$dirInstall"
2017-09-06 14:07:08 +02:00
cp -f "$dirTemp/libflashplayer.so" "$dirInstall/"
rm -Rf "$dirTemp/"
2017-07-17 03:14:54 +02:00
# droits user si jamais installation par root
2017-09-06 14:07:08 +02:00
chown -R "$user_:" "$dirInstall"
2017-08-27 09:54:03 +02:00
f__info "log" "FlashPlayer $verFlash installé pour $user_" "\tPour tester$YELLOW: http://get.adobe.com/flashplayer/about/"
2017-07-13 11:32:01 +02:00
}
2017-08-16 11:42:46 +02:00
# installation du plugin chargé manuellement, $1
2017-09-23 11:46:04 +02:00
fflash_install_manuel(){ # 16/08/2017
2017-08-20 03:11:59 +02:00
[ -e "$1" ] || f__error "fichier plugin $1 introuvable"
f__archive_test "$1" || f__error "Le fichier $1 n'est pas une archive valide"
2017-08-16 11:42:46 +02:00
fflash_install "manuel" "$1"
2017-08-27 09:54:03 +02:00
[ -e "$fileDev" ] || rm "$1" &>/dev/null ## on efface pas si fileDev (dev)
2017-08-16 11:42:46 +02:00
}
# calcul url téléchargement plugin, assigne $recup_url,
2017-09-23 11:46:04 +02:00
fflash_recup_url_v1(){ # 30/08/2017
2017-08-30 22:43:36 +02:00
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';
2017-08-16 11:42:46 +02:00
else f__error "architecture non reconnue" ; fi
recup_url="$recup1$verFlash/flash_player_npapi_linux.$recup2.tar.gz"
2017-06-08 14:09:19 +02:00
}
2017-06-06 02:43:07 +02:00
2017-06-21 20:15:27 +02:00
# suppression du plugin
2017-09-23 11:46:04 +02:00
fflash_remove(){ # 06/2017
2017-07-26 13:15:00 +02:00
[ -e /home/kyodev/.mozilla/plugins/libflashplayer.so ] || f__error "FlashPlayer inexistant pour $user_\n"
2017-07-30 16:32:22 +02:00
local verInstall="$(strings $dirInstall/libflashplayer.so | grep -Eo '[0-9]+_[0-9]+_[0-9]+_[0-9]+' | sed 's/_/./g')"
rm "$dirInstall/libflashplayer.so"
rm "$dirInstall/libflashplayer.maj" &>/dev/null # ancien fichier éventuel
rm "$dirInstall/libflashplayer.version" &>/dev/null # ancien fichier éventuel
2017-08-21 19:04:11 +02:00
f__info "log" "FlashPlayer $verInstall désinstallé pour $user_"
2017-07-13 01:13:52 +02:00
}
2017-06-10 21:16:48 +02:00
2017-08-16 11:42:46 +02:00
# test et mise à jour plugin si plugin outdated
2017-09-23 11:46:04 +02:00
fflash_upgrade(){ # 30/08/2017
2017-08-16 23:55:56 +02:00
fflash_get_version
2017-08-16 11:42:46 +02:00
if [ "$plugin_aJour" == "ko" ]; then
fflash_install
2017-08-30 01:03:47 +02:00
else f__info "log" "pas de mise à jour disponible pour Flash"; fi
2017-08-16 11:42:46 +02:00
}
2017-10-09 20:22:15 +02:00
# spécifique script
fscript_cronAnacron_special(){ # 19/08/2017
rm "/home/$user_/.mozilla/plugins/libflashplayer.anacrontab" &>/dev/null # ancienne localisation
rm "/home/$user_/.config/anacron/spool/getFP"* &>/dev/null # ancien job
[ $EUID -eq 0 ] && sed -i "/libflashplayer.anacrontab/d" /etc/crontab # ancienne localisation anacrontab
}
# spécifique script
fscript_install_special(){ # 25/08/2017
[ -e "/var/log/sdeb_getFlash.log" ] && mv "/var/log/sdeb_getFlash.log" "$fileLogs" # changement ancien logs
if f__requis "flashplugin-nonfree" "debOnly" && [ "$debOnlyPresents" ]; then
apt-get purge flashplugin-nonfree
fi
}
2017-08-28 10:08:16 +02:00
# inscription dans tache upgrade en anacron hebdomadaire, via cron horaire, $1=upgrade|install|remove
2017-09-23 11:46:04 +02:00
fscript_cronAnacron(){ # 06/09/2017
2017-08-30 22:43:36 +02:00
local dirAnacron dirSpool fileAnacron
2017-08-26 09:07:14 +02:00
[ "$(type -t fscript_cronAnacron_special)" ] && fscript_cronAnacron_special # test, si fonction spécifique, appel
2017-08-30 22:43:36 +02:00
dirAnacron="/home/$user_/.config/anacron"
dirSpool="$dirAnacron/spool"
fileAnacron="$dirAnacron/$script.anacrontab"
2017-09-06 14:07:08 +02:00
[ "$EUID" -eq 0 ] && sed -i "/$script.anacrontab/d" /etc/crontab
2017-08-26 09:07:14 +02:00
case "$1" in
install | upgrade )
mkdir -p "$dirAnacron"
# table anacron
echo "7 10 $script nice /opt/bin/$script --upgrade 1>/dev/null" > "$fileAnacron" # juste erreurs en syslog
## anacron journalier pour dev logname
2017-08-27 09:54:03 +02:00
if [ -e "$fileDev" ]; then
echo "1 00 $script""Dev nice /opt/bin/$script --upgrade 1>/dev/null" >> "$fileAnacron"
2017-08-26 09:07:14 +02:00
fi
# création spool anacron utilisateur
mkdir -p "$dirSpool"
2017-09-06 14:07:08 +02:00
chown -R "$user_:" "$dirAnacron" "$dirSpool"
if [ "$EUID" -eq 0 ]; then
2017-08-26 09:07:14 +02:00
# crontab pour activation horaire anacron
echo "@hourly $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"
;;
remove )
rm "$dirSpool/$script"* &>/dev/null
rm "$fileAnacron" &>/dev/null
rmdir "$dirSpool" "$dirAnacron" &>/dev/null
;;
esac
}
# version script en ligne, assigne $versionScript, $script_aJour=ok|ko
2017-10-09 20:22:15 +02:00
fscript_get_version(){ # 08/10/2017
2017-08-26 23:43:19 +02:00
f__info "raw" "$GREEN""version script en cours: $version"
2017-08-26 09:07:14 +02:00
versionScript="$(wget -q --tries=2 --timeout=15 -O - "$urlScript" | grep '^version=' | cut -d '=' -f 2)"
if [ "$versionScript" ]; then
if [ "$version" != "$versionScript" ]; then
f__info "version script en ligne: $versionScript, mise à jour possible"
script_aJour="ko"
else
f__info "version script en ligne: $versionScript"
script_aJour="ok"
fi
2017-09-09 20:23:47 +02:00
else f__info "version script en ligne $RED""non accessible"; fi
2017-08-26 09:07:14 +02:00
}
# installation du script dans le système
2017-10-09 20:22:15 +02:00
fscript_install(){ # 08/10/2017
2017-08-30 01:03:47 +02:00
if grep -q 'bin' <<< "$(dirname $0)" ; then
2017-10-09 20:22:15 +02:00
f__info "$RED""l'installation dans le système doit se faire depuis un script local $GREEN(./$script -i )"
return 1
2017-08-26 09:07:14 +02:00
fi
2017-09-06 14:07:08 +02:00
if [ "$EUID" -ne 0 ]; then
2017-10-09 20:22:15 +02:00
f__info "vous devez être$RED ROOT$BLUE pour installer ce script dans le système"
f__sudo "exec $0 -i"
return $?
2017-08-30 01:03:47 +02:00
fi
[ "$(type -t fscript_install_special)" ] && fscript_install_special # test, si fonction spécifique, appel
2017-08-26 09:07:14 +02:00
f__requis "wget anacron cron"
# install /opt
mkdir -p /opt/bin/
cp -d "$(basename $0)" "/opt/bin/$script"
ln -s "/opt/bin/$script" "/usr/bin/$script" &>/dev/null
2017-10-09 20:22:15 +02:00
chmod 775 "/opt/bin/$script" # rwx rwx r-x, proprio user_
2017-08-26 09:07:14 +02:00
# cron/anacron install
fscript_cronAnacron "install"
# création fichier log
touch "$fileLogs"
2017-10-09 20:22:15 +02:00
chmod 664 "$fileLogs" # rw- rw- r--, proprio user_
2017-09-06 14:07:08 +02:00
chown "$user_:" "$fileLogs" "/opt/bin/$script"
2017-08-27 09:54:03 +02:00
[ -e "$fileDev" ] || rm "$(basename $0)" &>/dev/null ## on efface pas si fileDev (dev)
2017-10-09 20:22:15 +02:00
f__info "log" "$script $version installé dans le système." "maintenant, appel du script par: $GREEN$script$BLUE (sans ./)"
2017-08-26 10:24:17 +02:00
}
2017-08-26 09:07:14 +02:00
# suppression du script dans le système
2017-10-09 20:22:15 +02:00
fscript_remove(){ # 08/10/2017
2017-08-30 01:03:47 +02:00
if ! grep -q 'bin' <<< "$(dirname $0)" ; then
2017-10-09 20:22:15 +02:00
f__info "$RED""cette fonction doit être appelée depuis le script installé dans le système $GREEN($script -r)"
2017-08-30 01:03:47 +02:00
return 1
fi
if [ ! -x "/opt/bin/$script" ];then
2017-10-09 20:22:15 +02:00
f__info "$RED$script n'est pas installé"
return 1
2017-08-30 01:03:47 +02:00
fi
2017-09-06 14:07:08 +02:00
if [ "$EUID" -ne 0 ]; then
2017-10-09 20:22:15 +02:00
f__info "vous devez être$RED ROOT$BLUE pour supprimer ce script dans le système"
f__sudo "exec $0 -r"
return $?
2017-08-30 01:03:47 +02:00
fi
2017-10-09 20:22:15 +02:00
[ "$(type -t fscript_remove_special)" ] && fscript_remove_special # test, si fonction spécifique, appel
2017-08-26 09:07:14 +02:00
# suppression de /opt
2017-09-06 14:07:08 +02:00
rm "/opt/bin/$script" &>/dev/null
unlink "/usr/bin/$script" &>/dev/null
2017-08-26 09:07:14 +02:00
# cron/anacron remove
fscript_cronAnacron "remove"
f__info "log" "$script $version supprimé du système."
}
# mise à jour script si dispo
2017-10-09 20:22:15 +02:00
fscript_update(){ # 08/10/2017
2017-08-30 01:03:47 +02:00
if ! grep -q 'bin' <<< "$(dirname $0)" ; then
2017-10-09 20:22:15 +02:00
f__info "$RED""cette fonction doit être appelée depuis le script installé dans le système $GREEN($script -u)"
2017-09-06 14:07:08 +02:00
return
2017-08-30 01:03:47 +02:00
fi
2017-10-09 20:22:15 +02:00
[ "$(type -t fscript_update_special)" ] && fscript_update_special # test, si fonction spécifique, appel
2017-08-26 09:07:14 +02:00
fscript_get_version
if [ "$script_aJour" == "ok" ]; then
2017-08-30 01:03:47 +02:00
f__info "log" "pas de mise à jour disponible pour $script $version"
2017-08-26 09:07:14 +02:00
return 0
fi
2017-09-06 14:07:08 +02:00
local dirTemp="/tmp/$script-$RANDOM"
2017-08-26 09:07:14 +02:00
mkdir -p "$dirTemp"
2017-09-06 14:07:08 +02:00
wget -q --tries=2 --timeout=15 -O "$dirTemp/$script" "$urlScript"
2017-08-26 09:07:14 +02:00
if [ "$?" != "0" ]; then f__wget_test "$urlScript"; fi
2017-10-09 20:22:15 +02:00
chmod 775 "/opt/bin/$script" # rwx rwx r-x, proprio user_
2017-09-06 14:07:08 +02:00
chown "$user_:" "$dirTemp/$script"
cp -d "$dirTemp/$script" "/opt/bin/$script"
rm -rf "$dirTemp/"
2017-08-26 09:07:14 +02:00
fscript_cronAnacron "upgrade"
2017-08-26 23:43:19 +02:00
f__info "log" "$script mis à jour en version $versionScript"
2017-08-26 09:07:14 +02:00
}
2017-06-21 20:15:27 +02:00
#initialisation
2017-09-04 13:37:27 +02:00
PATH='/usr/sbin:/usr/bin:/sbin:/bin'; TERM=xterm; IFS=$' \t\n'
export PATH TERM IFS
2017-10-09 20:22:15 +02:00
2017-07-27 23:26:40 +02:00
f__affichage
2017-10-09 20:22:15 +02:00
f__user
retourFUser="$?"
[ "$retourFUser" -eq 1 ] && f__error "user indéterminé"
[ "$retourFUser" -eq 2 ] && f__error "user détecté, mais pas de home: /home/$user_"
[ "$(grep -o 'version 4' <<< $(bash --version) | sed 's/version //')" -ge "4" ] || f__error "bash version 4"
2017-08-26 09:07:14 +02:00
f__requis "file tar" # requis pour fonctionnement programme
2017-07-30 16:32:22 +02:00
2017-08-16 11:42:46 +02:00
fileLogs="/var/log/sdeb_$script.log"
2017-08-28 10:08:16 +02:00
fileDev="/opt/bin/fileDev"
2017-08-16 11:42:46 +02:00
dirInstall="/home/$user_/.mozilla/plugins"
2017-07-26 13:15:00 +02:00
urlOnline="https://get.adobe.com/fr/flashplayer/" # test version & referer
2017-06-06 02:43:07 +02:00
2017-08-16 19:43:54 +02:00
[ -e "/opt/bin/$script" ] && [ "$(stat -c %G /opt/bin/$script)" == "root" ] && problemDetected+="-1" # droits inappropriés sur le script, version de dev
2017-08-27 09:54:03 +02:00
options=$@
2017-09-23 11:46:04 +02:00
if [ "$(dirname $0)" == "." ] && [ ! -e "$fileDev" ]; then options="-i" # script install
2017-08-27 09:54:03 +02:00
else
2017-08-16 11:42:46 +02:00
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)" \
2017-09-09 20:23:47 +02:00
"veuillez réinstaller le script manuellement" "$GREEN""voir $urlNotice#messages-avertissement"
2017-08-16 11:42:46 +02:00
2017-09-23 11:46:04 +02:00
for j in $options; do
case $j in
2017-08-26 09:07:14 +02:00
install )
fflash_install
2017-08-27 09:54:03 +02:00
exit ;; # installation plugin
2017-08-26 09:07:14 +02:00
manuel )
fflash_install_manuel "$2"
2017-08-27 09:54:03 +02:00
exit ;; # installation manuelle d'un chargement
2017-08-26 09:07:14 +02:00
remove )
fflash_remove
2017-08-27 09:54:03 +02:00
exit ;; # désinstallation plugin
2017-08-26 09:07:14 +02:00
upgrade )
opType="upgrade"
2017-08-27 09:54:03 +02:00
fflash_upgrade
exit ;; # upgrade plugin si installé
2017-08-16 23:55:56 +02:00
version | versions )
fflash_get_version
2017-08-26 09:07:14 +02:00
fscript_get_version
2017-08-27 09:54:03 +02:00
exit ;; # version plugin en ligne & installée
-i )
2017-09-03 10:36:53 +02:00
fscript_install
2017-08-27 09:54:03 +02:00
exit ;; # installation du script dans le système
2017-08-26 09:07:14 +02:00
-r | --remove | sysremove )
2017-09-03 10:36:53 +02:00
fscript_remove
2017-08-27 09:54:03 +02:00
exit ;; # désinstallation du script
2017-08-20 03:11:59 +02:00
-u | --upgrade )
2017-08-18 20:16:14 +02:00
opType="upgrade"
2017-09-03 10:36:53 +02:00
fscript_update
2017-08-26 09:07:14 +02:00
$0 upgrade # on relance le script en upgrade pour le plugin
2017-08-26 23:43:19 +02:00
exit ;; # upgrade script et plugin
2017-08-26 09:07:14 +02:00
-v | --version )
2017-08-16 11:42:46 +02:00
fscript_get_version
2017-08-27 09:54:03 +02:00
exit ;; # version du script, en ligne et exécuté
2017-08-20 03:11:59 +02:00
-h | --help | * )
2017-08-30 01:03:47 +02:00
f_help
2017-08-26 09:07:14 +02:00
fflash_avertissement
2017-08-27 09:54:03 +02:00
exit ;; # affichage help
2017-08-16 11:42:46 +02:00
esac
done
2017-09-23 11:46:04 +02:00
unset j
2017-06-06 02:43:07 +02:00
exit 0
2017-08-16 11:42:46 +02:00
wget -O getFlashPlayer https://framagit.org/kyodev/kyopages/raw/master/scripts/getFlashPlayer
chmod +x getFlashPlayer && ./getFlashPlayer