| 
						
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -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
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
					 | 
				
			
			 | 
			 | 
			
				
 
 |