From 2d010b1fc426f07738ae6b3d0046d6d48c69dfac Mon Sep 17 00:00:00 2001 From: yalh76 Date: Fri, 17 Jun 2022 00:04:13 +0200 Subject: [PATCH] Apply example_ynh --- check_process | 43 +++++++++++++++++----------------- conf/nginx.conf | 35 ++++++++++++++-------------- manifest.json | 4 ++-- scripts/change_url | 20 +++++++++++----- scripts/install | 14 ++++++----- scripts/remove | 16 ++++++------- scripts/restore | 43 ++++++++++++++++------------------ scripts/upgrade | 58 +++++++++++++++++++++++++--------------------- 8 files changed, 124 insertions(+), 109 deletions(-) diff --git a/check_process b/check_process index 0efbeae..56ff100 100644 --- a/check_process +++ b/check_process @@ -1,25 +1,26 @@ ;; Test complet - ; Manifest - domain="domain.tld" - path="/path" - is_public=1 - always_encrypt=1 - ; Checks - pkg_linter=1 - setup_sub_dir=1 - setup_root=1 - setup_nourl=0 - setup_private=1 - setup_public=1 - upgrade=1 - upgrade=1 from_commit=ec8858ed0d054049a0c8f46c6126ee8ae0798e8f - backup_restore=1 - multi_instance=0 - change_url=1 + ; Manifest + domain="domain.tld" + path="/path" + is_public=1 + always_encrypt=1 + ; Checks + pkg_linter=1 + setup_sub_dir=1 + setup_root=1 + setup_nourl=0 + setup_private=1 + setup_public=1 + upgrade=1 + upgrade=1 from_commit=ec8858ed0d054049a0c8f46c6126ee8ae0798e8f + backup_restore=1 + multi_instance=0 + port_already_use=0 + change_url=1 ;;; Options Email= -Notification=change +Notification=none ;;; Upgrade options - ; commit=ec8858ed0d054049a0c8f46c6126ee8ae0798e8f - name=22 May 2020 ec8858ed0d054049a0c8f46c6126ee8ae0798e8f - manifest_arg=domain=DOMAIN&path=PATH&admin=USER&is_public=1&always_encrypt=1& + ; commit=ec8858ed0d054049a0c8f46c6126ee8ae0798e8f + name=22 May 2020 ec8858ed0d054049a0c8f46c6126ee8ae0798e8f + manifest_arg=domain=DOMAIN&path=PATH&admin=USER&is_public=1&always_encrypt=1& diff --git a/conf/nginx.conf b/conf/nginx.conf index ddb6433..864e14e 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -1,25 +1,26 @@ -location __PATH__ { +#sub_path_only rewrite ^__PATH__$ __PATH__/ permanent; +location __PATH__/ { - # Include SSOWAT user panel. - include conf.d/yunohost_panel.conf.inc; + # This is important for user's privacy ! + access_log off; + error_log /var/log/nginx/lutim.error.log; - # This is important for user's privacy ! - access_log off; - error_log /var/log/nginx/lutim.error.log; + # This is important ! Make it OK with your Lutim configuration + client_max_body_size 40M; - # This is important ! Make it OK with your Lutim configuration - client_max_body_size 40M; + proxy_pass http://127.0.0.1:__PORT__; - proxy_pass http://127.0.0.1:__PORT__; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + # Lutim reads this header and understands that the current session is actually HTTPS. + # Enable it if you run a HTTPS server (in this case, don't forgot to change the listen port + proxy_set_header X-Forwarded-Proto https; - # Lutim reads this header and understands that the current session is actually HTTPS. - # Enable it if you run a HTTPS server (in this case, don't forgot to change the listen port - proxy_set_header X-Forwarded-Proto https; + # We expect the downsteam servers to redirect to the right hostname, so don't do any rewrite + proxy_redirect off; - # We expect the downsteam servers to redirect to the right hostname, so don't do any rewrite - proxy_redirect off; + # Include SSOWAT user panel. + include conf.d/yunohost_panel.conf.inc; } diff --git a/manifest.json b/manifest.json index 89e0c20..8c4db3b 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,7 @@ "en": "Anonymous image hosting service", "fr": "Service d'hébergement anonyme d'images" }, - "version": "0.12.1~ynh3", + "version": "0.12.1~ynh4", "url": "https://lut.im", "upstream": { "license": "AGPL-3.0-only", @@ -32,7 +32,7 @@ "nginx" ], "arguments": { - "install" : [ + "install": [ { "name": "domain", "type": "domain" diff --git a/scripts/change_url b/scripts/change_url index 88e8689..21ffdb3 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -28,6 +28,8 @@ ynh_script_progression --message="Loading installation settings..." --weight=2 # Needed for helper "ynh_add_nginx_config" final_path=$(ynh_app_setting_get --app=$app --key=final_path) + +# Add settings here as needed by your application is_public=$(ynh_app_setting_get --app=$app --key=is_public) port=$(ynh_app_setting_get --app=$app --key=port) @@ -39,8 +41,7 @@ ynh_script_progression --message="Backing up the app before changing its URL (ma # Backup the current version of the app ynh_backup_before_upgrade ynh_clean_setup () { - ynh_clean_check_starting - + ynh_clean_check_starting # Remove the new domain config file, the remove script won't do it as it doesn't know yet its location. ynh_secure_remove --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" @@ -77,6 +78,13 @@ fi #================================================= # STANDARD MODIFICATIONS +#================================================= +# STOP SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Stopping a systemd service..." + +ynh_systemd_action --service_name=$app --action="stop" + #================================================= # MODIFY URL IN NGINX CONF #================================================= @@ -134,12 +142,12 @@ ynh_replace_string --match_string="\(^ *prefix.*=> '\).*" --replace_string="\1$n #================================================= # GENERIC FINALISATION #================================================= -# START AND CHECK LUTIM BOOTING +# START SYSTEMD SERVICE #================================================= -ynh_script_progression --message="Restarting Lutim..." --weight=3 +ynh_script_progression --message="Starting a systemd service..." --weight=3 -# Wait for lutim to be fully started -ynh_systemd_action --action=restart --line_match="Manager.*started" --log_path="/var/log/$app/production.log" --timeout="120" +# Start a systemd service +ynh_systemd_action --service_name=$app --action="start" --line_match="Manager.*started" --log_path="/var/log/$app/production.log" --timeout="120" #================================================= # RELOAD NGINX diff --git a/scripts/install b/scripts/install index 36abedf..e47c9e2 100644 --- a/scripts/install +++ b/scripts/install @@ -14,8 +14,7 @@ source /usr/share/yunohost/helpers #================================================= ynh_clean_setup () { -# Clean installation remaining that are not handle by the remove script. - ynh_clean_check_starting + ynh_clean_check_starting } # Exit if an error occurs during the execution of the script ynh_abort_if_errors @@ -31,6 +30,8 @@ always_encrypt=$YNH_APP_ARG_ALWAYS_ENCRYPT app=$YNH_APP_INSTANCE_NAME +secret=$(ynh_string_random) + #================================================= # CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS #================================================= @@ -51,6 +52,7 @@ ynh_app_setting_set --app=$app --key=domain --value=$domain ynh_app_setting_set --app=$app --key=path --value=$path_url ynh_app_setting_set --app=$app --key=is_public --value=$is_public ynh_app_setting_set --app=$app --key=always_encrypt --value=$always_encrypt +ynh_app_setting_set --app=$app --key=secret --value="$secret" ynh_app_setting_set --app=$app --key=overwrite_settings --value=1 ynh_app_setting_set --app=$app --key=overwrite_nginx --value=1 @@ -81,7 +83,7 @@ ynh_install_app_dependencies $pkg_dependencies ynh_script_progression --message="Configuring system user..." --weight=2 # Create a system user -ynh_system_user_create --username=$app --home_dir=$final_path +ynh_system_user_create --username=$app --home_dir="$final_path" #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE @@ -117,9 +119,9 @@ ynh_replace_string --match_string="__DOMAIN__" --replace_string="$domain" --targ ynh_replace_string --match_string="__PATH__" --replace_string="$path_url" --target_file="$final_path/lutim.conf" ynh_replace_string --match_string="__PORT__" --replace_string="$port" --target_file="$final_path/lutim.conf" ynh_replace_string --match_string="__ENCRYPT__" --replace_string="$always_encrypt" --target_file="$final_path/lutim.conf" -secret=$(ynh_string_random) + ynh_replace_string --match_string="__SECRET__" --replace_string="$secret" --target_file="$final_path/lutim.conf" -ynh_app_setting_set --app=$app --key=secret --value="$secret" + # Set the number of process for Lutim to twice the number of CPU core. ynh_replace_string --match_string="__WORKERS__" --replace_string="$(( $(nproc) * 2 ))" --target_file="$final_path/lutim.conf" # Calculate and store the config file checksum into the app settings @@ -174,7 +176,7 @@ chown $app -R /var/log/$app ln -s /var/log/$app/production.log "$final_path/log/production.log" #================================================= -# GENERIC FINALISATION +# GENERIC FINALIZATION #================================================= # SETUP LOGROTATE #================================================= diff --git a/scripts/remove b/scripts/remove index 06b5b89..9deea7b 100644 --- a/scripts/remove +++ b/scripts/remove @@ -41,12 +41,12 @@ ynh_script_progression --message="Stopping and removing the systemd service..." ynh_remove_systemd_config #================================================= -# REMOVE DEPENDENCIES +# REMOVE LOGROTATE CONFIGURATION #================================================= -ynh_script_progression --message="Removing dependencies..." --weight=20 +ynh_script_progression --message="Removing logrotate configuration..." -# Remove metapackage and its dependencies -ynh_remove_app_dependencies +# Remove the app-specific logrotate config +ynh_remove_logrotate #================================================= # REMOVE APP MAIN DIR @@ -65,12 +65,12 @@ ynh_script_progression --message="Removing NGINX web server configuration..." ynh_remove_nginx_config #================================================= -# REMOVE LOGROTATE CONFIGURATION +# REMOVE DEPENDENCIES #================================================= -ynh_script_progression --message="Removing logrotate configuration..." +ynh_script_progression --message="Removing dependencies..." --weight=20 -# Remove the app-specific logrotate config -ynh_remove_logrotate +# Remove metapackage and its dependencies +ynh_remove_app_dependencies #================================================= # SPECIFIC REMOVE diff --git a/scripts/restore b/scripts/restore index bd44594..5714c5b 100644 --- a/scripts/restore +++ b/scripts/restore @@ -15,8 +15,7 @@ source /usr/share/yunohost/helpers #================================================= ynh_clean_setup () { -# Clean installation remaining that are not handle by the remove script. - ynh_clean_check_starting + ynh_clean_check_starting } # Exit if an error occurs during the execution of the script ynh_abort_if_errors @@ -49,20 +48,13 @@ ynh_maintenance_mode_ON #================================================= # STANDARD RESTORATION STEPS -#================================================= -# RESTORE THE NGINX CONFIGURATION -#================================================= -ynh_script_progression --message="Restoring the NGINX configuration..." - -ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" - #================================================= # RECREATE THE DEDICATED USER #================================================= ynh_script_progression --message="Recreating the dedicated system user..." --weight=2 # Create the dedicated user (if not existing) -ynh_system_user_create --username=$app --home_dir=$final_path +ynh_system_user_create --username=$app --home_dir="$final_path" #================================================= # RESTORE THE APP MAIN DIR @@ -82,18 +74,23 @@ chown -R $app:$app "$final_path" #================================================= ynh_script_progression --message="Reinstalling dependencies..." --weight=60 +# Define and install dependencies ynh_install_app_dependencies $pkg_dependencies #================================================= -# RESTORE THE CRON FILE +# RESTORE THE NGINX CONFIGURATION #================================================= +ynh_script_progression --message="Restoring the NGINX configuration..." + +ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" + +#================================================= +# RESTORE VARIOUS FILES +#================================================= +ynh_script_progression --message="Restoring various files..." ynh_restore_file --origin_path="/etc/cron.d/$app" -#================================================= -# SETUP LOG FILE -#================================================= - # Making log a symbolic link to /var/log mkdir -p /var/log/$app/ touch /var/log/$app/production.log @@ -107,10 +104,18 @@ ynh_script_progression --message="Restoring the systemd configuration..." ynh_restore_file --origin_path="/etc/systemd/system/$app.service" systemctl enable $app.service --quiet +#================================================= +# RESTORE THE LOGROTATE CONFIGURATION +#================================================= +ynh_script_progression --message="Restoring the logrotate configuration..." + +ynh_restore_file --origin_path="/etc/logrotate.d/$app" + #================================================= # INTEGRATE SERVICE IN YUNOHOST #================================================= ynh_script_progression --message="Integrating service in YunoHost..." + yunohost service add $app --log="$final_path/log/production.log" #================================================= @@ -118,16 +123,8 @@ yunohost service add $app --log="$final_path/log/production.log" #================================================= ynh_script_progression --message="Starting a systemd service..." --weight=3 -# Wait for lutim to be fully started ynh_systemd_action --action=restart --line_match="Manager.*started" --log_path="/var/log/$app/production.log" --timeout="120" -#================================================= -# RESTORE THE LOGROTATE CONFIGURATION -#================================================= -ynh_script_progression --message="Restoring the logrotate configuration..." - -ynh_restore_file --origin_path="/etc/logrotate.d/$app" - #================================================= # GENERIC FINALIZATION #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index 7d9edc8..6b11d4e 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -48,10 +48,9 @@ ynh_script_progression --message="Backing up the app before upgrading (may take # Backup the current version of the app ynh_backup_before_upgrade ynh_clean_setup () { -# Clean installation remaining that are not handle by the remove script. - ynh_clean_check_starting - # restore it if the upgrade fails - ynh_restore_upgradebackup + ynh_clean_check_starting + # Restore it if the upgrade fails + ynh_restore_upgradebackup } # Exit if an error occurs during the execution of the script ynh_abort_if_errors @@ -65,6 +64,13 @@ ynh_maintenance_mode_ON #================================================= # STANDARD UPGRADE STEPS +#================================================= +# STOP SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Stopping a systemd service..." + +ynh_systemd_action --service_name=$app --action="stop" + #================================================= # ENSURE DOWNWARD COMPATIBILITY #================================================= @@ -165,7 +171,7 @@ ynh_app_setting_set --app=$app --key=unprotected_uris --value="/" ynh_script_progression --message="Making sure dedicated system user exists..." # Create a dedicated user (if not existing) -ynh_system_user_create --username=$app --home_dir=$final_path +ynh_system_user_create --username=$app --home_dir="$final_path" #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE @@ -183,6 +189,13 @@ chmod 750 "$final_path" chmod -R o-rwx "$final_path" chown -R $app:www-data "$final_path" +#================================================= +# UPGRADE DEPENDENCIES +#================================================= +ynh_script_progression --message="Upgrading dependencies..." --weight=9 + +ynh_install_app_dependencies $pkg_dependencies + #================================================= # NGINX CONFIGURATION #================================================= @@ -194,13 +207,6 @@ then ynh_add_nginx_config fi -#================================================= -# UPGRADE DEPENDENCIES -#================================================= -ynh_script_progression --message="Upgrading dependencies..." --weight=9 - -ynh_install_app_dependencies $pkg_dependencies - #================================================= # SPECIFIC UPGRADE #================================================= @@ -245,17 +251,6 @@ fi ynh_replace_string --match_string="__APP__" --replace_string="$app" --target_file="../hooks/post_app_addaccess" ynh_replace_string --match_string="__APP__" --replace_string="$app" --target_file="../hooks/post_app_removeaccess" -#================================================= -# SETUP SYSTEMD -#================================================= - -# Overwrite the systemd configuration only if it's allowed -if [ $overwrite_systemd -eq 1 ] -then - ynh_script_progression --message="Upgrading systemd configuration..." --weight=2 - ynh_add_systemd_config -fi - #================================================= # SETUP CRON #================================================= @@ -275,6 +270,17 @@ then popd fi +#================================================= +# SETUP SYSTEMD +#================================================= + +# Overwrite the systemd configuration only if it's allowed +if [ $overwrite_systemd -eq 1 ] +then + ynh_script_progression --message="Upgrading systemd configuration..." --weight=2 + ynh_add_systemd_config +fi + #================================================= # GENERIC FINALIZATION #================================================= @@ -290,15 +296,15 @@ chown $app -R /var/log/$app # INTEGRATE SERVICE IN YUNOHOST #================================================= ynh_script_progression --message="Integrating service in YunoHost..." + yunohost service add $app --log="$final_path/log/production.log" #================================================= # START SYSTEMD SERVICE #================================================= -ynh_script_progression --message="Starting a systemd service...." --weight=4 +ynh_script_progression --message="Starting a systemd service..." --weight=4 -# Wait for lutim to be fully started -ynh_systemd_action --action=restart --line_match="Manager.*started" --log_path="/var/log/$app/production.log" --timeout="120" +ynh_systemd_action --service_name=$app --action="start" --line_match="Manager.*started" --log_path="/var/log/$app/production.log" --timeout="120" #================================================= # RELOAD NGINX