From d16178ec9a30a1e79c6c8ae7ad1789e29bc8f7bc Mon Sep 17 00:00:00 2001 From: polytan02 Date: Fri, 23 Dec 2016 22:02:50 +0000 Subject: [PATCH] Avoid path confusion in manifest.json --- manifest.json | 2 +- scripts/fonctions | 51 ++++++++++++++++++++--------------------------- scripts/install | 18 +++++++++++++---- scripts/upgrade | 15 +++++++++++--- 4 files changed, 49 insertions(+), 37 deletions(-) mode change 100644 => 100755 scripts/fonctions diff --git a/manifest.json b/manifest.json index 6be7c97..8ad4186 100644 --- a/manifest.json +++ b/manifest.json @@ -42,7 +42,7 @@ "default": "/cops" }, { - "name": "calibrepath", + "name": "calibre", "ask": { "en": "Indicate the location of Calibre library. DON'T store it in your /var/www/cops or it will be removed on next upgrade !!", "fr": "Indiquez le chemin de votre bibliotheque Calibre. Ne la mettez pas dans /var/www/cops ou elle sera supprimée à la prochaine upgrade !!!" diff --git a/scripts/fonctions b/scripts/fonctions old mode 100644 new mode 100755 index ed93b54..c18e8d3 --- a/scripts/fonctions +++ b/scripts/fonctions @@ -6,28 +6,29 @@ CHECK_VAR () { # Vérifie que la variable n'est pas vide. test -n "$1" || (echo "$2" >&2 && false) } -#EXIT_PROPERLY () { # Provoque l'arrêt du script en cas d'erreur. Et nettoye les résidus. -# trap '' ERR -# echo -e "\e[91m \e[1m" # Shell in light red bold -# echo -e "!!\n $app install's script has encountered an error. Installation was cancelled.\n!!" >&2 -# -# CLEAN_SETUP # Appel la fonction de nettoyage spécifique du script install. -# -# # Compense le bug de ssowat qui ne supprime pas l'entrée de l'app en cas d'erreur d'installation. -# sudo sed -i "\@\"$domain$path/\":@d" /etc/ssowat/conf.json -# -# ynh_ die -#} +EXIT_PROPERLY () { # Provoque l'arrêt du script en cas d'erreur. Et nettoye les résidus. + exit_code=$? + if [ "$exit_code" -eq 0 ]; then + exit 0 # Quitte sans erreur si le script se termine correctement. + fi + trap '' EXIT + set +eu + echo -e "\e[91m \e[1m" # Shell in light red bold + echo -e "!!\n $app install's script has encountered an error. Installation was cancelled.\n!!" >&2 -TRAP_ON () { # Activate signal capture - trap EXIT_PROPERLY ERR # Capturing ex it signals on error + if type -t CLEAN_SETUP > /dev/null; then # Vérifie l'existance de la fonction avant de l'exécuter. + CLEAN_SETUP # Appel la fonction de nettoyage spécifique du script install. + fi + + # Compense le bug de ssowat qui ne supprime pas l'entrée de l'app en cas d'erreur d'installation. + sudo sed -i "\@\"$domain$path/\":@d" /etc/ssowat/conf.json + + ynh_die } -TRAP_OFF () { # Ignoring signal capture until TRAP_ON - # Pour une raison que j'ignore, la fonction TRAP_ON fonctionne très bien. - # Mais pas la fonction TRAP_OFF... - # Utiliser directement `trap '' ERR` dans le code pour l'utiliser, à la place de la fonction. - trap '' ERR # Ignoring ex it signals +TRAP_ON () { # Activate signal capture + set -eu # Exit if a command fail, and if a variable is used unset. + trap EXIT_PROPERLY EXIT # Capturing exit signals on shell script } CHECK_USER () { # Vérifie la validité de l'user admin @@ -44,15 +45,6 @@ CHECK_PATH () { # Vérifie la présence du / en début de path. Et son absence fi } -CHECK_CALIBREPATH () { # Vérifie la présence du / en début de path. Et son absence à la fin. - if [ "${calibrepath:0:1}" != "/" ]; then # Si le premier caractère n'est pas un / - calibrepath="/$calibrepath" # Ajoute un / en début de path - fi - if [ "${calibrepath:${#calibrepath}-1}" == "/" ] && [ ${#calibrepath} -gt 1 ]; then # Si le dernier caractère est un / et que ce n'est pas le seul caractère. - calibrepath="${calibrepath:0:${#calibrepath}-1}" # Supprime le dernier caractère - fi -} - CHECK_DOMAINPATH () { # Vérifie la disponibilité du path et du domaine. sudo yunohost app checkurl $domain$path -a $app } @@ -69,13 +61,14 @@ CHECK_FINALPATH () { # Vérifie que le dossier de destination n'est pas déjà u GENERATE_DB () { # Créer une base de données et un utilisateur dédié au nom de l'app. # $1 = Nom de la base de donnée db_user=$1 + db_user=${db_user//-/_} # mariadb ne supporte pas les - dans les noms de base de données. Ils sont donc remplacé par des _ # Génère un mot de passe aléatoire. # db_pwd=$(head -n20 /dev/urandom | tr -c -d 'A-Za-z0-9' | head -c20) db_pwd=$(ynh_string_random) CHECK_VAR "$db_pwd" "db_pwd empty" # Utilise '$app' comme nom d'utilisateur et de base de donnée # Initialise la base de donnée et stocke le mot de passe mysql. - ynh_mysql_create_db $db_user $db_user $db_pwd + ynh_mysql_create_db "$db_user" "$db_user" $db_pwd ynh_app_setting_set $app mysqlpwd $db_pwd } diff --git a/scripts/install b/scripts/install index fc8bc37..08ea5cb 100755 --- a/scripts/install +++ b/scripts/install @@ -16,7 +16,7 @@ domain=$YNH_APP_ARG_DOMAIN path=$YNH_APP_ARG_PATH is_public=$YNH_APP_ARG_IS_PUBLIC runninguser=$YNH_APP_ARG_RUNNINGUSER -calibrepath=$YNH_APP_ARG_CALIBREPATH +calibre=$YNH_APP_ARG_CALIBRE basicauthcreate=$YNH_APP_ARG_BASICAUTHCREATE basicauthuser=$YNH_APP_ARG_BASICAUTHUSER basicauthpass=$YNH_APP_ARG_BASICAUTHPASS @@ -31,7 +31,17 @@ CHECK_DOMAINPATH # Check destination folder is not used already CHECK_FINALPATH -CHECK_CALIBREPATH; +# We check that calibre path is correct +CHECK_CALIBRE () { # Vérifie la présence du / en début de path. Et son absence à la fin. + if [ "${calibre:0:1}" != "/" ]; then # Si le premier caractère n'est pas un / + calibre="/$calibre" # Ajoute un / en début de path + fi + if [ "${calibre:${#calibre}-1}" == "/" ] && [ ${#calibre} -gt 1 ]; then # Si le dernier caractère est un / $ + calibre="${calibre:0:${#calibre}-1}" # Supprime le dernier caractère + fi +} + +CHECK_CALIBRE; final_path=/var/www/$app @@ -41,7 +51,7 @@ ynh_app_setting_set "$app" domain "$domain" ynh_app_setting_set "$app" is_public "$is_public" ynh_app_setting_set "$app" final_path "$final_path" ynh_app_setting_set "$app" runninguser "$runninguser" -ynh_app_setting_set "$app" calibrepath "$calibrepath" +ynh_app_setting_set "$app" calibre "$calibre" ynh_app_setting_set "$app" basicauthcreate "$basicauthcreate" finalnginxconf="/etc/nginx/conf.d/${domain}.d/${app}.conf" @@ -64,7 +74,7 @@ sudo md5sum -c ../sources/source_md5 --status || (echo "Corrupt source" >&2 && f sudo unzip ${cops_file} -d $final_path # Site adjustments -sed -i "s@CALIBRETOCHANGE@$calibrepath@g" ../conf/config_local.php +sed -i "s@CALIBRETOCHANGE@$calibre@g" ../conf/config_local.php timezone=`sudo cat /etc/timezone`; sed -i "s@TIMEZONETOCHANGE@$timezone@g" ../conf/config_local.php diff --git a/scripts/upgrade b/scripts/upgrade index 9d42832..96cfdbc 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -22,11 +22,20 @@ final_path=$(ynh_app_setting_get $app final_path) finalnginxconf=$(ynh_app_setting_get $app finalnginxconf) finalphpconf=$(ynh_app_setting_get $app finalphpconf) runninguser=$(ynh_app_setting_get $app runninguser) -calibrepath=$(ynh_app_setting_get $app calibrepath) +calibre=$(ynh_app_setting_get $app calibre) basicauthcreate=$(ynh_app_setting_get $app basicauthcreate) -# We check that calibrepath is correct -CHECK_CALIBREPATH +# We check that calibre path is correct +CHECK_CALIBRE () { # Vérifie la présence du / en début de path. Et son absence à la fin. + if [ "${calibre:0:1}" != "/" ]; then # Si le premier caractère n'est pas un / + calibre="/$calibre" # Ajoute un / en début de path + fi + if [ "${calibre:${#calibre}-1}" == "/" ] && [ ${#calibre} -gt 1 ]; then # Si le dernier caractère est un / $ + calibre="${calibre:0:${#calibre}-1}" # Supprime le dernier caractère + fi +} + +CHECK_CALIBRE # We install dependencies sudo apt-get update -y