diff --git a/check_process.default b/check_process.default index cf7ad59..d7e2812 100644 --- a/check_process.default +++ b/check_process.default @@ -10,8 +10,8 @@ admin="john" (USER) language="fr" is_public=1 (PUBLIC|public=1|private=0) - password="pass" - port="666" (PORT) + password="pass" + port="666" (PORT) ; Checks pkg_linter=1 setup_sub_dir=1 @@ -23,7 +23,7 @@ backup_restore=1 multi_instance=1 incorrect_path=1 - port_already_use=1 + port_already_use=0 change_url=0 ;;; Levels Level 1=auto diff --git a/conf/app.src b/conf/app.src index 20f3c51..e4dd89f 100644 --- a/conf/app.src +++ b/conf/app.src @@ -1,6 +1,6 @@ SOURCE_URL=url of app's source SOURCE_SUM=sha256 checksum -SOURCE_SUM_PRG=sha256 +SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true SOURCE_FILENAME= diff --git a/conf/php-fpm.ini b/conf/php-fpm.ini index 27a4207..5c27d59 100644 --- a/conf/php-fpm.ini +++ b/conf/php-fpm.ini @@ -1,9 +1,9 @@ -# Common values to change to increase file upload limit +; Common values to change to increase file upload limit ; upload_max_filesize = 50M ; post_max_size = 50M ; mail.add_x_header = Off -# Other common parameters +; Other common parameters ; max_execution_time = 600 ; max_input_time = 300 ; memory_limit = 256M diff --git a/conf/systemd.service b/conf/systemd.service new file mode 100644 index 0000000..76cdf64 --- /dev/null +++ b/conf/systemd.service @@ -0,0 +1,13 @@ +[Unit] +Description=Small description of the service +After=network.target + +[Service] +Type=simple +User=__APP__ +Group=__APP__ +WorkingDirectory=__FINALPATH__/ +ExecStart=__FINALPATH__/script >> /var/log/__APP__/__APP__.log 2>&1 + +[Install] +WantedBy=multi-user.target diff --git a/manifest.json b/manifest.json index 4bc43b2..0179154 100644 --- a/manifest.json +++ b/manifest.json @@ -6,9 +6,9 @@ "en": "Example package for YunoHost application.", "fr": "Exemple de package d’application pour YunoHost." }, + "version": "1.0", "url": "https://example.com", "license": "free", - "version": "1.0", "maintainer": { "name": "John doe", "email": "john.doe@example.com", diff --git a/scripts/backup b/scripts/backup index 7764d59..7c88c04 100755 --- a/scripts/backup +++ b/scripts/backup @@ -2,13 +2,6 @@ #================================================= # GENERIC START -#================================================= -# MANAGE SCRIPT FAILURE -#================================================= - -# Exit on command errors and treat access to unset variables as an error -set -eu - #================================================= # IMPORT GENERIC HELPERS #================================================= @@ -21,6 +14,13 @@ fi source _common.sh source /usr/share/yunohost/helpers +#================================================= +# MANAGE SCRIPT FAILURE +#================================================= + +# Exit if an error occurs during the execution of the script +ynh_abort_if_errors + #================================================= # LOAD SETTINGS #================================================= @@ -30,7 +30,6 @@ app=$YNH_APP_INSTANCE_NAME final_path=$(ynh_app_setting_get $app final_path) domain=$(ynh_app_setting_get $app domain) db_name=$(ynh_app_setting_get $app db_name) -db_pwd=$(ynh_app_setting_get $app mysqlpwd) #================================================= # STANDARD BACKUP STEPS @@ -38,27 +37,26 @@ db_pwd=$(ynh_app_setting_get $app mysqlpwd) # BACKUP THE APP MAIN DIR #================================================= -ynh_backup "$final_path" "${backup_dir}$final_path" +ynh_backup "$final_path" #================================================= # BACKUP THE NGINX CONFIGURATION #================================================= -ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf" "${backup_dir}/etc/nginx/conf.d/$domain.d/$app.conf" +ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf" #================================================= # BACKUP THE PHP-FPM CONFIGURATION #================================================= -ynh_backup "/etc/php5/fpm/pool.d/$app.conf" "${backup_dir}/etc/php5/fpm/pool.d/$app.conf" -ynh_backup "/etc/php5/fpm/conf.d/20-$app.ini" "${backup_dir}/etc/php5/fpm/conf.d/20-$app.ini" +ynh_backup "/etc/php5/fpm/pool.d/$app.conf" +ynh_backup "/etc/php5/fpm/conf.d/20-$app.ini" #================================================= # BACKUP THE MYSQL DATABASE #================================================= ynh_mysql_dump_db "$db_name" > db.sql -ynh_backup "db.sql" "${backup_dir}/db.sql" #================================================= # SPECIFIC BACKUP @@ -66,16 +64,16 @@ ynh_backup "db.sql" "${backup_dir}/db.sql" # BACKUP LOGROTATE #================================================= -ynh_backup "/etc/logrotate.d/$app" "${backup_dir}/etc/logrotate.d/$app" +ynh_backup "/etc/logrotate.d/$app" #================================================= # BACKUP SYSTEMD #================================================= -ynh_backup "/etc/systemd/system/$app.service" "${backup_dir}/etc/systemd/system/$app.service" +ynh_backup "/etc/systemd/system/$app.service" #================================================= # BACKUP THE CRON FILE #================================================= -ynh_backup "/etc/cron.d/$app" "${backup_dir}/etc/cron.d/$app" +ynh_backup "/etc/cron.d/$app" diff --git a/scripts/install b/scripts/install index 8bd3d26..6a4bcfa 100755 --- a/scripts/install +++ b/scripts/install @@ -42,6 +42,9 @@ app=$YNH_APP_INSTANCE_NAME # CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS #================================================= +final_path=/var/www/$app +test ! -e "$final_path" || ynh_die "This path already contains a folder" + # Normalize the url path syntax path_url=$(ynh_normalize_url_path $path_url) @@ -50,9 +53,6 @@ ynh_webpath_available $domain $path_url # Register (book) web path ynh_webpath_register $app $domain $path_url -final_path=/var/www/$app -test ! -e "$final_path" || ynh_die "This path already contains a folder" - #================================================= # STORE SETTINGS FROM MANIFEST #================================================= @@ -118,7 +118,7 @@ ynh_system_user_create $app #================================================= # Create a dedicated php-fpm config -ynh_fpm_config +ynh_add_fpm_config #================================================= # SPECIFIC SETUP @@ -141,7 +141,7 @@ ynh_systemd_config chown -R $app: $final_path # Set the app as temporarily public for curl call -ynh_app_setting_set $app unprotected_uris "/" +ynh_app_setting_set $app skipped_uris "/" # Reload SSOwat config yunohost app ssowatconf @@ -151,6 +151,12 @@ systemctl reload nginx # Installation with curl ynh_local_curl "/INSTALL_PATH" "key1=value1" "key2=value2" "key3=value3" +#================================================= +# MODIFY A CONFIG FILE +#================================================= + +ynh_replace_string "match_string" "replace_string" "$final_path/CONFIG_FILE" + #================================================= # STORE THE CHECKSUM OF THE CONFIG FILE #================================================= diff --git a/scripts/remove b/scripts/remove index fbd8064..4367e39 100755 --- a/scripts/remove +++ b/scripts/remove @@ -18,6 +18,7 @@ app=$YNH_APP_INSTANCE_NAME domain=$(ynh_app_setting_get $app domain) port=$(ynh_app_setting_get $app port) db_name=$(ynh_app_setting_get $app db_name) +final_path=$(ynh_app_setting_get $app final_path) #================================================= # STANDARD REMOVE @@ -57,7 +58,7 @@ ynh_mysql_remove_db $db_name $db_name #================================================= # Remove the app directory securely -ynh_secure_remove "/var/www/$app" +ynh_secure_remove "$final_path" #================================================= # REMOVE NGINX CONFIGURATION @@ -87,7 +88,7 @@ ynh_remove_logrotate if yunohost firewall list | grep -q "\- $port$" then echo "Close port $port" - QUIET yunohost firewall disallow TCP $port + yunohost firewall disallow TCP $port 2>&1 fi #================================================= diff --git a/scripts/restore b/scripts/restore index e29e9ed..73ac8e3 100755 --- a/scripts/restore +++ b/scripts/restore @@ -2,13 +2,6 @@ #================================================= # GENERIC START -#================================================= -# MANAGE SCRIPT FAILURE -#================================================= - -# Exit on command errors and treat access to unset variables as an error -set -eu - #================================================= # IMPORT GENERIC HELPERS #================================================= @@ -21,6 +14,13 @@ fi source _common.sh source /usr/share/yunohost/helpers +#================================================= +# MANAGE SCRIPT FAILURE +#================================================= + +# Exit if an error occurs during the execution of the script +ynh_abort_if_errors + #================================================= # LOAD SETTINGS #================================================= @@ -36,7 +36,7 @@ db_name=$(ynh_app_setting_get $app db_name) # CHECK IF THE APP CAN BE RESTORED #================================================= -yunohost app checkurl "${domain}${path_url}" -a "$app" \ +ynh_webpath_available $domain $path_url \ || ynh_die "Path not available: ${domain}${path_url}" test ! -d $final_path \ || ynh_die "There is already a directory: $final_path " @@ -113,7 +113,7 @@ systemctl enable $app.service ynh_restore_file "/etc/cron.d/$app" #================================================= -# BACKUP THE LOGROTATE CONFIGURATION +# RESTORE THE LOGROTATE CONFIGURATION #================================================= ynh_restore_file "/etc/logrotate.d/$app" diff --git a/scripts/upgrade b/scripts/upgrade index c0b3296..415963e 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -27,19 +27,40 @@ db_name=$(ynh_app_setting_get $app db_name) # ENSURE DOWNWARD COMPATIBILITY #================================================= +# Fix is_public as a boolean value if [ "$is_public" = "Yes" ]; then - ynh_app_setting_set $app is_public 1 # Fix is_public as a boolean value + ynh_app_setting_set $app is_public 1 is_public=1 elif [ "$is_public" = "No" ]; then ynh_app_setting_set $app is_public 0 is_public=0 fi -if [ -z $db_name ]; then # If db_name doesn't exist, create it +# If db_name doesn't exist, create it +if [ -z $db_name ]; then db_name=$(ynh_sanitize_dbid $app) ynh_app_setting_set $app db_name $db_name fi +# If final_path doesn't exist, create it +if [ -z $final_path ]; then + final_path=/var/www/$app + ynh_app_setting_set $app final_path $final_path +fi + +#================================================= +# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP +#================================================= + +# Backup the current version of the app +ynh_backup_before_upgrade +ynh_clean_setup () { + # restore it if the upgrade fails + ynh_restore_upgradebackup +} +# Exit if an error occurs during the execution of the script +ynh_abort_if_errors + #================================================= # CHECK THE PATH #================================================= @@ -75,7 +96,7 @@ ynh_system_user_create $app #================================================= # Create a dedicated php-fpm config -ynh_fpm_config +ynh_add_fpm_config #================================================= # SPECIFIC UPGRADE