| 
									
										
										
										
											2014-10-20 18:55:53 +02:00
										 |  |  | #!/bin/bash | 
					
						
							| 
									
										
										
										
											2015-10-27 16:03:21 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | #================================================= | 
					
						
							| 
									
										
										
										
											2017-06-17 18:02:28 +02:00
										 |  |  | # GENERIC START | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | #================================================= | 
					
						
							|  |  |  | # IMPORT GENERIC HELPERS | 
					
						
							|  |  |  | #================================================= | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-05 13:06:35 +02:00
										 |  |  | source _common.sh | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | source /usr/share/yunohost/helpers | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #================================================= | 
					
						
							|  |  |  | # LOAD SETTINGS | 
					
						
							|  |  |  | #================================================= | 
					
						
							| 
									
										
										
										
											2019-04-18 19:58:47 +02:00
										 |  |  | ynh_script_progression --message="Loading installation settings..." --time --weight=1 | 
					
						
							| 
									
										
										
										
											2015-10-27 16:03:21 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-18 17:31:44 +01:00
										 |  |  | app=$YNH_APP_INSTANCE_NAME | 
					
						
							| 
									
										
										
										
											2014-10-20 18:55:53 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-16 00:32:39 +02:00
										 |  |  | domain=$(ynh_app_setting_get --app=$app --key=domain) | 
					
						
							|  |  |  | path_url=$(ynh_app_setting_get --app=$app --key=path) | 
					
						
							|  |  |  | admin=$(ynh_app_setting_get --app=$app --key=admin) | 
					
						
							|  |  |  | is_public=$(ynh_app_setting_get --app=$app --key=is_public) | 
					
						
							|  |  |  | final_path=$(ynh_app_setting_get --app=$app --key=final_path) | 
					
						
							|  |  |  | language=$(ynh_app_setting_get --app=$app --key=language) | 
					
						
							|  |  |  | db_name=$(ynh_app_setting_get --app=$app --key=db_name) | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-18 19:58:47 +02:00
										 |  |  | #================================================= | 
					
						
							|  |  |  | # CHECK VERSION | 
					
						
							|  |  |  | #================================================= | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### This helper will compare the version of the currently installed app and the version of the upstream package. | 
					
						
							|  |  |  | ### $upgrade_type can have 2 different values | 
					
						
							|  |  |  | ### - UPGRADE_APP if the upstream app version has changed | 
					
						
							|  |  |  | ### - UPGRADE_PACKAGE if only the YunoHost package has changed | 
					
						
							|  |  |  | ### ynh_check_app_version_changed will stop the upgrade if the app is up to date. | 
					
						
							|  |  |  | ### UPGRADE_APP should be used to upgrade the core app only if there's an upgrade to do. | 
					
						
							|  |  |  | upgrade_type=$(ynh_check_app_version_changed) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | #================================================= | 
					
						
							| 
									
										
										
										
											2017-06-17 18:02:28 +02:00
										 |  |  | # ENSURE DOWNWARD COMPATIBILITY | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | #================================================= | 
					
						
							| 
									
										
										
										
											2019-04-18 19:58:47 +02:00
										 |  |  | ynh_script_progression --message="Ensuring downward compatibility..." --time --weight=1 | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-28 23:55:51 +02:00
										 |  |  | # Fix is_public as a boolean value | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | if [ "$is_public" = "Yes" ]; then | 
					
						
							| 
									
										
										
										
											2019-04-16 00:32:39 +02:00
										 |  |  | 	ynh_app_setting_set --app=$app --key=is_public --value=1 | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | 	is_public=1 | 
					
						
							|  |  |  | elif [ "$is_public" = "No" ]; then | 
					
						
							| 
									
										
										
										
											2019-04-16 00:32:39 +02:00
										 |  |  | 	ynh_app_setting_set --app=$app --key=is_public --value=0 | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | 	is_public=0 | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-28 23:55:51 +02:00
										 |  |  | # If db_name doesn't exist, create it | 
					
						
							| 
									
										
										
										
											2019-05-07 12:03:25 +02:00
										 |  |  | if [ -z "$db_name" ]; then | 
					
						
							| 
									
										
										
										
											2019-04-16 00:32:39 +02:00
										 |  |  | 	db_name=$(ynh_sanitize_dbid --db_name=$app) | 
					
						
							|  |  |  | 	ynh_app_setting_set --app=$app --key=db_name --value=$db_name | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-28 23:55:51 +02:00
										 |  |  | # If final_path doesn't exist, create it | 
					
						
							| 
									
										
										
										
											2019-05-07 12:03:25 +02:00
										 |  |  | if [ -z "$final_path" ]; then | 
					
						
							| 
									
										
										
										
											2017-09-05 17:48:23 +02:00
										 |  |  | 	final_path=/var/www/$app | 
					
						
							| 
									
										
										
										
											2019-04-16 00:32:39 +02:00
										 |  |  | 	ynh_app_setting_set --app=$app --key=final_path --value=$final_path | 
					
						
							| 
									
										
										
										
											2017-08-28 23:55:51 +02:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #================================================= | 
					
						
							|  |  |  | # BACKUP BEFORE UPGRADE THEN ACTIVE TRAP | 
					
						
							|  |  |  | #================================================= | 
					
						
							| 
									
										
										
										
											2019-04-18 19:58:47 +02:00
										 |  |  | ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --time --weight=1 | 
					
						
							| 
									
										
										
										
											2017-08-28 23:55:51 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-05 17:48:23 +02:00
										 |  |  | # Backup the current version of the app | 
					
						
							|  |  |  | ynh_backup_before_upgrade | 
					
						
							| 
									
										
										
										
											2017-08-28 23:55:51 +02:00
										 |  |  | ynh_clean_setup () { | 
					
						
							| 
									
										
										
										
											2017-09-05 17:48:23 +02:00
										 |  |  | 	# restore it if the upgrade fails | 
					
						
							|  |  |  | 	ynh_restore_upgradebackup | 
					
						
							| 
									
										
										
										
											2017-08-28 23:55:51 +02:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2017-09-05 17:48:23 +02:00
										 |  |  | # Exit if an error occurs during the execution of the script | 
					
						
							|  |  |  | ynh_abort_if_errors | 
					
						
							| 
									
										
										
										
											2017-08-28 23:55:51 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | #================================================= | 
					
						
							|  |  |  | # CHECK THE PATH | 
					
						
							|  |  |  | #================================================= | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-17 18:02:28 +02:00
										 |  |  | # Normalize the URL path syntax | 
					
						
							| 
									
										
										
										
											2019-03-07 22:44:41 +01:00
										 |  |  | # N.B. : this is for app installations before YunoHost 2.7 | 
					
						
							|  |  |  | # where this value might be something like /foo/ or foo/ | 
					
						
							|  |  |  | # instead of /foo .... | 
					
						
							|  |  |  | # If nobody installed your app before 2.7, then you may | 
					
						
							|  |  |  | # safely remove this line | 
					
						
							| 
									
										
										
										
											2019-04-16 00:32:39 +02:00
										 |  |  | path_url=$(ynh_normalize_url_path --path_url=$path_url) | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | #================================================= | 
					
						
							|  |  |  | # STANDARD UPGRADE STEPS | 
					
						
							| 
									
										
										
										
											2019-05-02 20:44:22 +02:00
										 |  |  | #================================================= | 
					
						
							|  |  |  | # STOP SYSTEMD SERVICE | 
					
						
							|  |  |  | #================================================= | 
					
						
							|  |  |  | ynh_script_progression --message="Stopping a systemd service..." --time --weight=1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ynh_systemd_action --service_name=$app --action="stop" --log_path="/var/log/$app/$app.log" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | #================================================= | 
					
						
							|  |  |  | # DOWNLOAD, CHECK AND UNPACK SOURCE | 
					
						
							|  |  |  | #================================================= | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-18 19:58:47 +02:00
										 |  |  | if [ "$upgrade_type" == "UPGRADE_APP" ] | 
					
						
							|  |  |  | then | 
					
						
							|  |  |  | 	ynh_script_progression --message="Upgrading source files..." --time --weight=1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	# Download, check integrity, uncompress and patch the source from app.src | 
					
						
							|  |  |  | 	ynh_setup_source --dest_dir="$final_path" | 
					
						
							|  |  |  | fi | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | #================================================= | 
					
						
							|  |  |  | # NGINX CONFIGURATION | 
					
						
							|  |  |  | #================================================= | 
					
						
							| 
									
										
										
										
											2019-04-18 19:58:47 +02:00
										 |  |  | ynh_script_progression --message="Upgrading nginx web server configuration..." --time --weight=1 | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Create a dedicated nginx config | 
					
						
							| 
									
										
										
										
											2018-05-27 15:44:58 +02:00
										 |  |  | ynh_add_nginx_config | 
					
						
							| 
									
										
										
										
											2018-06-28 22:05:35 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | #================================================= | 
					
						
							|  |  |  | # UPGRADE DEPENDENCIES | 
					
						
							|  |  |  | #================================================= | 
					
						
							| 
									
										
										
										
											2019-04-18 19:58:47 +02:00
										 |  |  | ynh_script_progression --message="Upgrading dependencies..." --time --weight=1 | 
					
						
							| 
									
										
										
										
											2018-06-28 22:05:35 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-05 23:11:52 +01:00
										 |  |  | ynh_install_app_dependencies $pkg_dependencies | 
					
						
							| 
									
										
										
										
											2016-05-18 22:31:45 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | #================================================= | 
					
						
							|  |  |  | # CREATE DEDICATED USER | 
					
						
							|  |  |  | #================================================= | 
					
						
							| 
									
										
										
										
											2019-04-18 19:58:47 +02:00
										 |  |  | ynh_script_progression --message="Making sure dedicated system user exists..." --time --weight=1 | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-01 09:57:16 +02:00
										 |  |  | # Create a dedicated user (if not existing) | 
					
						
							| 
									
										
										
										
											2019-04-16 00:32:39 +02:00
										 |  |  | ynh_system_user_create --username=$app | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | #================================================= | 
					
						
							|  |  |  | # PHP-FPM CONFIGURATION | 
					
						
							|  |  |  | #================================================= | 
					
						
							| 
									
										
										
										
											2019-04-18 19:58:47 +02:00
										 |  |  | ynh_script_progression --message="Upgrading php-fpm configuration..." --time --weight=1 | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Create a dedicated php-fpm config | 
					
						
							| 
									
										
										
										
											2017-08-28 23:55:51 +02:00
										 |  |  | ynh_add_fpm_config | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | #================================================= | 
					
						
							|  |  |  | # SPECIFIC UPGRADE | 
					
						
							|  |  |  | #================================================= | 
					
						
							|  |  |  | # ... | 
					
						
							|  |  |  | #================================================= | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-02 20:47:26 +02:00
										 |  |  | #================================================= | 
					
						
							| 
									
										
										
										
											2020-05-30 14:59:12 +02:00
										 |  |  | # MODIFY A CONFIG FILE | 
					
						
							| 
									
										
										
										
											2019-05-02 20:47:26 +02:00
										 |  |  | #================================================= | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-06-28 22:05:35 +02:00
										 |  |  | ### Verify the checksum of a file, stored by `ynh_store_file_checksum` in the install script. | 
					
						
							| 
									
										
										
										
											2018-07-01 09:57:16 +02:00
										 |  |  | ### And create a backup of this file if the checksum is different. So the file will be backed up if the admin had modified it. | 
					
						
							| 
									
										
										
										
											2019-04-16 00:32:39 +02:00
										 |  |  | ynh_backup_if_checksum_is_different --file="$final_path/CONFIG_FILE" | 
					
						
							| 
									
										
										
										
											2020-05-30 14:59:12 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | ynh_replace_string --match_string="match_string" --replace_string="replace_string" --target_file="$final_path/CONFIG_FILE" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-06-28 22:05:35 +02:00
										 |  |  | # Recalculate and store the checksum of the file for the next upgrade. | 
					
						
							| 
									
										
										
										
											2019-04-16 00:32:39 +02:00
										 |  |  | ynh_store_file_checksum --file="$final_path/CONFIG_FILE" | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | #================================================= | 
					
						
							|  |  |  | # SETUP LOGROTATE | 
					
						
							|  |  |  | #================================================= | 
					
						
							| 
									
										
										
										
											2019-04-18 19:58:47 +02:00
										 |  |  | ynh_script_progression --message="Upgrading logrotate configuration..." --time --weight=1 | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-17 18:02:28 +02:00
										 |  |  | # Use logrotate to manage app-specific logfile(s) | 
					
						
							| 
									
										
										
										
											2017-12-08 15:09:44 +01:00
										 |  |  | ynh_use_logrotate --non-append | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | #================================================= | 
					
						
							|  |  |  | # SETUP SYSTEMD | 
					
						
							|  |  |  | #================================================= | 
					
						
							| 
									
										
										
										
											2019-04-18 19:58:47 +02:00
										 |  |  | ynh_script_progression --message="Upgrading systemd configuration..." --time --weight=1 | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Create a dedicated systemd config | 
					
						
							| 
									
										
										
										
											2017-10-12 16:36:00 +05:30
										 |  |  | ynh_add_systemd_config | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | #================================================= | 
					
						
							| 
									
										
										
										
											2017-06-17 18:02:28 +02:00
										 |  |  | # GENERIC FINALIZATION | 
					
						
							| 
									
										
										
										
											2019-04-18 19:58:47 +02:00
										 |  |  | #================================================= | 
					
						
							|  |  |  | # UPGRADE FAIL2BAN | 
					
						
							|  |  |  | #================================================= | 
					
						
							|  |  |  | ynh_script_progression --message="Reconfiguring fail2ban..." --time --weight=1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Create a dedicated fail2ban config | 
					
						
							|  |  |  | ynh_add_fail2ban_config --logpath="/var/log/nginx/${domain}-error.log" --failregex="Regex to match into the log for a failed login" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | #================================================= | 
					
						
							| 
									
										
										
										
											2017-06-17 18:02:28 +02:00
										 |  |  | # SECURE FILES AND DIRECTORIES | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | #================================================= | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-06-28 22:05:35 +02:00
										 |  |  | # Set permissions on app files | 
					
						
							| 
									
										
										
										
											2017-07-05 18:10:43 +02:00
										 |  |  | chown -R root: $final_path | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | #================================================= | 
					
						
							|  |  |  | # SETUP SSOWAT | 
					
						
							|  |  |  | #================================================= | 
					
						
							| 
									
										
										
										
											2019-04-18 19:58:47 +02:00
										 |  |  | ynh_script_progression --message="Upgrading SSOwat configuration..." --time --weight=1 | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Make app public if necessary | 
					
						
							|  |  |  | if [ $is_public -eq 1 ] | 
					
						
							|  |  |  | then | 
					
						
							| 
									
										
										
										
											2017-06-17 18:02:28 +02:00
										 |  |  | 	# unprotected_uris allows SSO credentials to be passed anyway | 
					
						
							| 
									
										
										
										
											2019-04-16 00:32:39 +02:00
										 |  |  | 	ynh_app_setting_set --app=$app --key=unprotected_uris --value="/" | 
					
						
							| 
									
										
										
										
											2014-10-20 18:55:53 +02:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-02 20:44:22 +02:00
										 |  |  | #================================================= | 
					
						
							|  |  |  | # START SYSTEMD SERVICE | 
					
						
							|  |  |  | #================================================= | 
					
						
							|  |  |  | ynh_script_progression --message="Starting a systemd service..." --time --weight=1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | #================================================= | 
					
						
							|  |  |  | # RELOAD NGINX | 
					
						
							|  |  |  | #================================================= | 
					
						
							| 
									
										
										
										
											2019-04-18 19:58:47 +02:00
										 |  |  | ynh_script_progression --message="Reloading nginx web server..." --time --weight=1 | 
					
						
							| 
									
										
										
										
											2017-06-02 18:44:37 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-18 19:58:47 +02:00
										 |  |  | ynh_systemd_action --service_name=nginx --action=reload | 
					
						
							| 
									
										
										
										
											2019-02-10 15:02:38 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | #================================================= | 
					
						
							|  |  |  | # END OF SCRIPT | 
					
						
							|  |  |  | #================================================= | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-18 19:58:47 +02:00
										 |  |  | ynh_script_progression --message="Upgrade of $app completed" --time --last |