From 8b9e56f560465544a75df00b503a569699e1787c Mon Sep 17 00:00:00 2001 From: polytan02 Date: Wed, 18 Jan 2017 00:23:21 +0000 Subject: [PATCH] Big update on install script --- scripts/install | 84 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 72 insertions(+), 12 deletions(-) diff --git a/scripts/install b/scripts/install index 254cb24..145561d 100644 --- a/scripts/install +++ b/scripts/install @@ -1,22 +1,82 @@ #!/bin/bash -# Retrieve arguments -domain=$YNH_APP_ARG_DOMAIN -#path=$YNH_APP_ARG_PATH -app=$YNH_APP_INSTANCE_NAME +# Active trap pour arrêter le script si une erreur est détectée. +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 -# Check domain/path availability -sudo yunohost app checkurl $domain$path -a $app -if [[ ! $? -eq 0 ]]; then -exit 1 -fi + 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_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 +} + +TRAP_ON + +# Source app helpers +source /usr/share/yunohost/helpers + +# Retrieve arguments +app=$YNH_APP_INSTANCE_NAME +domain=$YNH_APP_ARG_DOMAIN +path="/Microsoft-Server-ActiveSync" + +# We check variables are not empty +CHECK_VAR () { # Vérifie que la variable n'est pas vide. +# $1 = Variable à vérifier +# $2 = Texte à afficher en cas d'erreur + test -n "$1" || (echo "$2" >&2 && false) +} + +CHECK_VAR "$app" "app name not set" + +# Check domain and path availibility +CHECK_DOMAINPATH () { # Vérifie la disponibilité du path et du domaine. + sudo yunohost app checkurl $domain$path -a $app +} + +CHECK_DOMAINPATH # Prereqs sudo apt-get install php-soap php5-imap libawl-php php5-xsl -y -final_logpath=/var/log/$app final_path=/var/www/$app +CHECK_FINALPATH () { # Vérifie que le dossier de destination n'est pas déjà utilisé. + if [ -e "$final_path" ] + then + echo "This path already contains a folder" >&2 + false + fi +} + +CHECK_FINALPATH + + +final_logpath=/var/log/$app + +# Define variables and Save app settings +ynh_app_setting_set "$app" domain "$domain" +ynh_app_setting_set "$app" final_logpath "$final_logpath" +ynh_app_setting_set "$app" final_path "$final_path" + + + # Copy files to the right place sudo mkdir -p $final_path sudo cp -a ../sources/* $final_path @@ -85,8 +145,8 @@ sudo cp ../conf/php-fpm.conf $finalphpconf sudo chown root: $finalphpconf sudo chmod 644 $finalphpconf -# Enable api for client -sudo yunohost app setting $app skipped_uris -v "/" +# Enable api for client and make app public +ynh_app_setting_set $app skipped_uris "/" # Reload Nginx and regenerate SSOwat conf sudo service php5-fpm reload