#!/bin/bash #================================================= # GENERIC START #================================================= # IMPORT GENERIC HELPERS #================================================= source _common.sh source /usr/share/yunohost/helpers #================================================= # LOAD SETTINGS #================================================= app=$YNH_APP_INSTANCE_NAME # Retrieve app settings domain=$(ynh_app_setting_get "$app" domain) path_url=$(ynh_app_setting_get "$app" path) port=$(ynh_app_setting_get "$app" port) ssoenabled=$(ynh_app_setting_get "$app" ssoenabled) public_site=$(ynh_app_setting_get "$app" public_site) timezone=$(cat /etc/timezone) final_path=$(ynh_app_setting_get "$app" final_path) db_name=$(ynh_app_setting_get "$app" db_name) #================================================= # ENSURE DOWNWARD COMPATIBILITY #================================================= # If final_path doesn't exist, create it if [ -z "$final_path" ]; then final_path="/var/www/$app" ynh_app_setting_set "$app" final_path "$final_path" fi # If db_name doesn't exist, create it if [ -z "$db_name" ]; then db_name=$(ynh_sanitize_dbid "$app") ynh_app_setting_set "$app" db_name "$db_name" fi #================================================= # ACTIVE TRAP #================================================= # TODO: activate backup # Backup the current version of the app # ynh_backup_before_upgrade # ynh_clean_setup () { # restore it if the upgrade fails # ynh_restore_upgradebackup # } # Exit if an error occurs during the execution of the script ynh_abort_if_errors #================================================= # CHECK THE PATH #================================================= # Normalize the URL path syntax path_url=$(ynh_normalize_url_path $path_url) #================================================= # STANDARD UPGRADE STEPS #================================================= #================================================= # UPGRADE DEPENDENCIES #================================================= ynh_install_app_dependencies php-gd php-curl php-imagick php-cli php-zmq #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= ynh_setup_source "$final_path" ## TODO: consider installation in a subpath ynh_replace_string "'/ws/'" "'${path_url%/}/ws/'" \ "${final_path}/app/assets/js/movim_websocket.js" #================================================= # NGINX CONFIGURATION #================================================= # Create a dedicated nginx config ynh_add_nginx_config #================================================= # CREATE DEDICATED USER #================================================= # Create a dedicated user (if not existing) ynh_system_user_create "$app" #================================================= # PHP-FPM CONFIGURATION #================================================= # Create a dedicated php-fpm config ynh_add_fpm_config #================================================= # SET PERMISSIONS #================================================= chown -R "$app":www-data "$final_path" find "${final_path}/" -type f -print0 | xargs -0 chmod 0644 find "${final_path}/" -type d -print0 | xargs -0 chmod 0755 chmod 400 "${final_path}/config/db.inc.php" #================================================= # Install PHP dependencies using composer #================================================= ( cd "$final_path" curl -sS https://getcomposer.org/installer | php -- --install-dir="$final_path" \ && php composer.phar config --global discard-changes true --quiet \ && php composer.phar install --no-interaction --quiet ) #================================================= # Set-up database #================================================= ( cd "$final_path" php mud.php db --set ) #================================================= # ENSURE DOWNWARD COMPATIBILITY #================================================= # Reset SSO parameters ynh_app_setting_delete "$app" protected_uris ynh_app_setting_delete "$app" skipped_uris yunohost app clearaccess "$app" # Replace old public_site variable (if exists) by ssoenabled # TODO: add clean support for old/new setting public_site/ssoenabled if [ ! -z "$public_site" ]; then [[ $public_site = "Yes" ]] \ && ssoenabled="No" \ || ssoenabled="Yes" ynh_app_setting_delete "$app" public_site ynh_app_setting_set "$app" ssoenabled "$ssoenabled" fi #================================================= # SETUP SSOWAT #================================================= # SSOwat configuration if [[ "$ssoenabled" = "No" ]]; then ynh_app_setting_set "$app" skipped_uris "/" (cd "$final_path" && php mud.php config --xmppwhitelist="$domain") yunohost app ssowatconf undo_sso_patch else ynh_app_setting_set "$app" unprotected_uris "/" fi #================================================= # SETUP SYSTEMD #================================================= # Create a dedicated systemd config ynh_replace_string "__URL__" "${domain}${path_url}" ../conf/systemd.service ynh_replace_string "__PORT__" "${port}" ../conf/systemd.service ynh_add_systemd_config #================================================= # RELOAD SERVICES #================================================= # Reload services service nginx reload