diff --git a/README.md b/README.md index d527a1d..faa416b 100644 --- a/README.md +++ b/README.md @@ -1,45 +1,86 @@ -Etherpad with mypads plugin for YunoHost -================== +# Etherpad with mypads plugin for YunoHost -[Yunohost project](https://yunohost.org/#/) +[![Integration level](https://dash.yunohost.org/integration/etherpad_mypads.svg)](https://ci-apps.yunohost.org/jenkins/job/etherpad_mypads%20%28Community%29/lastBuild/consoleFull) +[![Install Etherpad with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=etherpad_mypads) -Éditeur de texte collaboratif en ligne avec gestion utilisateurs et groupes. -Ce package etherpad utilise les mêmes plugins que [Framapad](https://framapad.org/). +> *This package allow you to install etherpad quickly and simply on a YunoHost server. +If you don't have YunoHost, please see [here](https://yunohost.org/#/install) to know how to install and enjoy it.* -http://etherpad.org/ -https://git.framasoft.org/framasoft/ep_mypads +## Overview +Etherpad is a highly customizable Open Source online editor providing collaborative editing in really real-time. +This package will install the same plugins than [Framapad](https://framapad.org/). -**En raison du plugin mypads, cette version d'etherpad doit être installée à la racine d'un domaine ou d'un sous-domaine dédié. Autrement, mypads sera inaccessible.** +**Shipped version:** 1.6.2 -**Mise à jour du package:** -sudo yunohost app upgrade --verbose etherpad_mypads -u https://github.com/YunoHost-Apps/etherpad_mypads_ynh +## Screenshots -**Multi-utilisateur:** Oui, sans support ldap. +![](http://etherpad.org/img/screenshot.png) -Ce package etherpad intègre les plugins suivant: +## Configuration -- ep_align - *Add Left/Center/Right/Justify to lines of text in a pad* -- ep_author_hover - *Adds author names to span titles* -- ep_automatic_logut - *Automatically disconnects user after some period of time (Prevent server overload)* -- ep_comments_page - *Adds comments on sidebar and link it to the text.* -- ep_countable - *Displays paragraphs, sentences, words and characters counts.* -- ep_delete_empty_pads - *Delete pads which were never edited* -- ep_font_color - *Apply colors to fonts* -- ep_headings2 - *Adds heading support to Etherpad Lite.* -- ep_markdown - *Edit and Export as Markdown in Etherpad* -- ep_mypads - *Groups and private pads for etherpad* -- ep_page_view - *Add support to do 'page view', with a toggle on/off option in Settings, also Page Breaks with Control Enter* -- ep_spellcheck - *Add support to do 'Spell checking'* -- ep_subscript_and_superscript - *Add support for Subscript and Superscript* -- ep_table_of_contents - *View a table of contents for your pad* -- ep_user_font_size - *User Pad Contents font size can be set in settings, this does not effect other peoples views* +You can access to 2 different admin panels, for etherpad by accessing `domain.tld/admin` and for mypads by `domain.tld/mypads/?/admin` +Or, you can find a config file for etherpad at this path `/var/www/etherpad_mypads/settings.json` + +## Documentation + + * Official documentation: http://etherpad.org/doc/v1.6.2 + * YunoHost documentation: There no other documentations, feel free to contribute. + +## YunoHost specific features + +#### Multi-users support + +Supported, **without LDAP nor SSO**. + +#### Supported architectures + +* Tested on x86_64 + +## Limitations + +* If you ask to install the plugin mypads, you have to install in the root of a dedicated domain or a sub domain. Else, mypads will be inaccessible. + +## Additionnal informations + +* This package will install the following plugins: + + * ep_align - *Add Left/Center/Right/Justify to lines of text in a pad* + * ep_author_hover - *Adds author names to span titles* + * ep_automatic_logut - *Automatically disconnects user after some period of time (Prevent server overload)* + * ep_comments_page - *Adds comments on sidebar and link it to the text.* + * ep_countable - *Displays paragraphs, sentences, words and characters counts.* + * ep_delete_empty_pads - *Delete pads which were never edited* + * ep_font_color - *Apply colors to fonts* + * ep_headings2 - *Adds heading support to Etherpad Lite.* + * ep_markdown - *Edit and Export as Markdown in Etherpad* + * ep_mypads - *Groups and private pads for etherpad* + * ep_page_view - *Add support to do 'page view', with a toggle on/off option in Settings, also Page Breaks with Control Enter* + * ep_spellcheck - *Add support to do 'Spell checking'* + * ep_subscript_and_superscript - *Add support for Subscript and Superscript* + * ep_table_of_contents - *View a table of contents for your pad* + * ep_user_font_size - *User Pad Contents font size can be set in settings, this does not effect other peoples views* + +* Because there's no ldap support with mypads plugin, no user is created at the installation. +You have to connect to the admin panel to create the first users. +Login and password are those you chose during the installation. + +## Links + + * Report a bug: https://github.com/YunoHost-Apps/etherpad_mypads_ynh/issues + * Etherpad website: http://etherpad.org/ + * Mypads plugin website: https://git.framasoft.org/framasoft/ep_mypads + * YunoHost website: https://yunohost.org/ --- -## Usage -Le support ldap étant absent sur le plugin mypads, aucun utilisateur n'est créé par défaut. -Il est nécessaire de se connecter à l'interface d'administration pour créer les premiers utilisateurs. -Le login et le mot de passe administrateur sont ceux choisis en moment de l'installation. -**Voir l'état du package:** -*[Dernier rapport hebdomadaire](https://forum.yunohost.org/t/rapport-hebdomadaire-dintegration-continue/2297)* -*[Dernier test d'intégration continue](https://ci-apps.yunohost.org/jenkins/job/etherpad_mypads%20%28Community%29/lastBuild/consoleFull)* +Developers infos +---------------- + +Please do your pull request to the [testing branch](https://github.com/YunoHost-Apps/etherpad_mypads_ynh/tree/testing). + +To try the testing branch, please proceed like that. +``` +sudo yunohost app install https://github.com/YunoHost-Apps/etherpad_mypads_ynh/tree/testing --verbose +or +sudo yunohost app upgrade etherpad_mypads -u https://github.com/YunoHost-Apps/etherpad_mypads_ynh/tree/testing --verbose +``` diff --git a/YEP.md b/YEP.md new file mode 100644 index 0000000..1d2227d --- /dev/null +++ b/YEP.md @@ -0,0 +1,117 @@ +#### [Level 0](https://github.com/YunoHost/doc/blob/master/packaging_apps_levels_fr.md#niveau-0) +[YEP 1.1 - Nommer son app et son dépot](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-11) +`Validated` +[YEP 1.2 - Inscrire l'app sur un "répertoire" connu](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-12) +`Validated` + +#### [Level 1](https://github.com/YunoHost/doc/blob/master/packaging_apps_levels_fr.md#niveau-1) +[YEP 2.2 - Utiliser bash pour les scripts principaux](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-22) +`Validated` +[YEP 2.5 - Copier correctement des fichiers](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-25) +`Don't know` +[YEP 2.7 - Donner des permissions suffisantes aux instructions bash](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-27) +`Validated` +[YEP 2.15 - Suivre les instructions d'installation de l'application](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-215) +`Validated` + +#### [Level 2](https://github.com/YunoHost/doc/blob/master/packaging_apps_levels_fr.md#niveau-2) +[YEP 1.5 - Mettre à jour régulièrement le statut de l'app](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-11) +`Validated` +[YEP 2.18.2 - Gérer l'installation à la racine d’un nom de domaine](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-2182) +`Validated` - *Automatically verified.* +[YEP 2.18.3 - Gérer l'installation sur un sous-domaine](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-2183) +`Validated` - *Automatically verified.* +[YEP 2.18.4 - Gérer l'installation sur un chemin /path](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-2184) +`Validated` - *Automatically verified.* +[YEP 4.6 - Gère le multi-instance](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-11) +`Not yet validated` - *Automatically verified.* + +#### [Level 3](https://github.com/YunoHost/doc/blob/master/packaging_apps_levels_fr.md#niveau-3) +[YEP 2.3 - Sauvegarder les réponses lors de l'installation](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-23) +`Validated` + +#### [Level 4](https://github.com/YunoHost/doc/blob/master/packaging_apps_levels_fr.md#niveau-4) +[YEP 4.1 - Lier au ldap](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-41) +`Not yet validated` +[YEP 4.2 - Lier l'authentification au sso](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-42) +`Not yet validated` + +#### [Level 5](https://github.com/YunoHost/doc/blob/master/packaging_apps_levels_fr.md#niveau-5) +[YEP 1.3 - Indiquer la licence associée au paquet](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-13) +`Validated` +[YEP 2.1 - Respecter le format du manifeste](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-21) +`Validated` - *Automatically verified.* +[YEP 2.12 - Utiliser les commandes pratiques (helpers)](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-212) +`Validated` +[YEP 2.18.1 - Lancer le script d'installation d'une webapp correctement](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-2181) +`Not applicable` + +#### [Level 6](https://github.com/YunoHost/doc/blob/master/packaging_apps_levels_fr.md#niveau-6) +[YEP 1.4 - Informer sur l'intention de maintenir un paquet](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-14) +`Validated` +[YEP 1.6 - Se tenir informé sur l'évolution du packaging d'apps](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-16) +`Validated` +[YEP 1.7 - Ajouter l'app à l'organisation YunoHost-Apps](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-17) +`Validated` - *Automatically verified.* +[YEP 1.8 - Publier des demandes de test](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-18) +`Validated` +[YEP 1.9 - Documenter l'app](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-19) +`Validated` +[YEP 1.10 - Garder un historique de version propre](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-110) +`Don't know` +[YEP 2.9 - Enlever toutes traces de l'app lors de la suppression](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-29) +`Validated` +[YEP 3.3 - Faciliter le contrôle de l'intégrité des sources](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-33) +`Validated` +[YEP 3.5 - Suivre les recommendations de la documentation de l'app](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-35) +`Validated` +[YEP 3.6 - Mettre à jour les versions contenant des CVE](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-36) +`Validated` +[YEP 4.3 - Fournir un script de sauvegarde YunoHost fonctionnel](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-43) +`Validated` - *Automatically verified.* +[YEP 4.4 - Fournir un script de restauration YunoHost fonctionnel](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-44) +`Validated` - *Automatically verified.* + +#### [Level 7](https://github.com/YunoHost/doc/blob/master/packaging_apps_levels_fr.md#niveau-7) +[YEP 2.6 - Annuler l'action si les valeurs d'entrées sont incorrectes](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-26) +`Validated` +[YEP 3.2 - Ouvrir un port correctement](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-32) +`Validated` + +#### [Level 8](https://github.com/YunoHost/doc/blob/master/packaging_apps_levels_fr.md#niveau-8) +[YEP 2.4 - Détecter et gérer les erreurs](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-24) +`Validated` +[YEP 2.8 - Modifier correctement une configuration système](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-28) +`Validated` +[YEP 2.16 - Vérifier la disponibilité des dépendances sur ARM, x86 et x64](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-216) +`Not yet validated` - *Automatically verified.* +[YEP 2.18.5 - Gérer la tuile YunoHost pour faciliter la navigation entre les applications](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-2185) +`Partially validated` +[YEP 3.4 - Isoler l'app](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-34) +`Partially validated` +[YEP 4.5 - Utiliser les hooks](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-45) +`Not applicable` + +#### [Level 9](https://github.com/YunoHost/doc/blob/master/packaging_apps_levels_fr.md#niveau-9) +[YEP 2.10 - Configurer les logs de l'application](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-210) +`Validated` +[YEP 2.11 - Utiliser une variable plutôt que l'app id directement](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-211) +`Validated` +[YEP 2.13 - Traduire le paquet en anglais](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-213) +`Partially validated` +[YEP 2.14 - Remplir correctement un fichier de conf](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-214) +`Not yet validated` +[YEP 2.17 - Prendre en compte la version d'origine lors des mises à jour](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-217) +`Validated` +[YEP 4.2.1 - Déconnexion](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-421) +`Not yet validated` + +#### Other YEP +[YEP 3.1 - Ne pas demander ou stocker de mot de passe LDAP](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-31) +`Validated` +[YEP 4.7 - Ajouter un module à la CLI](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-47) +`Not applicable` +[YEP 4.8 - Ajouter un module à l'admin web](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-48) +`Not applicable` + +State of each YEP can be one of these: `Validated`, `Partially validated`, `Not yet validated`, `Not applicable`, `Don't know`. diff --git a/check_process b/check_process index 0b62824..8d3b2f8 100644 --- a/check_process +++ b/check_process @@ -21,7 +21,7 @@ multi_instance=0 incorrect_path=1 port_already_use=1 (9001) - change_url=0 + change_url=1 ;; Test avec mypads auto_remove=1 ; Manifest @@ -36,6 +36,7 @@ ; Checks setup_root=1 upgrade=1 + upgrade=1 from_commit=b86b9d09ed97bf04b7e1afad72376d8d695b418b backup_restore=1 ;; Test abiword auto_remove=1 @@ -70,7 +71,7 @@ # Level 4: Pas de support ldap. https://framagit.org/framasoft/ep_mypads/issues/31#note_30898 Level 4=na # Level 5: https://github.com/YunoHost-Apps/etherpad_mypads_ynh/issues/11 - Level 5=1 + Level 5=auto Level 6=auto Level 7=auto Level 8=0 @@ -79,3 +80,7 @@ ;;; Options Email= Notification=down +;;; Upgrade options + ; commit=b86b9d09ed97bf04b7e1afad72376d8d695b418b + name=20 Jan 2017 b86b9d09ed97bf04b7e1afad72376d8d695b418b + manifest_arg=domain=DOMAIN&admin=USER&password=password&language=en&is_public=Yes&abiword=0& diff --git a/conf/app.src b/conf/app.src index b24cb2c..593449f 100644 --- a/conf/app.src +++ b/conf/app.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://github.com/ether/etherpad-lite/archive/1.6.1.tar.gz -SOURCE_SUM=2de5cf27933cf687dcca9ea2350e38d4 +SOURCE_URL=https://github.com/ether/etherpad-lite/archive/1.6.2.tar.gz +SOURCE_SUM=f810460e6714d85f8a4e7dfbd3d3790b SOURCE_SUM_PRG=md5sum ARCH_FORMAT=tar.gz SOURCE_IN_SUBDIR=true diff --git a/conf/nginx.conf b/conf/nginx.conf index 7a9d944..68714f7 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -13,5 +13,5 @@ location __PATH__/ { } location ~* __PATH__/p/[^/]*(_|%|\*)[^/]*/export/etherpad { - return 404; + return 404; } diff --git a/manifest.json b/manifest.json index 0778ea8..8493e34 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,7 @@ "en": "Framapad clone, a online editor providing collaborative editing in real-time.", "fr": "Clone de Framapad, un éditeur en ligne fournissant l'édition collaborative en temps réel." }, - "version": "1.6.1", + "version": "1.6.2", "url": "https://framapad.org", "license": "Apache-2.0", "maintainer": { diff --git a/scripts/_common.sh b/scripts/_common.sh index 0c814ff..cac8bd1 100755 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -78,6 +78,19 @@ node_version_path="/opt/node_n/n/versions/node" # N_PREFIX est le dossier de n, il doit être chargé dans les variables d'environnement pour n. export N_PREFIX="$n_install_dir" +ynh_install_n () { + echo "Installation of N - Node.js version management" >&2 + # Build an app.src for n + mkdir -p "../conf" + echo "SOURCE_URL=https://github.com/tj/n/archive/v2.1.7.tar.gz +SOURCE_SUM=2ba3c9d4dd3c7e38885b37e02337906a1ee91febe6d5c9159d89a9050f2eea8f" > "../conf/n.src" + # Download and extract n + ynh_setup_source "$n_install_dir/git" n + # Install n + (cd "$n_install_dir/git" + PREFIX=$N_PREFIX make install 2>&1) +} + ynh_use_nodejs () { nodejs_version=$(ynh_app_setting_get $app nodejs_version) @@ -113,9 +126,10 @@ ynh_install_nodejs () { test -x /usr/bin/npm && mv /usr/bin/npm /usr/bin/npm_n # If n is not previously setup, install it - n --version > /dev/null 2>&1 || \ - ( echo "Installation of N - Node.js version management" >&2; \ - curl -sL $n_install_script | N_PREFIX=$N_PREFIX bash -s -- -y - 2>&1 ) + if ! test n --version > /dev/null 2>&1 + then + ynh_install_n + fi # Modify the default N_PREFIX in n script ynh_replace_string "^N_PREFIX=\${N_PREFIX-.*}$" "N_PREFIX=\${N_PREFIX-$N_PREFIX}" "$n_install_dir/bin/n" @@ -219,3 +233,19 @@ EOF chmod +x "/etc/cron.daily/node_update" } + + +#================================================= +#============= FUTURE YUNOHOST HELPER ============ +#================================================= + +# Delete a file checksum from the app settings +# +# $app should be defined when calling this helper +# +# usage: ynh_remove_file_checksum file +# | arg: file - The file for which the checksum will be deleted +ynh_delete_file_checksum () { + local checksum_setting_name=checksum_${1//[\/ ]/_} # Replace all '/' and ' ' by '_' + ynh_app_setting_delete $app $checksum_setting_name +} diff --git a/scripts/change_url b/scripts/change_url new file mode 100644 index 0000000..2f0442f --- /dev/null +++ b/scripts/change_url @@ -0,0 +1,167 @@ +#!/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 + +#================================================= +# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP +#================================================= + +if [ $change_domain -eq 0 ] +then + # Backup the current version of the app + ynh_backup_before_upgrade + 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 + + # restore it if the upgrade fails + ynh_restore_upgradebackup + } + # Exit if an error occurs during the execution of the script + ynh_abort_if_errors +fi + +#================================================= +# 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" diff --git a/scripts/install b/scripts/install index 4642ebe..ab5430f 100644 --- a/scripts/install +++ b/scripts/install @@ -58,6 +58,9 @@ fi final_path=/var/www/$app test ! -e "$final_path" || ynh_die "This path already contains a folder" +# Normalize the url path syntax +path_url=$(ynh_normalize_url_path $path_url) + # Check web path availability ynh_webpath_available $domain $path_url # Register (book) web path diff --git a/scripts/upgrade b/scripts/upgrade index 2b745dd..88c6106 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -80,6 +80,13 @@ fi # Backup the current version of the app ynh_backup_before_upgrade 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 + # restore it if the upgrade fails ynh_restore_upgradebackup } @@ -240,8 +247,9 @@ systemctl reload nginx # CHECK ETHERPAD STARTING #================================================= -for i in `seq 1 60` -do # La boucle attend le démarrage d'etherpad. Ou 1 minute. Cette boucle évite simplement un 502 au début, car le démarrage est long... + +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.