From d3f411736981ea2b748b9a1459429b4653556bc7 Mon Sep 17 00:00:00 2001 From: Maniack Crudelis Date: Sat, 23 Jun 2018 14:45:28 +0200 Subject: [PATCH] [fix] Fix the issue alias_traversal (#45) * Fix the issue alias_traversal https://github.com/yandex/gixy/blob/master/docs/en/plugins/aliastraversal.md * Update fix alias_traversal * Don't change original nginx conf file and add change_url * Use newest version of ynh_add_nginx_config from #462 No more need to deal with "#sub_path_only" * Revert "Use newest version of ynh_add_nginx_config from #462" as it's not released (and subject to discussions)! This reverts commit fac62c49ff1f1199384288cecb6a4fad50adcd1a. * Fix indentation --- conf/nginx.conf | 3 ++- scripts/change_url | 31 ++++++++++++++++++------------- scripts/install | 5 +++++ scripts/upgrade | 5 +++++ 4 files changed, 30 insertions(+), 14 deletions(-) diff --git a/conf/nginx.conf b/conf/nginx.conf index 74fc4df..8c40e3a 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -1,4 +1,5 @@ -location __PATH__ { +#sub_path_only rewrite ^__PATH__$ __PATH__/ permanent; +location __PATH__/ { # Path to source alias __FINALPATH__/ ; diff --git a/scripts/change_url b/scripts/change_url index 51b3b36..edaede5 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -57,25 +57,30 @@ 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" + # Make a backup of the original nginx config file if modified + ynh_backup_if_checksum_is_different "$nginx_conf_path" + # Set global variables for nginx helper + domain="$old_domain" + path_url="$new_path" + # Store path_url setting + ynh_app_setting_set $app path_url "$path_url" + # Create a dedicated nginx config + ynh_add_nginx_config + if [ "$path_url" != "/" ] + then + ynh_replace_string "^#sub_path_only " "" "$nginx_conf_path" + fi + 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" + # 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 - # Store file checksum for the new config file location - ynh_store_file_checksum "/etc/nginx/conf.d/$new_domain.d/$app.conf" + # Store file checksum for the new config file location + ynh_store_file_checksum "/etc/nginx/conf.d/$new_domain.d/$app.conf" fi #================================================= diff --git a/scripts/install b/scripts/install index f813710..f9f3919 100755 --- a/scripts/install +++ b/scripts/install @@ -105,6 +105,11 @@ ynh_setup_source "$final_path" # Create a dedicated nginx config ynh_add_nginx_config +if [ "$path_url" != "/" ] +then + ynh_replace_string "^#sub_path_only" "" "/etc/nginx/conf.d/$domain.d/$app.conf" +fi +ynh_store_file_checksum "/etc/nginx/conf.d/$domain.d/$app.conf" #================================================= # CREATE DEDICATED USER diff --git a/scripts/upgrade b/scripts/upgrade index 30c17ef..015e6b6 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -83,6 +83,11 @@ ynh_setup_source "$final_path" # Create a dedicated nginx config ynh_add_nginx_config +if [ "$path_url" != "/" ] +then + ynh_replace_string "^#sub_path_only" "" "/etc/nginx/conf.d/$domain.d/$app.conf" +fi +ynh_store_file_checksum "/etc/nginx/conf.d/$domain.d/$app.conf" #================================================= # CREATE DEDICATED USER