소스 검색

[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
Maniack Crudelis 6 년 전
부모
커밋
d3f4117369
4개의 변경된 파일30개의 추가작업 그리고 14개의 파일을 삭제
  1. 2 1
      conf/nginx.conf
  2. 18 13
      scripts/change_url
  3. 5 0
      scripts/install
  4. 5 0
      scripts/upgrade

+ 2 - 1
conf/nginx.conf

@@ -1,4 +1,5 @@
-location __PATH__ {
+#sub_path_only rewrite ^__PATH__$ __PATH__/ permanent;
+location __PATH__/ {
 
   # Path to source
   alias __FINALPATH__/ ;

+ 18 - 13
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
 
 #=================================================

+ 5 - 0
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

+ 5 - 0
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