getThunderbird 1.6.0

This commit is contained in:
kyodev 2017-12-05 14:26:25 +01:00
parent b39bfd7878
commit 4467445a3d
2 changed files with 271 additions and 209 deletions

View File

@ -1,47 +1,31 @@
#!/bin/bash #!/bin/bash
version=1.5.0 version=1.6.0
date="16/10/2017" date="5/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="getThunderbird" script="getThunderbird"
urlScript="https://framagit.org/kyodev/kyopages/raw/master/scripts/getThunderbird/"
urlNotice="https://kyodev.frama.io/kyopages/scripts/getThunderbird/"
user_agent="Mozilla/5.0 Firefox"
##### license LPRAB/WTFPL ##### license LPRAB/WTFPL
# auteur: simpledeb # auteur: simpledeb
# contributeurs: kyodev # contributeurs: kyodev
##### #####
f__affichage(){ # 08/10/2017 # détection architecture système, assigne $fu_archi: linux|linux64
f__color # return 1 on unknown architecture
clear # remarque, debian: dpkg --print-architecture affiche i386
printf "$BLUE" f__architecture(){ # 4/12/2017 SPÉCIFIQUE
cat << 'EOF'
_ _____ _ _ _ _ _
__ _ ___| ||_ _| |__ _ _ _ __ __| | ___ _ __| |__ (_)_ __ __| |
/ _' |/ _ \ __|| | | '_ \| | | | '_ \ / _' |/ _ \ '__| '_ \| | '__/ _' |
| (_| | __/ |_ | | | | | | |_| | | | | (_| | __/ | | |_) | | | | (_| |
\__, |\___|\__||_| |_| |_|\__,_|_| |_|\__,_|\___|_| |_.__/|_|_| \__,_|
|___/
EOF
echo -e "$YELLOW version $version - $date$STD\n"
}
# détection architecture, assigne $architecture : linux|linux64, return 1 si architecture inconnue
f__architecture(){ # 07/2017
case "$(uname -m)" in case "$(uname -m)" in
amd64 | x86_64 ) amd64 | x86_64 )
architecture="linux64";; fu_archi="linux64";;
i?86 | x86 ) i?86 | x86 )
architecture="linux";; fu_archi="linux";;
* ) * )
case "$(getconf LONG_BIT)" in case "$(getconf LONG_BIT)" in
64 ) 64 )
architecture="linux64";; fu_archi="linux64";;
32 ) 32 )
architecture="linux";; fu_archi="linux";;
*) *)
return 1 return 1
esac ;; esac ;;
@ -51,6 +35,7 @@ f__architecture(){ # 07/2017
# 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(){ # 30/08/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"
@ -73,7 +58,9 @@ f__color(){ # 08/10/2017
} }
# 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 $opType=upgrade
f__error(){ # 15/10/2017 f__error(){ # 4/12/2017
local depart=1 i
echo -e "\n$RED $script $version, erreur critique: $1 $STD" echo -e "\n$RED $script $version, erreur critique: $1 $STD"
for (( i=2 ; i<=$# ; i++ )); do for (( i=2 ; i<=$# ; i++ )); do
echo -e " $BLUE${!i}$STD" echo -e " $BLUE${!i}$STD"
@ -86,6 +73,7 @@ f__error(){ # 15/10/2017
# affichage des paramètres en bleu, si $1=raw pas de ligne vide à la fin, si $1=log alors uniquement $2 logué # 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 f__info(){ # 15/10/2017
local depart=1 i local depart=1 i
if [ "$1" == "raw" ] || [ "$1" == "log" ]; then depart=2; fi if [ "$1" == "raw" ] || [ "$1" == "log" ]; then depart=2; fi
[ "$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
@ -94,61 +82,66 @@ f__info(){ # 15/10/2017
[ "$1" == raw ] || echo [ "$1" == raw ] || echo
} }
# log spécifique, fichier log limité à 10000octets, $1 message à loguer # log spécifique, fichier log limité à 10000 octets, $1 message à loguer
f__log(){ # 08/09/2017 f__log(){ # 4/12/2017
if [ -w "$fileLogs" ]; then if [ -w "$scriptLogs" ]; then
if [ "$(stat -c %s $fileLogs)" -ge "10000" ]; then if [ "$(stat -c %s $scriptLogs)" -ge "10000" ]; then
echo "$(date +%Y%m%d\ %H%M%S) $1" &>/dev/null > "$fileLogs" echo "$(date +%Y%m%d\ %H%M%S) $1" &>/dev/null > "$scriptLogs"
else else
echo "$(date +%Y%m%d\ %H%M%S) $1" &>/dev/null >> "$fileLogs" echo "$(date +%Y%m%d\ %H%M%S) $1" &>/dev/null >> "$scriptLogs"
fi fi
else
f__info "$fileLogs doit être activé" "Réinstaller un script plus récent" \
"voir $GREEN""$urlNotice#installation-rapide-du-script"
fi fi
} }
# test dépendances/paquets, $1 liste commande[>paquet] (ex: killall>psmisc) # test dépendances/paquets, $1 liste commande[>paquet] (ex: killall>psmisc)
# si manque, SORTIE & info commandes manquantes, si debian, SORTIE & proposition paquet à installer # si manque, return 1 & info commandes manquantes, si debian proposition paquet à installer
# si $2=debOnly et si paquets manquants: return 1 et $debOnlyPackages ( $1=liste paquets ) # si $2=debOnly et si paquets manquants: return 1 et $debOnlyAbsent ( $1=liste paquets )
# si $2=debOnly et si paquets présent: return 0 et $debOnlyPresents ( $1=liste paquets ) # si $2=debOnly et si paquets présent: return 0 et $debOnlyPresent ( $1=liste paquets )
# attention priorité $debOnlyPackages sur $debOnlyPresents # attention priorité $debOnlyAbsent sur $debOnlyPresent
f__requis(){ # 15/10/2017 f__requis(){ # 4/12/2017
local dependsMissing packagesMissing command package i local dependsMissing packagesMissing command package ireq compteur pluriel
unset debOnlyPackages debOnlyPresents
for i in $1; do unset debOnlyAbsent debOnlyPresent
command="$(cut -d '>' -f 1 <<< $i)" for ireq in $1; do
package="$(cut -d '>' -f 2 <<< $i)" command="$(cut -d '>' -f 1 <<< $ireq)"
package="$(cut -d '>' -f 2 <<< $ireq)"
if [ "$2" == "debOnly" ]; then if [ "$2" == "debOnly" ]; then
if [ "$(which dpkg)" ]; then # package only et debian if type -p "dpkg" &>/dev/null ; then # package only et debian
LC_ALL=C dpkg --get-selections | grep -qE "^$package[[:space:]]+install" \ LC_ALL=C dpkg --get-selections | grep -qE "^$package[[:space:]]+install" \
&& debOnlyPresents+="$package " || debOnlyPackages+="$package " && debOnlyPresent+="$package " || debOnlyAbsent+="$package "
else f__error "dpkg n'est pas disponible sur ce système"; fi fi
elif [ -z "$(which $command)" ]; then elif ! type -p "$command" &>/dev/null ; then
dependsMissing+="$command " dependsMissing+="$command "
packagesMissing+="$package " packagesMissing+="$package "
fi fi
done done
[ "$debOnlyPackages" ] && debOnlyPackages="$(xargs <<< $debOnlyPackages)" # trim début & fin [ "$debOnlyAbsent" ] && debOnlyAbsent="$(xargs <<< $debOnlyAbsent)" # trim début & fin
[ "$debOnlyPresents" ] && debOnlyPresents="$(xargs <<< $debOnlyPresents)" # trim début & fin [ "$debOnlyPresent" ] && debOnlyPresent="$(xargs <<< $debOnlyPresent)" # trim début & fin
[ "$debOnlyPackages" ] && return 1 [ "$debOnlyAbsent" ] && return 1
[ "$debOnlyPresents" ] && return 0 [ "$debOnlyPresent" ] && return 0
if [ "$dependsMissing" ]; then if [ "$dependsMissing" ]; then
if [ -e /etc/debian_version ]; then f__error "paquet(s) manquant(s): " " $dependsMissing" \ compteur="$(wc -w <<< $dependsMissing)"
" vous devriez exécuter:$GREEN apt install $packagesMissing" [ "$compteur" -gt "1" ] && pluriel="s" || unset pluriel
else f__error "commandes(s) manquante(s): " "$dependsMissing"; fi # -> exit if [ -e /etc/debian_version ]; then
f__info "$RED""erreur critique: $compteur paquet"$pluriel" manquant"$pluriel": $STD$BOLD$dependsMissing" \
"\n vous devriez exécuter:$GREEN apt install $packagesMissing"
else
f__info "$RED""erreur critique: $compteur commande"$pluriel" manquante"$pluriel": $STD$BOLD$dependsMissing"
fi
return 1 return 1
fi fi
} }
# $1=cmd si $2: nb de tentatives pour s'identifier, sinon 1 tentative par défaut # $1=cmd si $2: nb de tentatives pour s'identifier, sinon 2 tentatives par défaut, suppose bash existant
f__sudo(){ # 11/10/2017 f__sudo(){ # 4/12/2017
local nb=1 sudo isudo local nb=2 sudo isudo toBash
[ $( type -p bash 2>/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 $(which bash) --preserve-environment -c " sudo="sudo su --shell $toBash --preserve-environment -c "
else else
sudo="su --shell $(which bash) --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
@ -158,70 +151,78 @@ f__sudo(){ # 11/10/2017
done done
} }
# user ayant initié la session graphique, assigne $user_ # user ayant initié la session graphique, assigne $fu_user
# return 1 sur échec identification user, return 2 sur absence home/ # return 1 sur échec identification user, return 2 sur absence home/
# gestion variable environnement user avec: USER_INSTALL=user script # gestion variable environnement user avec: USER_INSTALL=<user> script
f__user(){ # 06/10/2017 f__user(){ # 3/12/2017
local user_id test root_login local user userid test root_login
root_login="$(grep ':0:' /etc/passwd | cut -d':' -f1)" || root_login="root" root_login="$(grep ':0:' /etc/passwd | cut -d':' -f1)" || root_login="root"
if [ "$USER_INSTALL" ]; then # user_ via variable environnement, moyen d'injecter root if [ "$USER_INSTALL" ]; then # user via variable environnement, moyen d'injecter root si pb
user_="$USER_INSTALL"; fu_user="$USER_INSTALL";
return 0 return 0
elif [[ "$TERM" =~ linux ]]; then #debian 9 recovery ou nomodeset TERM=linux elif [[ "$TERM" =~ linux ]]; then #debian 9 recovery ou nomodeset TERM=linux
if [ "$USER" ]; then if [ "$USER" ]; then
user_="$USER" user="$USER"
elif [ "$EUID" -eq 0 ]; then elif [ "$EUID" -eq 0 ]; then
user_="$root_login" fu_user="$root_login"
return 0 return 0
fi fi
fi fi
if [ "$SUDO_UID" ]; then if [ "$SUDO_UID" ]; then
user_id="$SUDO_UID"; userid="$SUDO_UID";
elif grep -qEo '[0-9]+' <<< "$XDG_RUNTIME_DIR" ; then elif grep -qEo '[0-9]+' <<< "$XDG_RUNTIME_DIR" ; then
user_id="$(grep -Eo '[0-9]+' <<< $XDG_RUNTIME_DIR | cut -d'/' -f4)" userid="$(grep -Eo '[0-9]+' <<< $XDG_RUNTIME_DIR | cut -d'/' -f4)"
elif grep -qEo '[0-9]+' <<< "$XAUTHORITY" ; then elif grep -qEo '[0-9]+' <<< "$XAUTHORITY" ; then
user_id="$(grep -Eo '[0-9]+' <<< $XAUTHORITY | cut -d'/' -f4)" userid="$(grep -Eo '[0-9]+' <<< $XAUTHORITY | cut -d'/' -f4)"
fi fi
[ "$user_id" ] && user_="$(grep $user_id /etc/passwd | cut -d ":" -f 1 )" [ "$userid" ] && user="$(grep $userid /etc/passwd | cut -d ":" -f 1 )"
if [ "$user_" ] && [ "$user_" != "$root_login" ]; then if [ "$user" ] && [ "$user" != "$root_login" ]; then
fu_user="$user"
return 0 return 0
else else
if [ "$SUDO_USER" ] && [ "$SUDO_USER" != "$root_login" ]; then if [ "$SUDO_USER" ] && [ "$SUDO_USER" != "$root_login" ]; then
user_="$SUDO_USER"; user="$SUDO_USER";
elif grep -qv 'root' <<< "$(who)"; then elif grep -qv 'root' <<< "$(who)"; then
user_="$(grep -v 'root' <<< $(who) | head -n1 | cut -d ' ' -f1)"; # grep -v 'root' <<< $(who) | awk 'FNR==1{print $1}' user="$(grep -v 'root' <<< $(who) | head -n1 | cut -d ' ' -f1)"; # grep -v 'root' <<< $(who) | gawk 'FNR==1{print $1}'
elif grep -q 'hourly.*get[A-Z].*\.anacrontab.*\.config/anacron/spool' /etc/crontab; then elif grep -q 'hourly.*get[A-Z].*\.anacrontab.*\.config/anacron/spool' /etc/crontab; then
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} 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 | gawk 'FNR==1{print $2}
fi fi
fi fi
if [ -z "$user_" ]; then return 1; fi fu_user="$user"
if [ ! -d "/home/$user_" ]; then return 2; fi [ "$fu_user" ] || return 1
[ -d "/home/$fu_user" ] || return 2
return 0 return 0
} }
# test wget, $1 url à tester, sortie du script si $1 seul (même si url testée ok) # test wget, $1=url à tester, 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 (si présente) et sortie normale fonction # si $2=print affiche url testée & entêtes http & location, return 0
# si $2=loc affiche seulement location et sortie normale fonction # 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(){ # 15/10/2017 f__wget_test(){ # 5/12/2017
local file_test_wget retourWget retourHttp location local file_test_wget retourWget retourHttp location
file_test_wget="/tmp/testWget-$$-$RANDOM" file_test_wget="/tmp/testWget-$$-$RANDOM"
wget -Sq --tries=1 --timeout=10 --user-agent="$user_agent" --spider --save-headers "$1" &>"$file_test_wget" wget -Sq --timeout=10 --user-agent="$user_agent" --spider --save-headers "$1" &>"$file_test_wget"
retourWget="$?" retourWget="$?"
[ "$2" == "test" ] && rm "$file_test_wget" [ "$retourWget" == 1 ] && retourWget="1: code erreur générique"
[ "$2" == "test" ] && [ "$retourWget" == "0" ] && return 0 || return 1 [ "$retourWget" == 2 ] && retourWget="2: parse erreur (ligne de commande?)"
[ "$retourWget" == 1 ] && retourWget="code erreur générique" [ "$retourWget" == 3 ] && retourWget="3: erreur Entrée/sortie fichier"
[ "$retourWget" == 2 ] && retourWget="parse erreur (ligne de commande?)" [ "$retourWget" == 4 ] && retourWget="4: défaut réseau"
[ "$retourWget" == 3 ] && retourWget="erreur Entrée/sortie fichier" [ "$retourWget" == 5 ] && retourWget="5: défaut vérification SSL"
[ "$retourWget" == 4 ] && retourWget="défaut réseau" [ "$retourWget" == 6 ] && retourWget="6: défaut authentification"
[ "$retourWget" == 5 ] && retourWget="défaut vérification SSL" [ "$retourWget" == 7 ] && retourWget="7: erreur de protocole"
[ "$retourWget" == 6 ] && retourWget="défaut authentification" [ "$retourWget" == 8 ] && retourWget="8: réponse serveur en erreur"
[ "$retourWget" == 7 ] && retourWget="erreur de protocole" retourHttp="$( grep -i 'HTTP/' "$file_test_wget" | tr -d '\n' | xargs )"
[ "$retourWget" == 8 ] && retourWget="réponse serveur en erreur" location="$( grep -i 'location' $file_test_wget | xargs )"
retourHttp="$(grep -i 'HTTP/' "$file_test_wget" | tr -d '\n' | xargs)" if [ "$2" == "test" ]; then
location="$(grep -i 'location' $file_test_wget | xargs)" rm "$file_test_wget" 2>/dev/null
# spécial maintenance frama.link, pas de redirection sur page status framalink
[ "$( grep -c '303' <<< $retourHttp )" -ne 0 ] && return 1 # 303 See Other
[ "$retourWget" == "0" ] && return 0 || return 1
fi
if [ "$2" == "print" ]; then if [ "$2" == "print" ]; then
if [ "$retourWget" ]; then if [ "$retourWget" != "0" ]; then
echo "erreur wget: $RED$retourWget" echo "erreur wget: $RED$retourWget"
echo -e "$BLUE $1$STD\t$RED $retourHttp" echo -e "$BLUE $1$STD\t$RED $retourHttp"
else else
@ -229,24 +230,41 @@ f__wget_test(){ # 15/10/2017
fi fi
fi fi
if [ "$2" == "print" ] || [ "$2" == "loc" ]; then if [ "$2" == "print" ] || [ "$2" == "loc" ]; then
[ "$location" ] && echo "$YELLOW $location" || echo "$YELLOW no location" [ "$location" ] && echo -n "$YELLOW $location" || echo -n "$YELLOW no location"
echo "$STD" echo "$STD"
rm "$file_test_wget" 2>/dev/null
return 0 return 0
fi fi
if [ "$retourWget" ]; then if [ "$retourWget" != "0" ]; then
rm "$file_test_wget" rm "$file_test_wget" 2>/dev/null
f__error "erreur wget, $retourWget" "$1" "$YELLOW$retourHttp" # f__error "wget, $retourWget" "$1" "$YELLOW$retourHttp" "$location"
echo -e "$RED erreur wget, $retourWget \n $1 \n $YELLOW$retourHttp \n $location"
fi fi
if [ "$(grep -c '200' <<< $retourHttp)" -ne 0 ]; then if [ "$(grep -c '200' <<< $retourHttp)" -ne 0 ]; then
echo -e "$GREEN\ntout est ok, réessayer\n$STD" echo -e "$GREEN\ntout est ok, réessayer\n$STD"
fi fi
rm "$file_test_wget" rm "$file_test_wget" 2>/dev/null
exit 0 exit 0
} }
f_affichage(){ # 5/12/2017
f__color
clear
echo -n "$BLUE"
cat << 'EOF'
_ _____ _ _ _ _ _
__ _ ___| ||_ _| |__ _ _ _ __ __| | ___ _ __| |__ (_)_ __ __| |
/ _' |/ _ \ __|| | | '_ \| | | | '_ \ / _' |/ _ \ '__| '_ \| | '__/ _' |
| (_| | __/ |_ | | | | | | |_| | | | | (_| | __/ | | |_) | | | | (_| |
\__, |\___|\__||_| |_| |_|\__,_|_| |_|\__,_|\___|_| |_.__/|_|_| \__,_|
|___/
EOF
echo -e "$YELLOW version $version - $date$STD\n"
}
# affichage help # affichage help
f_help(){ # 08/10/2017 f_help(){ # 4/12/2017
printf $BLUE echo -n $BLUE
cat << 'EOF' cat << 'EOF'
---------------------------------------------------------------------- ----------------------------------------------------------------------
canaux possibles latest, beta canaux possibles latest, beta
@ -271,25 +289,24 @@ cat << 'EOF'
getThunderbird -u, --upgrade : mise à jour du script getThunderbird -u, --upgrade : mise à jour du script
getThunderbird -v, --version : versions du script getThunderbird -v, --version : versions du script
EOF EOF
printf "$STD" echo -n "$STD"
cat << 'EOF' cat << 'EOF'
---------------------------------------------------------------------- ----------------------------------------------------------------------
Si présent, le *paquet Debian* thunderbird devrait être désinstallé
----------------------------------------------------------------------
EOF EOF
echo -e " plus d'infos: $GREEN$urlNotice\n" echo -e " plus d'infos: $GREEN$urlNotice\n"
} }
# demande confirmation pour continuer, $1=simple -> avertissement simple # demande confirmation pour continuer, $1=simple -> avertissement simple
f_tb_alertIcedove(){ # 08/09/2017 f_tb_alertIcedove(){ # 4/12/2017
if [ -d "/home/$user_/.icedove" ]; then if [ -d "/home/$fu_user/.icedove" ]; then
f__info "raw" "$RED""Profil icedove présent.$BLUE Sans utilisateur pour tester, le script n'a pas été conçu pour" \ f__info "raw" "$RED""Profil icedove présent.$BLUE Sans utilisateur pour tester, le script n'a pas été conçu pour" \
" prendre en charge automatiquement cette version de thunderbird." " prendre en charge automatiquement cette version de thunderbird."
[ "$1" == "simple" ] && return [ "$1" == "simple" ] && return
f__info "Si vous savez récupérer manuellement le profil icedove pour le copier dans le profil" \ f__info "Si vous savez récupérer manuellement le profil icedove pour le copier dans le profil" \
" thunderbird-latest ou thunderbird-beta qui seront créés, vous pouvez continuer." \ " thunderbird-latest ou thunderbird-beta qui seront créés, vous pouvez continuer." \
"Ne continuez pas l'installation de thunderbird si vous ne savez pas le gérer manuellement." "Ne continuez pas l'installation de thunderbird si vous ne savez pas le gérer manuellement."
printf "Tapez oui pour continuer " echo -n "Tapez oui pour continuer "
read -r reply read -r reply
shopt -s nocasematch shopt -s nocasematch
if [[ ! $reply =~ ^oui$ ]]; then f__error "script abandonné"; fi if [[ ! $reply =~ ^oui$ ]]; then f__error "script abandonné"; fi
@ -298,8 +315,9 @@ f_tb_alertIcedove(){ # 08/09/2017
} }
# copie du répertoire défault dans canal, $1=canal # copie du répertoire défault dans canal, $1=canal
f_tb_default(){ # 09/09/2017 f_tb_default(){ # 4/12/2017
local canal="$1" profileDefault local canal="$1" profileDefault
f__info "copie d'un profil default sur $canal" f__info "copie d'un profil default sur $canal"
[ -d "$dirProfil/$canal" ] || mkdir -p "$dirProfil/$canal" # répertoire du profil [ -d "$dirProfil/$canal" ] || mkdir -p "$dirProfil/$canal" # répertoire du profil
# recherche éventuel profil 123wxyz.default dans profile.ini # recherche éventuel profil 123wxyz.default dans profile.ini
@ -307,7 +325,7 @@ f_tb_default(){ # 09/09/2017
# si profileDefault existant, on l'utilise pour canal # si profileDefault existant, on l'utilise pour canal
if [ "$profileDefault" ] && [ -d "$dirProfil/$profileDefault" ]; then if [ "$profileDefault" ] && [ -d "$dirProfil/$profileDefault" ]; then
cp -R "$dirProfil/$profileDefault"/* "$dirProfil/$canal/" cp -R "$dirProfil/$profileDefault"/* "$dirProfil/$canal/"
chown -R "$user_:" "$dirProfil/$canal/" # propriété du répertoire profil à l'user chown -R "$fu_user:" "$dirProfil/$canal/" # propriété du répertoire profil à l'user
chmod g-rx,o-rx "$dirProfil/$canal/" # droits répertoire chmod g-rx,o-rx "$dirProfil/$canal/" # droits répertoire
f__info "copie du profil default <$profileDefault> sur $canal" f__info "copie du profil default <$profileDefault> sur $canal"
else else
@ -326,43 +344,39 @@ f_tb_get_canalBas(){ # 23/09/2017
} }
# assigne $verLatest, $verBeta # assigne $verLatest, $verBeta
f_tb_get_versions(){ # 08/10/2017 f_tb_get_versions(){ # 5/12/2017
local recup_url prefixe verOnline verTbInstall canal tabEspaces="$(printf " %.s" $(seq 6))" verPaquet local canal recup_url prefixe verOnline verTbOnline verInstall verTbInstall compteur=0 pluriel
architecture="linux64"
for canal in latest beta; do for canal in latest beta; do
# version online # version online
printf "."
[ "$canal" == "beta" ] && prefixe="$canal-" [ "$canal" == "beta" ] && prefixe="$canal-"
recup_url="https://download.mozilla.org/?product=thunderbird-$prefixe""latest&os=$architecture&lang=fr" recup_url="https://download.mozilla.org/?product=thunderbird-$prefixe""latest&os=$fu_archi&lang=fr"
verOnline="$(sed -E 's#.*thunderbird/releases/(.*)/linux-.*$#\1#' <<< $(f__wget_test "$recup_url" "loc"))" verOnline=$( sed -E 's#.*thunderbird/releases/(.*)/linux-.*$#\1#' <<< $( f__wget_test $recup_url loc ) )
if [ "$canal" == "latest" ]; then verTbOnline+="$( printf "%-7s: %-12s" $canal $verOnline )"
verLatest="$verOnline" # version installée
elif [ "$canal" == "beta" ]; then
verBeta="$verOnline"
fi
printf "."
# version installée éventuelle
if [ -x "$dirInstall$canal/thunderbird" ]; then if [ -x "$dirInstall$canal/thunderbird" ]; then
printf "." verInstall=$( $dirInstall$canal/thunderbird -v | grep -Eo '[0-9].*' )
verTbInstall+="$canal: $($dirInstall$canal/thunderbird -v | grep -Eo '[0-9].*')$tabEspaces" verTbInstall+="$( printf "%-7s: %-12s" $canal $verInstall )"
(( compteur++ ))
else
verTbInstall+="$( printf " %.s" $( seq 21 ) )"
fi fi
done done
unset canal [ "$verTbOnline" ] || verTbOnline="$RED""aucune(s)"
printf "." [ "$verTbInstall" ] || verTbInstall="aucune(s)"
[ -x "/usr/lib/thunderbird/thunderbird" ] && verPaquet="$(sed -E 's/^.*Thunderbird (.*)$/\1/' <<< $(/usr/lib/thunderbird/thunderbird -v))" [ "$compteur" -gt 1 ] && pluriel="s" || unset pluriel
printf ".\n" verTbOnline="$( printf "%-32s %s" "versions Thunderbird en ligne" "$YELLOW$verTbOnline" )"
[ "$verLatest" ] || verLatest="$RED""NA" verTbInstall="$( printf "%-32s %s" "version$pluriel Thunderbird en place" "$GREEN$verTbInstall" )"
[ "$verBeta" ] || verBeta="$RED""NA" echo -en "\n"
[ "$verTbInstall" ] || verTbInstall="$RED""aucune(s)" f__info "raw" "$verTbOnline"
f__info "raw" "version(s) Thunderbird installé(s): $GREEN$verTbInstall" f__info "$verTbInstall"
[ "$verPaquet" ] && f__info "raw" "$RED""version paquet debian Thunderbird: $verPaquet"
f__info "versions Thunderbird en ligne: $YELLOW""latest: $verLatest$tabEspaces""beta: $verBeta$tabEspaces"
} }
# installation Thunderbird, $1 canal, $2 manuel, $3 archive # installation Thunderbird, $1 canal, $2 manuel, $3 archive
f_tb_install(){ # 08/09/2017 f_tb_install(){ # 4/12/2017
[ "$EUID" -eq 0 ] || f__error "vous devez être ROOT pour installer Thunderbird" [ "$EUID" -eq 0 ] || f__error "vous devez être ROOT pour installer Thunderbird"
local versArchive dirTemp fileTemp prefixe canal="$1" local versArchive dirTemp fileTemp prefixe canal="$1"
if [ "$2" == "manuel" ]; then if [ "$2" == "manuel" ]; then
versArchive="$(sed -E 's/.*thunderbird-(.*)\.tar\.bz2.*$/\1/' <<< $(basename $3))" versArchive="$(sed -E 's/.*thunderbird-(.*)\.tar\.bz2.*$/\1/' <<< $(basename $3))"
f__info "installation manuelle dans $canal de thunderbird version $versArchive ($3)" f__info "installation manuelle dans $canal de thunderbird version $versArchive ($3)"
@ -372,12 +386,12 @@ f_tb_install(){ # 08/09/2017
else else
f__info "installation thunderbird-$canal" f__info "installation thunderbird-$canal"
dirTemp="/tmp/$script-$RANDOM" dirTemp="/tmp/$script-$RANDOM"
fileTemp="$dirTemp/thunderbird-$canal.$architecture.tar.bz2" fileTemp="$dirTemp/thunderbird-$canal.$fu_archi.tar.bz2"
mkdir -p "$dirTemp" mkdir -p "$dirTemp"
# téléchargement & test archive # téléchargement & test archive
f__info " - téléchargement..." f__info " - téléchargement..."
[ "$canal" == "beta" ] && prefixe="$canal-" [ "$canal" == "beta" ] && prefixe="$canal-"
recup_url="https://download.mozilla.org/?product=thunderbird-$prefixe""latest&os=$architecture&lang=fr" recup_url="https://download.mozilla.org/?product=thunderbird-$prefixe""latest&os=$fu_archi&lang=fr"
wget -q -c --show-progress --tries=2 --timeout=15 --user-agent="$user_agent" -O "$fileTemp" "$recup_url" wget -q -c --show-progress --tries=2 --timeout=15 --user-agent="$user_agent" -O "$fileTemp" "$recup_url"
if [ "$?" != "0" ]; then f__wget_test "$recup_url"; fi if [ "$?" != "0" ]; then f__wget_test "$recup_url"; fi
f__archive_test "$fileTemp" || f__error "Le fichier $fileTemp n'est pas une archive tar.gz valide" f__archive_test "$fileTemp" || f__error "Le fichier $fileTemp n'est pas une archive tar.gz valide"
@ -391,7 +405,7 @@ f_tb_install(){ # 08/09/2017
rm -rf "$dirInstall$canal"/ # effacement éventuel répertoire existant: "vraie" install rm -rf "$dirInstall$canal"/ # effacement éventuel répertoire existant: "vraie" install
mkdir -p "$dirInstall$canal" mkdir -p "$dirInstall$canal"
mv -f "$dirTemp/thunderbird/"* "$dirInstall$canal/" mv -f "$dirTemp/thunderbird/"* "$dirInstall$canal/"
chown -R "$user_:" "$dirInstall$canal/" chown -R "$fu_user:" "$dirInstall$canal/"
chmod -R g+wrs,a+r "$dirInstall$canal/" chmod -R g+wrs,a+r "$dirInstall$canal/"
rm -rf "$dirTemp/" rm -rf "$dirTemp/"
# lien icône thunderbird # lien icône thunderbird
@ -429,6 +443,7 @@ f_tb_install_manuel(){ # 07/09/2017
# création lanceur.desktop, $1=canal à traiter # création lanceur.desktop, $1=canal à traiter
f_tb_lanceur_desktop(){ # 09/09/2017 f_tb_lanceur_desktop(){ # 09/09/2017
local canal="$1" fileDesktop="/usr/share/applications/thunderbird-$canal.desktop" local canal="$1" fileDesktop="/usr/share/applications/thunderbird-$canal.desktop"
echo "[Desktop Entry]" >> "$fileDesktop" echo "[Desktop Entry]" >> "$fileDesktop"
echo "Name=Thunderbird $canal" >> "$fileDesktop" echo "Name=Thunderbird $canal" >> "$fileDesktop"
echo "Name[fr]=Thunderbird $canal" >> "$fileDesktop" echo "Name[fr]=Thunderbird $canal" >> "$fileDesktop"
@ -451,8 +466,9 @@ f_tb_lanceur_desktop(){ # 09/09/2017
} }
# traitement utilisateur, $1=canal à installer, $2=user si appel indépendant pour reconfiguration # traitement utilisateur, $1=canal à installer, $2=user si appel indépendant pour reconfiguration
f_tb_profil_user(){ # 09/09/2017 f_tb_profil_user(){ # 4/12/2017
local canal="$1" profileDefault nbProfiles local canal="$1" profileDefault nbProfiles
if [ "$2" == "user" ] && [ ! -x "/usr/bin/thunderbird-$canal" ]; then if [ "$2" == "user" ] && [ ! -x "/usr/bin/thunderbird-$canal" ]; then
f__error "thunderbird <$canal> n'est pas installé" " il faut donc utiliser l'installation et pas l'ajout d'un nouveau profil" f__error "thunderbird <$canal> n'est pas installé" " il faut donc utiliser l'installation et pas l'ajout d'un nouveau profil"
fi fi
@ -469,11 +485,11 @@ f_tb_profil_user(){ # 09/09/2017
fi fi
else # sinon on crée profile.ini avec minimum d'entête (première installation Thunderbird) else # sinon on crée profile.ini avec minimum d'entête (première installation Thunderbird)
echo -e "[General]\nStartWithLastProfile=1\n\n" >> "$fileProfileIni" echo -e "[General]\nStartWithLastProfile=1\n\n" >> "$fileProfileIni"
chown "$user_:" "$fileProfileIni" # propriété du fichier profile.ini à l'user chown "$fu_user:" "$fileProfileIni" # propriété du fichier profile.ini à l'user
chmod u+rw,go+r "$fileProfileIni" # permissions du fichier profile.ini à l'user chmod u+rw,go+r "$fileProfileIni" # permissions du fichier profile.ini à l'user
fi fi
mkdir -p "$dirProfil/$canal" # répertoire du profil mkdir -p "$dirProfil/$canal" # répertoire du profil
chown -R "$user_:" "$dirProfil/$canal/" # propriété du répertoire profil à l'user chown -R "$fu_user:" "$dirProfil/$canal/" # propriété du répertoire profil à l'user
chmod g-rx,o-rx "$dirProfil/$canal/" # droits répertoire chmod g-rx,o-rx "$dirProfil/$canal/" # droits répertoire
## inscription dans profil.ini ## inscription dans profil.ini
if [ "$(grep -c Name=$canal $fileProfileIni)" == 0 ]; then # si profil pas déjà existant dans profil.ini if [ "$(grep -c Name=$canal $fileProfileIni)" == 0 ]; then # si profil pas déjà existant dans profil.ini
@ -494,12 +510,13 @@ f_tb_profil_user(){ # 09/09/2017
if [ "$2" != "user" ]; then # pas de update-alternatives pour thunderbird if [ "$2" != "user" ]; then # pas de update-alternatives pour thunderbird
f_tb_lanceur_desktop "$canal" f_tb_lanceur_desktop "$canal"
fi fi
[ "$2" == "user" ] && f__info "log" "profil <$canal> configuré pour $user_" [ "$2" == "user" ] && f__info "log" "profil <$canal> configuré pour $fu_user"
} }
# désinstallation de Thunderbird, on laisse le profil user, $1=canal # désinstallation de Thunderbird, on laisse le profil user, $1=canal
f_tb_remove(){ # 08/10/2017 f_tb_remove(){ # 08/10/2017
local canal="$1" local canal="$1"
[ "$EUID" -eq 0 ] || f__error "vous devez être ROOT pour désinstaller Thunderbird" [ "$EUID" -eq 0 ] || f__error "vous devez être ROOT pour désinstaller Thunderbird"
killall "/opt/usr/share/thunderbird-$canal/thunderbird" &>/dev/null killall "/opt/usr/share/thunderbird-$canal/thunderbird" &>/dev/null
if [ ! -d "$dirInstall$canal" ]; then if [ ! -d "$dirInstall$canal" ]; then
@ -531,25 +548,22 @@ f_tb_usr_bin(){ # 07/09/2017
} }
# spécifique script # spécifique script
fscript_cronAnacron_special(){ # 19/08/2017 fscript_cronAnacron_special(){ # 1/12/2017
rm "/home/$user_/.mozilla/$script.anacrontab" &>/dev/null # ancienne localisation éventuelle rm "/home/$fu_user/.mozilla/$script.anacrontab" &>/dev/null # ancienne localisation éventuelle
rm "/home/$user_/.config/anacron/spool/getFF"* &>/dev/null # ancien job rm "/home/$fu_user/.config/anacron/spool/getFF"* &>/dev/null # ancien job
} }
# spécifique script # spécifique script
fscript_install_special(){ # 08/10/2017 fscript_install_special(){ # 4/12/2017
f_tb_alertIcedove "simple" f_tb_alertIcedove "simple"
if f__requis "thunderbird icedove" "debOnly" && [ "$debOnlyPresents" ]; then
f__info "paquet(s) installé(s) $debOnlyPresents" \
"vous devriez peut-être le désinstaller:$GREEN apt remove thunderbird* $BLUE?"
fi
} }
# inscription dans tache upgrade en anacron hebdomadaire, via cron horaire, $1=upgrade|install|remove # inscription dans tache upgrade en anacron hebdomadaire, via cron horaire, $1=upgrade|install|remove
fscript_cronAnacron(){ # 06/09/2017 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/$user_/.config/anacron" dirAnacron="/home/$fu_user/.config/anacron"
dirSpool="$dirAnacron/spool" dirSpool="$dirAnacron/spool"
fileAnacron="$dirAnacron/$script.anacrontab" fileAnacron="$dirAnacron/$script.anacrontab"
[ "$EUID" -eq 0 ] && sed -i "/$script.anacrontab/d" /etc/crontab [ "$EUID" -eq 0 ] && sed -i "/$script.anacrontab/d" /etc/crontab
@ -557,20 +571,20 @@ fscript_cronAnacron(){ # 06/09/2017
install | upgrade ) install | upgrade )
mkdir -p "$dirAnacron" mkdir -p "$dirAnacron"
# table anacron # table anacron
echo "7 10 $script nice /opt/bin/$script --upgrade 1>/dev/null" > "$fileAnacron" # juste erreurs en syslog echo "7 10 $script nice $scriptInstall --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 /opt/bin/$script --upgrade 1>/dev/null" >> "$fileAnacron" echo "1 00 $script""Dev nice $scriptInstall --upgrade 1>/dev/null" >> "$fileAnacron"
fi fi
# création spool anacron utilisateur # création spool anacron utilisateur
mkdir -p "$dirSpool" mkdir -p "$dirSpool"
chown -R "$user_:" "$dirAnacron" "$dirSpool" chown -R "$fu_user:" "$dirAnacron" "$dirSpool"
if [ "$EUID" -eq 0 ]; then if [ "$EUID" -eq 0 ]; then
# crontab pour activation horaire anacron # crontab pour activation horaire anacron
echo "@hourly $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 "$script" /etc/crontab)" ] || echo f__error "inscription crontab" \
"certains systèmes semblent poser poser problème, merci de rapporter ce bug à $projet $contact" "certains systèmes semblent poser poser problème, merci de rapporter ce bug à $projet, $contact"
;; ;;
remove ) remove )
rm "$dirSpool/$script"* &>/dev/null rm "$dirSpool/$script"* &>/dev/null
@ -580,24 +594,27 @@ fscript_cronAnacron(){ # 06/09/2017
esac esac
} }
# version script en ligne, assigne $versionScript, $script_aJour=ok|ko # version script en ligne, [$1=update], assigne $versionScript, $script_aJour=ok|ko
fscript_get_version(){ # 08/10/2017 fscript_get_version(){ # 5/12/2017
f__info "raw" "$GREEN""version script en cours: $version" local var_temp
versionScript="$(wget -q --tries=2 --timeout=15 -O - "$urlScript" | grep '^version=' | cut -d '=' -f 2)"
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 [ "$versionScript" ]; then
if [ "$version" != "$versionScript" ]; then if [ "$version" != "$versionScript" ]; then
f__info "version script en ligne: $versionScript, mise à jour possible" [ "$1" == "update" ] && var_temp=", mise à jour en cours" || var_temp=", mise à jour possible"
script_aJour="ko" script_aJour="ko"
else else
f__info "version script en ligne: $versionScript"
script_aJour="ok" script_aJour="ok"
fi fi
else f__info "version script en ligne $RED""non accessible"; fi f__info "version script en ligne: $YELLOW$versionScript$BLUE$var_temp"
else
f__info "version script en ligne$RED non accessible"
fi
} }
# installation du script dans le système # installation du script dans le système
# installation du script dans le système fscript_install(){ # 4/12/2017
fscript_install(){ # 08/10/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
@ -608,29 +625,29 @@ fscript_install(){ # 08/10/2017
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" f__requis "wget anacron cron" || exit 1
# install /opt # install /opt
mkdir -p /opt/bin/ mkdir -p /opt/bin/
cp -d "$(basename $0)" "/opt/bin/$script" cp -d "$(basename $0)" "$scriptInstall"
ln -s "/opt/bin/$script" "/usr/bin/$script" &>/dev/null ln -s "$scriptInstall" "/usr/bin/$script" &>/dev/null
chmod 775 "/opt/bin/$script" # rwx rwx r-x, proprio user_ chmod 775 "$scriptInstall" # 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 "$fileLogs" touch "$scriptLogs"
chmod 664 "$fileLogs" # rw- rw- r--, proprio user_ chmod 664 "$scriptLogs" # rw- rw- r--, proprio fu_user
chown "$user_:" "$fileLogs" "/opt/bin/$script" chown "$fu_user:" "$scriptLogs" "$scriptInstall"
[ -e "$fileDev" ] || rm "$(basename $0)" &>/dev/null ## on efface pas si fileDev (dev) [ -e "$fileDev" ] || rm "$(basename $0)" &>/dev/null ## 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(){ # 08/10/2017 fscript_remove(){ # 4/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 "/opt/bin/$script" ];then if [ ! -x "$scriptInstall" ];then
f__info "$RED$script n'est pas installé" f__info "$RED$script n'est pas installé"
return 1 return 1
fi fi
@ -641,57 +658,96 @@ fscript_remove(){ # 08/10/2017
fi fi
[ "$(type -t fscript_remove_special)" ] && fscript_remove_special # test, si fonction spécifique, appel [ "$(type -t fscript_remove_special)" ] && fscript_remove_special # test, si fonction spécifique, appel
# suppression de /opt # suppression de /opt
rm "/opt/bin/$script" &>/dev/null rm "$scriptInstall" &>/dev/null
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 # mise à jour script si dispo, v2, +update spécifique
fscript_update(){ # 08/10/2017 fscript_update(){ # 4/12/2017
if ! grep -q 'bin' <<< "$(dirname $0)" ; then local dirTemp="/tmp/$script-$RANDOM"
[ $(type -t fscript_update_special) ] && fscript_update_special # test, si fonction spécifique, appel
if [ -z "$updateSpecial" ] && ! 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 return 1
fi fi
[ "$(type -t fscript_update_special)" ] && fscript_update_special # test, si fonction spécifique, appel fscript_get_version "update"
fscript_get_version
if [ "$script_aJour" == "ok" ]; then if [ "$script_aJour" == "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
fi fi
local dirTemp="/tmp/$script-$RANDOM"
mkdir -p "$dirTemp" mkdir -p "$dirTemp"
wget -q --tries=2 --timeout=15 -O "$dirTemp/$script" "$urlScript" wget -q --tries=2 --timeout=15 -O "$dirTemp/$script" "$urlScript"
if [ "$?" != "0" ]; then f__wget_test "$urlScript"; fi if [ "$?" != "0" ]; then f__wget_test "$urlScript"; fi
chmod 775 "/opt/bin/$script" # rwx rwx r-x, proprio user_ if grep -q '#!/bin/bash' "$dirTemp/$script" ; then
chown "$user_:" "$dirTemp/$script" cp -d "$dirTemp/$script" "$scriptInstall"
cp -d "$dirTemp/$script" "/opt/bin/$script" 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/"
f__error "échec update" "mauvais téléchargement, réessayer plus tard"
fi
rm -rf "$dirTemp/" rm -rf "$dirTemp/"
fscript_cronAnacron "upgrade"
f__info "log" "$script mis à jour en version $versionScript"
} }
# initialisation prg_init(){ # 4/12/2017
PATH='/usr/sbin:/usr/bin:/sbin:/bin'; TERM=xterm; IFS=$' \t\n'
export PATH TERM IFS
f__affichage PATH='/usr/sbin:/usr/bin:/sbin:/bin'
f__architecture || f__error "Seules les architecture 32 et 64 bits sont supportée (i686 & amd64) par Thunderbird" TERM=xterm
IFS_INI="$IFS"
IFS=$' \t\n'
export PATH TERM IFS
f__user # test bash v4
retourFUser="$?" [ "$BASH_VERSINFO" == 4 ] || f__error "bash v4 requis" "version installée: $BASH_VERSION"
[ "$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" # test SSH
f__requis "wget file tar killall>psmisc" # requis pour fonctionnement programme [[ "$SSH_CLIENT" || "$SSH_CLIENT" || "$SSH_CLIENT" ]] && ENV_SSH="ssh"
# test $DISPLAY
[ -z "$DISPLAY" ] && ENV_DISPLAY="no DISPLAY"
fileLogs="/var/log/sdeb_$script.log" # architectures possibles
f__architecture || f__error "Seules les architecture 32 et 64 bits sont supportée (i686 & amd64) par Firefox"
# détermination user derrière root
f__user
retourFUser="$?"
[ "$retourFUser" -eq 1 ] && f__error "user indéterminé" \
"pour contourner, lancer le script avec:\n$GREEN USER_INSTALL=<user> $0 \n"
if [ "$retourFUser" -eq 2 ]; then
[ "$EUID" -eq 0 ] && fu_user="root" || f__error "user détecté, mais pas de home: /home/$fu_user"
f__info "user root"
fi
# requis pour fonctionnement programme
f__requis "wget file tar killall>psmisc" || exit 1
}
######## début script / initialisation
# logo et définition couleurs
f_affichage
# tests au démarrage
prg_init
urlScript="https://framagit.org/kyodev/kyopages/raw/master/scripts/getThunderbird/"
urlNotice="https://kyodev.frama.io/kyopages/scripts/getThunderbird/"
user_agent="Mozilla/5.0 Firefox"
scriptInstall="/opt/bin/$script"
scriptLogs="/var/log/sdeb_$script.log"
fileDev="/opt/bin/fileDev" fileDev="/opt/bin/fileDev"
dirInstall="/opt/usr/share/thunderbird-" dirInstall="/opt/usr/share/thunderbird-"
dirProfil="/home/$user_/.thunderbird" dirProfil="/home/$fu_user/.thunderbird"
fileProfileIni="$dirProfil/profiles.ini" fileProfileIni="$dirProfil/profiles.ini"
produitAll="latest beta" produitAll="latest beta"
options=$@ options=$@

View File

@ -1,11 +1,17 @@
# changelog getThunderbird # changelog getThunderbird
## todo
* placé ln dans /usr/local/bin au lieu de /usr/bin ? ## 1.6.0 5/12/2017
--- * révision: démarrage
* révision: syncro fonctions communes
* révision: renommage $architecture
* révision: f_tb_alertIcedove, f_tb_default, f_tb_install, f_tb_profil_user, fscript_cronAnacron_special
renommage user_
* révision: suppression avertissement paquet debian, compatibilité
* révision: f_tb_get_versions
* fix: f__wget_test
## 1.5.0 16/10/2017 ## 1.5.0 16/10/2017