From 3cef7eb3f71d8f60dfabe7bcbfa4e8c2dc5b6d64 Mon Sep 17 00:00:00 2001 From: Jimmy Monin Date: Wed, 6 Sep 2017 08:21:30 +0200 Subject: [PATCH] Handle nginx conf file checksums (additional helper) --- scripts/_common.sh | 12 ++++++++++++ scripts/change_url | 7 ++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/scripts/_common.sh b/scripts/_common.sh index 0f53f77..4cd6e10 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -110,3 +110,15 @@ ynh_remove_systemd_config () { ynh_secure_remove "$finalsystemdconf" fi } + +# ============= FUTURE YUNOHOST HELPER ============= +# Delete a file checksum from the app settings +# +# $app should be defined when calling this helper +# +# usage: ynh_remove_file_checksum file +# | arg: file - The file for which the checksum will be deleted +ynh_delete_file_checksum () { + local checksum_setting_name=checksum_${1//[\/ ]/_} # Replace all '/' and ' ' by '_' + ynh_app_setting_delete $app $checksum_setting_name +} \ No newline at end of file diff --git a/scripts/change_url b/scripts/change_url index deed315..51b3b36 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -57,20 +57,25 @@ nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf # Change the path in the nginx config file if [ $change_path -eq 1 ] then + # Make a backup of the original nginx config file if modified ynh_backup_if_checksum_is_different "$nginx_conf_path" # Replace locations starting with old_path # Look for every location possible patterns (see https://nginx.org/en/docs/http/ngx_http_core_module.html#location) ynh_replace_string "location\( \(=\|~\|~\*\|\^~\)\)\? $old_path" "location\1 $new_path" "$nginx_conf_path" # Replace path in "return" directives ynh_replace_string "return \([[:digit:]]\{3\}\) $old_path" "return \1 $new_path" "$nginx_conf_path" + # Calculate and store the nginx config file checksum ynh_store_file_checksum "$nginx_conf_path" fi # Change the domain for nginx if [ $change_domain -eq 1 ] then + # Delete file checksum for the old conf file location + ynh_delete_file_checksum "$nginx_conf_path" mv $nginx_conf_path /etc/nginx/conf.d/$new_domain.d/$app.conf - ynh_store_file_checksum "$nginx_conf_path" + # Store file checksum for the new config file location + ynh_store_file_checksum "/etc/nginx/conf.d/$new_domain.d/$app.conf" fi #=================================================