#!/bin/bash #================================================= # GENERIC STARTING #================================================= # IMPORT GENERIC HELPERS #================================================= source _common.sh source /usr/share/yunohost/helpers #================================================= # LOAD SETTINGS #================================================= app=$YNH_APP_INSTANCE_NAME 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) db_pwd=$(ynh_app_setting_get $app mysqlpwd) db_name=$(ynh_app_setting_get $app db_name) #================================================= # FIX OLD THINGS #================================================= if [ -z $final_path ]; then # Si final_path n'est pas renseigné dans app setting final_path=/var/www/$app ynh_app_setting_set $app final_path $final_path fi if [ -z $db_name ]; then # Si db_name n'est pas renseigné dans app setting db_name=$(ynh_make_valid_dbid $app) ynh_app_setting_set $app db_name $db_name fi if [ -z "$is_public" ]; then # Raté avec get au lieu de set... public_check=$(ynh_app_setting_get $app skipped_uris) if [ -z "$public_check" ]; then # Si skipped_uris est vide, c'était une install publique. is_public=1 else is_public=0 fi ynh_app_setting_set $app is_public $is_public else if [ "$is_public" = "Yes" ]; then ynh_app_setting_set $app is_public 1 # Fixe is_public en booléen is_public=1 elif [ "$is_public" = "No" ]; then ynh_app_setting_set $app is_public 0 is_public=0 fi fi #================================================= # BACKUP BEFORE UPGRADE THEN ACTIVE TRAP #================================================= BACKUP_BEFORE_UPGRADE # Backup the current version of the app ynh_clean_setup () { BACKUP_FAIL_UPGRADE # restore it if the upgrade fails } ynh_abort_if_errors # Active trap pour arrêter le script si une erreur est détectée. #================================================= # CHECK THE PATH #================================================= path_url=$(ynh_normalize_url_path $path_url) # Vérifie et corrige la syntaxe du path. #================================================= # STANDARD UPGRADE STEPS #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= SETUP_SOURCE # Télécharge la source, décompresse et copie dans $final_path #================================================= # NGINX CONFIGURATION #================================================= # Copie le fichier de config nginx sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/$app.conf # Modifie les variables dans le fichier de configuration nginx sudo sed -i "s@__PATHTOCHANGE__@$path_url@g" /etc/nginx/conf.d/$domain.d/$app.conf sudo sed -i "s@__FINALPATH__@$final_path@g" /etc/nginx/conf.d/$domain.d/$app.conf sudo sed -i "s@__NAMETOCHANGE__@$app@g" /etc/nginx/conf.d/$domain.d/$app.conf #================================================= # CREATE DEDICATED USER #================================================= ynh_system_user_create $app # Create the dedicated user, if not exist #================================================= # PHP-FPM CONFIGURATION #================================================= POOL_FPM # Créer le fichier de configuration du pool php-fpm et le configure. #================================================= # SPECIFIC UPGRADE #================================================= # RETRIEVE SYNCHRONISATION CODE #================================================= code_sync=$(mysql -h localhost -u $db_name -p$db_pwd -s $db_name -e 'SELECT value FROM leed_configuration WHERE `key`="synchronisationCode"' | sed -n 1p) #================================================= # SETUP CRON FILE FOR SYNCHRONISATION #================================================= sed -i "s@__ADMIN__@$admin@g" ../conf/cron_leed sed -i "s@__DOMAIN__@$domain@g" ../conf/cron_leed sed -i "s@__PATH__@$path_url@g" ../conf/cron_leed sed -i "s@__CODESYNC__@$code_sync@g" ../conf/cron_leed sudo cp ../conf/cron_leed /etc/cron.d/$app #================================================= # SECURING FILES AND DIRECTORIES #================================================= # Les fichiers appartiennent à root sudo chown -R root: $final_path # www-data doit avoir les droits d'écriture dans plugins, cache et updates sudo mkdir -p $final_path/cache sudo chown -R $app $final_path/cache $final_path/plugins $final_path/updates #================================================= # UPGRADE WITH CURL #================================================= # Vide le cache de leed pour la mise à jour sudo rm -rf $final_path/cache/* # Laisse un accès libre pour curl. ynh_app_setting_set $app unprotected_uris "/" # Régénère la configuration de SSOwat sudo yunohost app ssowatconf # Lance la procédure de mise à jour de leed. # curl -kL --resolve $domain:443:127.0.0.1 https://$domain$path_url curl -kL -H "Host: $domain" --resolve $domain:443:127.0.0.1 "https://localhost$path_url" #================================================= # GENERIC FINALISATION #================================================= # SETUP SSOWAT #================================================= # Make app private if necessary if [ $is_public -eq 0 ]; then # Retire l'autorisation d'accès à leed ynh_app_setting_delete $app unprotected_uris # Rend la page d'actualisation accessible pour le script cron. ynh_app_setting_set $app skipped_uris "/action.php" fi #================================================= # RELOAD NGINX #================================================= sudo systemctl reload nginx