1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/cops_ynh.git synced 2024-09-03 18:25:57 +02:00

Avoid path confusion in manifest.json

This commit is contained in:
polytan02 2016-12-23 22:02:50 +00:00
parent d5ec725e70
commit d16178ec9a
4 changed files with 49 additions and 37 deletions

View file

@ -42,7 +42,7 @@
"default": "/cops" "default": "/cops"
}, },
{ {
"name": "calibrepath", "name": "calibre",
"ask": { "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 !!", "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 !!!" "fr": "Indiquez le chemin de votre bibliotheque Calibre. Ne la mettez pas dans /var/www/cops ou elle sera supprimée à la prochaine upgrade !!!"

51
scripts/fonctions Normal file → Executable file
View file

@ -6,28 +6,29 @@ CHECK_VAR () { # Vérifie que la variable n'est pas vide.
test -n "$1" || (echo "$2" >&2 && false) test -n "$1" || (echo "$2" >&2 && false)
} }
#EXIT_PROPERLY () { # Provoque l'arrêt du script en cas d'erreur. Et nettoye les résidus. EXIT_PROPERLY () { # Provoque l'arrêt du script en cas d'erreur. Et nettoye les résidus.
# trap '' ERR exit_code=$?
# echo -e "\e[91m \e[1m" # Shell in light red bold if [ "$exit_code" -eq 0 ]; then
# echo -e "!!\n $app install's script has encountered an error. Installation was cancelled.\n!!" >&2 exit 0 # Quitte sans erreur si le script se termine correctement.
# fi
# CLEAN_SETUP # Appel la fonction de nettoyage spécifique du script install. trap '' EXIT
# set +eu
# # Compense le bug de ssowat qui ne supprime pas l'entrée de l'app en cas d'erreur d'installation. echo -e "\e[91m \e[1m" # Shell in light red bold
# sudo sed -i "\@\"$domain$path/\":@d" /etc/ssowat/conf.json echo -e "!!\n $app install's script has encountered an error. Installation was cancelled.\n!!" >&2
#
# ynh_ die
#}
TRAP_ON () { # Activate signal capture if type -t CLEAN_SETUP > /dev/null; then # Vérifie l'existance de la fonction avant de l'exécuter.
trap EXIT_PROPERLY ERR # Capturing ex it signals on error 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 TRAP_ON () { # Activate signal capture
# Pour une raison que j'ignore, la fonction TRAP_ON fonctionne très bien. set -eu # Exit if a command fail, and if a variable is used unset.
# Mais pas la fonction TRAP_OFF... trap EXIT_PROPERLY EXIT # Capturing exit signals on shell script
# Utiliser directement `trap '' ERR` dans le code pour l'utiliser, à la place de la fonction.
trap '' ERR # Ignoring ex it signals
} }
CHECK_USER () { # Vérifie la validité de l'user admin 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 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. CHECK_DOMAINPATH () { # Vérifie la disponibilité du path et du domaine.
sudo yunohost app checkurl $domain$path -a $app 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. 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 # $1 = Nom de la base de donnée
db_user=$1 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. # 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=$(head -n20 /dev/urandom | tr -c -d 'A-Za-z0-9' | head -c20)
db_pwd=$(ynh_string_random) db_pwd=$(ynh_string_random)
CHECK_VAR "$db_pwd" "db_pwd empty" CHECK_VAR "$db_pwd" "db_pwd empty"
# Utilise '$app' comme nom d'utilisateur et de base de donnée # 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. # 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 ynh_app_setting_set $app mysqlpwd $db_pwd
} }

View file

@ -16,7 +16,7 @@ domain=$YNH_APP_ARG_DOMAIN
path=$YNH_APP_ARG_PATH path=$YNH_APP_ARG_PATH
is_public=$YNH_APP_ARG_IS_PUBLIC is_public=$YNH_APP_ARG_IS_PUBLIC
runninguser=$YNH_APP_ARG_RUNNINGUSER runninguser=$YNH_APP_ARG_RUNNINGUSER
calibrepath=$YNH_APP_ARG_CALIBREPATH calibre=$YNH_APP_ARG_CALIBRE
basicauthcreate=$YNH_APP_ARG_BASICAUTHCREATE basicauthcreate=$YNH_APP_ARG_BASICAUTHCREATE
basicauthuser=$YNH_APP_ARG_BASICAUTHUSER basicauthuser=$YNH_APP_ARG_BASICAUTHUSER
basicauthpass=$YNH_APP_ARG_BASICAUTHPASS basicauthpass=$YNH_APP_ARG_BASICAUTHPASS
@ -31,7 +31,17 @@ CHECK_DOMAINPATH
# Check destination folder is not used already # Check destination folder is not used already
CHECK_FINALPATH 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 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" is_public "$is_public"
ynh_app_setting_set "$app" final_path "$final_path" ynh_app_setting_set "$app" final_path "$final_path"
ynh_app_setting_set "$app" runninguser "$runninguser" 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" ynh_app_setting_set "$app" basicauthcreate "$basicauthcreate"
finalnginxconf="/etc/nginx/conf.d/${domain}.d/${app}.conf" 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 sudo unzip ${cops_file} -d $final_path
# Site adjustments # 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`; timezone=`sudo cat /etc/timezone`;
sed -i "s@TIMEZONETOCHANGE@$timezone@g" ../conf/config_local.php sed -i "s@TIMEZONETOCHANGE@$timezone@g" ../conf/config_local.php

View file

@ -22,11 +22,20 @@ final_path=$(ynh_app_setting_get $app final_path)
finalnginxconf=$(ynh_app_setting_get $app finalnginxconf) finalnginxconf=$(ynh_app_setting_get $app finalnginxconf)
finalphpconf=$(ynh_app_setting_get $app finalphpconf) finalphpconf=$(ynh_app_setting_get $app finalphpconf)
runninguser=$(ynh_app_setting_get $app runninguser) 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) basicauthcreate=$(ynh_app_setting_get $app basicauthcreate)
# We check that calibre path is correct # We check that calibre path is correct
CHECK_CALIBREPATH 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 # We install dependencies
sudo apt-get update -y sudo apt-get update -y