#!/bin/bash #================================================= # GENERIC STARTING #================================================= # IMPORT GENERIC HELPERS #================================================= source _common.sh source /usr/share/yunohost/helpers #================================================= # RETRIEVE ARGUMENTS #================================================= old_domain=$YNH_APP_OLD_DOMAIN old_path=$YNH_APP_OLD_PATH new_domain=$YNH_APP_NEW_DOMAIN new_path=$YNH_APP_NEW_PATH app=$YNH_APP_INSTANCE_NAME mypads=$(ynh_app_setting_get $app mypads) #================================================= # CHECK THE SYNTAX OF THE PATHS #================================================= test -n "$old_path" || old_path="/" test -n "$new_path" || new_path="/" new_path=$(ynh_normalize_url_path $new_path) old_path=$(ynh_normalize_url_path $old_path) #================================================= # CHECK IF THE PATH CAN BE CHANGED #================================================= if [ "$new_path" != "/" ] && [ $mypads -eq 1 ] then ynh_die "Mypads needs to be installed on the root of a domain or a subdomain." fi #================================================= # CHECK WHICH PARTS SHOULD BE CHANGED #================================================= change_domain=0 if [ "$old_domain" != "$new_domain" ] then change_domain=1 fi change_path=0 if [ "$old_path" != "$new_path" ] then change_path=1 fi #================================================= # MANAGE FAILURE OF THE SCRIPT #================================================= ynh_clean_setup () { # Nettoyage des résidus d'installation non pris en charge par le script remove. if test -n "$PID_TAIL" then SUPPRESS_WARNING kill -s 15 $PID_TAIL # Arrête l'exécution de tail. ynh_secure_remove "$tempfile" fi } # Exit if an error occurs during the execution of the script ynh_abort_if_errors #================================================= # STANDARD MODIFICATIONS #================================================= # MODIFY URL IN NGINX CONF #================================================= nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf # Change the path in the nginx config file if [ $change_path -eq 1 ] then # Make a backup of the original nginx config file if modified ynh_backup_if_checksum_is_different "$nginx_conf_path" # Move from sub path to root if [ "$new_path" == "/" ] then ynh_replace_string "^location $old_path/" "location $new_path" "$nginx_conf_path" ynh_replace_string "^.*rewrite.*\^/" "#sub_path_only&" "$nginx_conf_path" ynh_replace_string "^location ~\* $old_path/" "location ~* $new_path" "$nginx_conf_path" # Change the path in the two rewrite instructions ynh_replace_string "\(rewrite *\^\)$old_path\$ $old_path/*" "\1$new_path$ $new_path" "$nginx_conf_path" ynh_replace_string "\(rewrite *\^\)$old_path/*admin\$ $old_path/*" "\1${new_path}admin\$ $new_path" "$nginx_conf_path" # Move to a sub path else ynh_replace_string "^location $old_path.*" "location $new_path/ {" "$nginx_conf_path" ynh_replace_string "^#sub_path_only" "" "$nginx_conf_path" ynh_replace_string "^location ~\* $old_path/*" "location ~* $new_path/" "$nginx_conf_path" # Change the path in the two rewrite instructions ynh_replace_string "\(rewrite *\^\)$old_path\$ $old_path/*" "\1$new_path$ $new_path/" "$nginx_conf_path" ynh_replace_string "\(rewrite *\^\)$old_path/*admin\$ $old_path/*" "\1$new_path/admin\$ $new_path/" "$nginx_conf_path" fi # Calculate and store the nginx config file checksum ynh_store_file_checksum "$nginx_conf_path" fi # Change the domain for nginx if [ $change_domain -eq 1 ] then # Delete file checksum for the old conf file location ynh_delete_file_checksum "$nginx_conf_path" mv $nginx_conf_path /etc/nginx/conf.d/$new_domain.d/$app.conf nginx_conf_path=/etc/nginx/conf.d/$new_domain.d/$app.conf # Calculate and store the nginx config file checksum ynh_store_file_checksum "$nginx_conf_path" fi #================================================= # RELOAD NGINX #================================================= systemctl reload nginx #================================================= # START ETHERPAD IN BACKGROUND #================================================= # Démarre etherpad WARNING echo "Redémarrage d'etherpad" tempfile="$(mktemp)" tail -f -n1 /var/log/$app/etherpad.log > "$tempfile" & # Suit le démarrage dans le log PID_TAIL=$! # Récupère le PID de la commande tail, qui est passée en arrière plan. systemctl start $app # Redémarre etherpad. Le démarrage est fait le plus tôt possible, car il est très long... #================================================= # CHECK ETHERPAD STARTING #================================================= for i in `seq 1 120` do # La boucle attend le démarrage d'etherpad. Ou 2 minutes. Cette boucle évite simplement un 502 au début, car le démarrage est long... if grep -q "You can access your Etherpad instance at" "$tempfile"; then WARNING echo "Le service $app a démarré correctement." break # Si le log annonce le démarrage d'etherpad, sort de la boucle. fi WARNING echo -n "." sleep 1 done echo "" QUIET kill -s 15 $PID_TAIL # Arrête l'exécution de tail. ynh_secure_remove "$tempfile"