| 
					
				 | 
			
			
				@@ -1,59 +1,133 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #!/bin/bash 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# Exit on command errors and treat unset variables as an error 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-set -eu 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# GENERIC START 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# IMPORT GENERIC HELPERS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source _common.sh 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source /usr/share/yunohost/helpers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# LOAD SETTINGS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# See comments in install script 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 app=$YNH_APP_INSTANCE_NAME 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# Source YunoHost helpers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source /usr/share/yunohost/helpers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+domain=$(ynh_app_setting_get $app domain) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+path_url=$(ynh_app_setting_get $app path) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+admin=$(ynh_app_setting_get $app admin) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+is_public=$(ynh_app_setting_get $app is_public) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+final_path=$(ynh_app_setting_get $app final_path) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+port=$(ynh_app_setting_get $app port) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+db_name=$(ynh_app_setting_get $app db_name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# ENSURE DOWNWARD COMPATIBILITY 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if [ "$is_public" = "Yes" ]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ynh_app_setting_set $app is_public 1	# Fix is_public as a boolean value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	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 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	db_name=$(ynh_sanitize_dbid $app) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ynh_app_setting_set $app db_name $db_name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# CHECK THE PATH 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Normalize the URL path syntax 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+path_url=$(ynh_normalize_url_path $path_url) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# STANDARD UPGRADE STEPS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# DOWNLOAD, CHECK AND UNPACK SOURCE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Download, check integrity, uncompress and patch the source from app.src 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ynh_setup_source "$final_path" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# NGINX CONFIGURATION 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Create a dedicated nginx config 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ynh_nginx_config 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# Retrieve app settings 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-domain=$(ynh_app_setting_get "$app" domain) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-path_url=$(ynh_app_setting_get "$app" path_url) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-admin=$(ynh_app_setting_get "$app" admin) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-is_public=$(ynh_app_setting_get "$app" is_public) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-language=$(ynh_app_setting_get "$app" language) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# Remove trailing "/" for next commands 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-path_url=${path_url%/} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# Copy source files 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-src_path=/var/www/$app 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-sudo mkdir -p $src_path 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-sudo cp -a ../sources/. $src_path 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# Set permissions to app files 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# you may need to make some file and/or directory writeable by www-data (nginx user) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-sudo chown -R root: $src_path 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# Modify Nginx configuration file and copy it to Nginx conf directory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-nginx_conf=../conf/nginx.conf 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-sed -i "s@YNH_WWW_PATH@$path_url@g" $nginx_conf 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-sed -i "s@YNH_WWW_ALIAS@$src_path/@g" $nginx_conf 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# If a dedicated php-fpm process is used: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# sed -i "s@YNH_WWW_APP@$app@g" $nginx_conf 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-sudo cp $nginx_conf /etc/nginx/conf.d/$domain.d/$app.conf 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-### PHP (remove if not used) ### 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# If a dedicated php-fpm process is used: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# # Modify PHP-FPM pool configuration and copy it to the pool directory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# sed -i "s@YNH_WWW_APP@$app@g" ../conf/php-fpm.conf 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# sed -i "s@YNH_WWW_ALIAS@$src_path/@g" ../conf/php-fpm.conf 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# finalphpconf=/etc/php5/fpm/pool.d/$app.conf 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# sudo cp ../conf/php-fpm.conf $finalphpconf 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# sudo chown root: $finalphpconf 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# sudo chmod 644 $finalphpconf 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# sudo service php5-fpm restart 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-### PHP end ### 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# If app is public, add url to SSOWat conf as skipped_uris 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-if [[ $is_public -eq 1 ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  # See install script 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ynh_app_setting_set "$app" unprotected_uris "/" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# CREATE DEDICATED USER 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Create a system user 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ynh_system_user_create $app 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# PHP-FPM CONFIGURATION 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Create a dedicated php-fpm config 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ynh_fpm_config 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# SPECIFIC UPGRADE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Verify the checksum and backup the file if it's different 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ynh_backup_if_checksum_is_different "$final_path/CONFIG_FILE" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Recalculate and store the config file checksum into the app settings 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ynh_store_file_checksum "$final_path/CONFIG_FILE" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# SETUP LOGROTATE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Use logrotate to manage app-specific logfile(s) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ynh_use_logrotate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# SETUP SYSTEMD 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Create a dedicated systemd config 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ynh_systemd_config 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# GENERIC FINALIZATION 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# SECURE FILES AND DIRECTORIES 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Set right permissions for curl installation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+sudo chown -R root: $final_path 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# SETUP SSOWAT 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if [ $is_public -eq 0 ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+then	# Remove the public access 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ynh_app_setting_delete $app skipped_uris 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Make app public if necessary 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if [ $is_public -eq 1 ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	# unprotected_uris allows SSO credentials to be passed anyway 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ynh_app_setting_set $app unprotected_uris "/" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# Reload nginx service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-sudo service nginx reload 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# RELOAD NGINX 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#================================================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+sudo systemctl reload nginx 
			 |