diff --git a/check_process b/check_process new file mode 100644 index 0000000..a727bb7 --- /dev/null +++ b/check_process @@ -0,0 +1,50 @@ +;; Test complet sans multisite + auto_remove=1 + ; Manifest + domain="domain.tld" (DOMAIN) + path="/path" (PATH) + admin="john" (USER) + language="fr_FR" + multisite="No" + is_public="Yes" (PUBLIC|public=Yes|private=No) + ; Checks + setup_sub_dir=1 + setup_root=1 + setup_nourl=0 + setup_private=1 + setup_public=1 + upgrade=1 + backup_restore=1 + multi_instance=1 + wrong_user=1 + wrong_path=1 + incorrect_path=1 + corrupt_source=0 + fail_download_source=0 + port_already_use=0 + final_path_already_use=0 +;; Test avec multisite + auto_remove=1 + ; Manifest + domain="domain.tld" (DOMAIN) + path="/path" (PATH) + admin="john" (USER) + language="fr_FR" + multisite="Yes" + is_public="Yes" (PUBLIC|public=Yes|private=No) + ; Checks + setup_sub_dir=1 + setup_root=1 + setup_nourl=0 + setup_private=1 + setup_public=1 + upgrade=1 + backup_restore=1 + multi_instance=1 + wrong_user=0 + wrong_path=0 + incorrect_path=0 + corrupt_source=0 + fail_download_source=0 + port_already_use=0 + final_path_already_use=0 diff --git a/scripts/.fonctions b/scripts/.fonctions index 7569aae..c225234 100755 --- a/scripts/.fonctions +++ b/scripts/.fonctions @@ -7,16 +7,19 @@ YNH_VERSION () { # Renvoi le numéro de version de la moulinette Yunohost 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" && false) + test -n "$1" || (echo "$2" && false >&2) } 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!!" + 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 + if [ $ynh_version = "2.2" ]; then /bin/bash $script_dir/remove # Appel le script remove. En 2.2, ce comportement n'est pas automatique. fi @@ -37,7 +40,7 @@ TRAP_OFF () { # Ignoring signal capture until TRAP_ON CHECK_USER () { # Vérifie la validité de l'user admin # $1 = Variable de l'user admin. - sudo yunohost user list --json | grep -q "\"username\": \"$1\"" || (echo "Wrong admin" && false) + sudo yunohost user list --json | grep -q "\"username\": \"$1\"" || (echo "Wrong admin" && false >&2) } CHECK_PATH () { # Vérifie la présence du / en début de path. Et son absence à la fin. @@ -57,17 +60,18 @@ CHECK_FINALPATH () { # Vérifie que le dossier de destination n'est pas déjà u final_path=/var/www/$app if [ -e "$final_path" ] then - echo "This path already contains a folder" + echo "This path already contains a folder" >&2 false fi } 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 # Génère un mot de passe aléatoire. + db_user=$1 db_pwd=$(head -n20 /dev/urandom | tr -c -d 'A-Za-z0-9' | head -c20) CHECK_VAR "$db_pwd" "db_pwd empty" # Utilise '$app' comme nom d'utilisateur et de base de donnée - db_user=$app # Initialise la base de donnée et stocke le mot de passe mysql. ynh_mysql_create_db $db_user $db_user $db_pwd sudo yunohost app setting $app mysqlpwd -v $db_pwd @@ -77,7 +81,7 @@ SETUP_SOURCE () { # Télécharge la source, décompresse et copie dans $final_pa # $1 = Nom de l'archive téléchargée. wget -nv --show-progress -i ../sources/source_url -O $1 # Vérifie la somme de contrôle de la source téléchargée. - md5sum -c ../sources/source_md5 --status || (echo "Corrupt source" && false) + md5sum -c ../sources/source_md5 --status || (echo "Corrupt source" && false >&2) # Décompresse la source if [ "$(echo ${1##*.})" == "gz" ]; then tar -x -f $1 @@ -158,7 +162,7 @@ REMOVE_LOGROTATE_CONF () { # Suppression de la configuration de logrotate } REMOVE_APP_DIR () { # Suppression du dossier de l'application - if [ test -n "$app" ] + if test -n "$app" then # Supprime le dossier seulement si $app n'est pas vide. if [ -e "/var/www/$app" ]; then # Delete final_path echo "Delete app dir" @@ -168,8 +172,9 @@ REMOVE_APP_DIR () { # Suppression du dossier de l'application } REMOVE_BDD () { # Suppression de la base de donnée et de l'utilisateur associé. +# $1 = Nom de la base de donnée # Utilise '$app' comme nom d'utilisateur et de base de donnée - db_user=$app + db_user=$1 if mysqlshow -u root -p$(sudo cat $MYSQL_ROOT_PWD_FILE) | grep -q "^| $db_user"; then echo "Delete db" ynh_mysql_drop_db $db_user diff --git a/scripts/install b/scripts/install index 9f5e4e2..c52fba1 100644 --- a/scripts/install +++ b/scripts/install @@ -26,7 +26,7 @@ source /usr/share/yunohost/helpers CHECK_VAR "$app" "app name not set" -CHECK_USER "$admin" # Vérifie la validité de l'user admin +CHECK_USER "$admin_wordpress" # Vérifie la validité de l'user admin CHECK_PATH # Vérifie et corrige la syntaxe du path. CHECK_DOMAINPATH # Vérifie la disponibilité du path et du domaine. @@ -46,7 +46,7 @@ sudo yunohost app setting $app is_public -v $is_public sudo yunohost app setting $app language -v $language sudo yunohost app setting $app multisite -v $multisite -GENERATE_DB # Créer une base de données et un utilisateur dédié au nom de l'app. +GENERATE_DB $app # Créer une base de données et un utilisateur dédié au nom de l'app. # Crée le repertoire de destination et stocke son emplacement. diff --git a/scripts/remove b/scripts/remove index 4fdc230..3fdddfd 100755 --- a/scripts/remove +++ b/scripts/remove @@ -1,5 +1,7 @@ #!/bin/bash +source .fonctions # Charge les fonctions génériques habituellement utilisées dans le script + # Récupère les infos de l'application. app=$YNH_APP_INSTANCE_NAME @@ -7,7 +9,7 @@ app=$YNH_APP_INSTANCE_NAME source /usr/share/yunohost/helpers domain=$(sudo yunohost app setting $app domain) -REMOVE_BDD # Suppression de la base de donnée et de l'utilisateur associé. +REMOVE_BDD $app # Suppression de la base de donnée et de l'utilisateur associé. REMOVE_APP_DIR # Suppression du dossier de l'application diff --git a/scripts/upgrade b/scripts/upgrade index 14fc4e0..59c3cb6 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -48,17 +48,7 @@ sudo sed -i "s@__PATHTOCHANGE__@$path@g" /etc/nginx/conf.d/$domain.d/$app.conf sudo sed -i "s@__FINALPATH__@$final_path@g" /etc/nginx/conf.d/$domain.d/$app.conf sudo sed -i "s@__NAMETOCHANGE__@$app@g" /etc/nginx/conf.d/$domain.d/$app.conf -# Copie le fichier de configuration du pool php-fpm et le configure. -sed -i "s@__NAMETOCHANGE__@$app@g" ../conf/php-fpm.conf -sed -i "s@__FINALPATH__@$final_path@g" ../conf/php-fpm.conf -finalphpconf=/etc/php5/fpm/pool.d/$app.conf -sudo cp ../conf/php-fpm.conf $finalphpconf -sudo chown root: $finalphpconf -finalphpini=/etc/php5/fpm/conf.d/20-$app.ini -sudo cp ../conf/php-fpm.ini $finalphpini -sudo chown root: $finalphpini -sudo service php5-fpm reload - +POOL_FPM # Créer le fichier de configuration du pool php-fpm et le configure. CHECK_MD5_CONFIG "wp-config.php" "$final_path/wp-config.php" # Créé un backup du fichier de config si il a été modifié. if [ "$multisite" = "Yes" ];