From c1e78c3e6157c723f8a768bb7e93a09787118577 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Mon, 6 Sep 2021 10:34:58 +0200 Subject: [PATCH] 0.4 (#58) * Fix --- README.md | 29 ++++++++++++++++++++++------ README_fr.md | 29 +++++++++++++++++++++------- check_process | 1 + conf/passwd | 1 - conf/systemd.service | 34 +------------------------------- doc/DESCRIPTION.md | 11 ++++++++++- doc/DESCRIPTION_fr.md | 11 ++++++++++- doc/DISCLAIMER.md | 15 +++++++++++---- doc/DISCLAIMER_fr.md | 16 ++++++++++----- manifest.json | 2 +- scripts/backup | 10 +++++++--- scripts/change_url | 4 +--- scripts/install | 35 +++++++++++++++++++-------------- scripts/remove | 14 ++++++++++++++ scripts/restore | 18 +++++++++++++---- scripts/upgrade | 45 +++++++++++++++++++------------------------ 16 files changed, 167 insertions(+), 108 deletions(-) delete mode 100644 conf/passwd diff --git a/README.md b/README.md index e1d034b..bd57bc4 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,17 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in ## Overview -Galène (or Galene) is a videoconference server (an “SFU”) that is easy to deploy and that requires moderate server resources. It was originally designed for lectures and conferences (where a single speaker streams audio and video to hundreds or thousands of users), but later evolved to be useful for student practicals (where users are divided into many small groups), and meetings (where a dozen users interact with each other). +Galène is a videoconference server (an “SFU”) that is easy to deploy and that requires moderate server resources. It was originally designed for lectures and conferences (where a single speaker streams audio and video to hundreds or thousands of users), but later evolved to be useful for student practicals (where users are divided into many small groups), and meetings (where a dozen users interact with each other). + +### Client features: + +- multiparty audio and video +- text chat +- reasonably good support for mobile (Android and iPhone/iPad) +- screen and window sharing, including sharing multiple windows simultaneously (not on mobile) +- streaming video and audio from disk +- activity detection + **Shipped version:** 0.4.0~ynh1 @@ -33,14 +43,14 @@ Galène (or Galene) is a videoconference server (an “SFU”) that is easy to d #### Creating and configuring groups -Groups are defined by JSON files located in the *Galène* folder (`/opt/yunohost/galene/groups`). Each group is represented by a `GroupName.json` file. +Groups are defined by JSON files located in the folder `/home/yunohost.app/galene/groups`. Each group is represented by a `GroupName.json` file. To create a new group, you need to create a `GroupNameExample.json` file (you can also make subfolder groups, and the groups will be accessible with `https://domain.tld/group/subfolder/GroupName`). Various configuration options are available (see https://github.com/YunoHost-Apps/galene_ynh/wiki/Configuration-file). -*NB: spaces are supported in group file names.* +*NB: Spaces are supported in group file names.* ### Configuring your TURN server -#### Using *Galène*'s TURN server +#### Using *Galène*'s internal TURN server Galène comes with a built-in TURN server that should work out-of-the-box. - If your server is behind NAT, allow incoming traffic to TCP port `8443` (or whatever is configured with the `-http` option in `/etc/systemd/system/galene.service`) and TCP/UDP port `1194` (or whatever is configured with the `-turn` option in `/etc/systemd/system/galene.service`) @@ -64,14 +74,21 @@ Galène comes with a built-in TURN server that should work out-of-the-box. To check if the TURN server is up and running, type `/relay-test` in the chat box. If the TURN server is properly configured, you should see a message saying that the relay test has been successful. +You can also install Galène with an external TURN server with this branch: https://github.com/YunoHost-Apps/galene_ynh/tree/galene+turn + ### Server Statistics page -Some statistics are available under `/opt/yunohost/galene/stats.json`, with a human-readable version at `domain.ltd/stats.html`. This is only available to the server administrator. +Statistics are available under `/var/www/galene/stats.json`, with a human-readable version at `domain.ltd/stats.html`. This is only available to the server administrator. + +### How do I record my lecture? + +Make sure allow-recording is set in your group configuration. Log-in as an operator, then say `/record` before you start your lecture. Don't forget to say `/unrecord` at the end. You will find your recordings under `https://server.example.com/recordings/groupname/`. The video recordings are stored in `/home/yunohost.app/galene/recordings` folder. + ## Documentation and resources * Official app website: https://galene.org/ -* Official user documentation: https://yunohost.org/en/app_galene +* Official user documentation: https://galene.org/faq.html * Official admin documentation: https://galene.org/ * Upstream app code repository: https://github.com/jech/galene * YunoHost documentation for this app: https://yunohost.org/app_galene diff --git a/README_fr.md b/README_fr.md index 193a3eb..6114a35 100644 --- a/README_fr.md +++ b/README_fr.md @@ -11,7 +11,16 @@ Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour ## Vue d'ensemble -Galène (ou Galene) est un serveur de visioconférence (un « SFU ») facile à déployer et qui nécessite des ressources serveur modérées. Il a été conçu à l'origine pour les cours et les conférences (où un seul orateur diffuse de l'audio et de la vidéo à des centaines ou des milliers d'utilisateurs), mais a évolué par la suite pour être utile pour les travaux pratiques des étudiants (où les utilisateurs sont divisés en plusieurs petits groupes) et les réunions (où un douzaine d'utilisateurs interagissent entre eux). +Galène est un serveur de visioconférence (un « SFU ») facile à déployer et qui nécessite des ressources serveur modérées. Il a été conçu à l'origine pour les cours et les conférences (où un seul orateur diffuse de l'audio et de la vidéo à des centaines ou des milliers d'utilisateurs), mais a évolué par la suite pour être utile pour les travaux pratiques des étudiants (où les utilisateurs sont divisés en plusieurs petits groupes) et les réunions (où un douzaine d'utilisateurs interagissent entre eux). + +### Fonctionnalités client : + +- audio et vidéo multipartites +- chat textuel +- assez bonne prise en charge pour mobile (Android et iPhone/iPad) +- partage d'écran et de fenêtre, y compris le partage de plusieurs fenêtres simultanément (pas sur mobile) +- streaming vidéo et audio à partir du disque +- détection d'activité **Version incluse :** 0.4.0~ynh1 @@ -30,7 +39,7 @@ Les salles de réunion *Galène* sont appelées « groupes ». Tout groupe est a #### Ajouter et configurer des groupes -Les groupes sont définis par des fichiers JSON situés dans le dossier *Galène* (`/opt/yunohost/galene/groups`). Chaque groupe est représenté par un fichier `GroupName.json`. +Les groupes sont définis par des fichiers JSON situés dans le dossier `/home/yunohost.app/galene/groups`. Chaque groupe est représenté par un fichier `GroupName.json`. Pour créer un nouveau groupe, vous devez créer un fichier `GroupNameExample.json` (vous pouvez également créer un sous-dossier, et les groupes seront accessibles avec` https://domain.tld/group/subfolder/GroupName`). Différentes options de configurations sont disponibles (voir https://github.com/YunoHost-Apps/galene_ynh/wiki/Configuration-file). *NB : les espaces sont pris en charge dans les noms de fichiers de groupe.* @@ -43,7 +52,7 @@ Galène est livré avec un serveur TURN intégré qui devrait fonctionner imméd #### Utilisation de votre propre serveur TURN - Installez [coturn_ynh](https://github.com/YunoHost-Apps/coturn_ynh). -- Ajoutez `/opt/yunohost/galene/data/ice-servers.json` avec ces lignes et changez `turn.example.org` et `secret` +- Ajoutez `/var/www/galene/data/ice-servers.json` avec ces lignes et changez `turn.example.org` et `secret` ``` [ @@ -57,18 +66,24 @@ Galène est livré avec un serveur TURN intégré qui devrait fonctionner imméd } ] ``` -- définir l'option de virage de `/etc/systemd/system/galene.service` sur `-turn auto` (ou `-turn ""` pour désactiver le serveur TURN intégré). +- Dans `/etc/systemd/system/galene.service` changer l'option `-turn auto` (ou `-turn ""` pour désactiver le serveur TURN intégré). -Pour vérifier si le serveur TURN est opérationnel, tapez `/relay-test` dans la boîte de dialogue ; si le serveur TURN est correctement configuré, vous devriez voir un message indiquant que le test du relai a réussi. +Pour vérifier si le serveur TURN est opérationnel, tapez `/relay-test` dans la boîte de dialogue du chat de *Galène* ; si le serveur TURN est correctement configuré, vous devriez voir un message indiquant que le test du relai a réussi. + +Vous pouvez également installer *Galène* avec un serveur TURN externe avec cette branch : https://github.com/YunoHost-Apps/galene_ynh/tree/galene+turn ### Statistiques du serveur -Certaines statistiques sont disponibles sous `/opt/yunohost/galene/stats.json`, avec une version lisible sur `domain.ltd/stats.html`. Ceci n'est disponible que pour l'administrateur du serveur. +Les statistiques sont disponibles sous `/var/www/galene/stats.json`, avec une version lisible sur `domain.ltd/stats.html`. Cette page n'est disponible que pour l'administrateur du serveur. + +### Comment enregistrer ma conférence ? + +Assurez-vous que l'autorisation d'enregistrement est définie dans la configuration de votre groupe. Connectez-vous en tant qu'opérateur, puis dites `/record` dans la fenêtre de chat avant de commencer la visio. N'oubliez pas de dire `/unrecord` à la fin. Vous trouverez vos enregistrements sous `https://server.example.com/recordings/groupname/`. Les enregistrements vidéo sont stockés dans le dossier `/home/yunohost.app/galene/recordings`. ## Documentations et ressources * Site officiel de l'app : https://galene.org/ -* Documentation officielle utilisateur : https://yunohost.org/en/app_galene +* Documentation officielle utilisateur : https://galene.org/faq.html * Documentation officielle de l'admin : https://galene.org/ * Dépôt de code officiel de l'app : https://github.com/jech/galene * Documentation YunoHost pour cette app : https://yunohost.org/app_galene diff --git a/check_process b/check_process index 1209036..264bd8f 100644 --- a/check_process +++ b/check_process @@ -6,6 +6,7 @@ is_public=1 password="password" group_name="public with space" + group_description="My public space" ; Checks pkg_linter=1 setup_sub_dir=0 diff --git a/conf/passwd b/conf/passwd deleted file mode 100644 index e1d71a5..0000000 --- a/conf/passwd +++ /dev/null @@ -1 +0,0 @@ -__ADMIN__:__PASSWORD__ diff --git a/conf/systemd.service b/conf/systemd.service index 0f606a5..d804274 100644 --- a/conf/systemd.service +++ b/conf/systemd.service @@ -8,40 +8,8 @@ Type=simple WorkingDirectory=__FINALPATH__/ User=__APP__ Group=__APP__ -ExecStart=__FINALPATH__/galene -turn __PUBLIC_IP4__:__TURN_PORT__ -udp-range 49152-65535 +ExecStart=__FINALPATH__/galene -turn __PUBLIC_IP4__:__TURN_PORT__ -udp-range 49152-65535 -groups /home/yunohost.app/__APP__/groups -recordings /home/yunohost.app/__APP__/recordings LimitNOFILE=65536 -StandardOutput=append:/var/log/__APP__/__APP__.log -StandardError=inherit - -# Sandboxing options to harden security -# Depending on specificities of your service/app, you may need to tweak these -# .. but this should be a good baseline -# Details for these options: https://www.freedesktop.org/software/systemd/man/systemd.exec.html -NoNewPrivileges=yes -PrivateTmp=yes -PrivateDevices=yes -RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 -RestrictNamespaces=yes -RestrictRealtime=yes -DevicePolicy=closed -ProtectSystem=full -ProtectControlGroups=yes -ProtectKernelModules=yes -ProtectKernelTunables=yes -LockPersonality=yes -SystemCallFilter=~@clock @debug @module @mount @obsolete @reboot @setuid @swap - -# Denying access to capabilities that should not be relevant for webapps -# Doc: https://man7.org/linux/man-pages/man7/capabilities.7.html -CapabilityBoundingSet=~CAP_RAWIO CAP_MKNOD -CapabilityBoundingSet=~CAP_AUDIT_CONTROL CAP_AUDIT_READ CAP_AUDIT_WRITE -CapabilityBoundingSet=~CAP_SYS_BOOT CAP_SYS_TIME CAP_SYS_MODULE CAP_SYS_PACCT -CapabilityBoundingSet=~CAP_LEASE CAP_LINUX_IMMUTABLE CAP_IPC_LOCK -CapabilityBoundingSet=~CAP_BLOCK_SUSPEND CAP_WAKE_ALARM -CapabilityBoundingSet=~CAP_SYS_TTY_CONFIG -CapabilityBoundingSet=~CAP_MAC_ADMIN CAP_MAC_OVERRIDE -CapabilityBoundingSet=~CAP_NET_ADMIN CAP_NET_BROADCAST CAP_NET_RAW -CapabilityBoundingSet=~CAP_SYS_ADMIN CAP_SYS_PTRACE CAP_SYSLOG [Install] WantedBy=multi-user.target diff --git a/doc/DESCRIPTION.md b/doc/DESCRIPTION.md index 141205a..8951640 100644 --- a/doc/DESCRIPTION.md +++ b/doc/DESCRIPTION.md @@ -1 +1,10 @@ -Galène (or Galene) is a videoconference server (an “SFU”) that is easy to deploy and that requires moderate server resources. It was originally designed for lectures and conferences (where a single speaker streams audio and video to hundreds or thousands of users), but later evolved to be useful for student practicals (where users are divided into many small groups), and meetings (where a dozen users interact with each other). \ No newline at end of file +Galène is a videoconference server (an “SFU”) that is easy to deploy and that requires moderate server resources. It was originally designed for lectures and conferences (where a single speaker streams audio and video to hundreds or thousands of users), but later evolved to be useful for student practicals (where users are divided into many small groups), and meetings (where a dozen users interact with each other). + +### Client features: + +- multiparty audio and video +- text chat +- reasonably good support for mobile (Android and iPhone/iPad) +- screen and window sharing, including sharing multiple windows simultaneously (not on mobile) +- streaming video and audio from disk +- activity detection diff --git a/doc/DESCRIPTION_fr.md b/doc/DESCRIPTION_fr.md index 7e77181..cb17ea2 100644 --- a/doc/DESCRIPTION_fr.md +++ b/doc/DESCRIPTION_fr.md @@ -1 +1,10 @@ -Galène (ou Galene) est un serveur de visioconférence (un « SFU ») facile à déployer et qui nécessite des ressources serveur modérées. Il a été conçu à l'origine pour les cours et les conférences (où un seul orateur diffuse de l'audio et de la vidéo à des centaines ou des milliers d'utilisateurs), mais a évolué par la suite pour être utile pour les travaux pratiques des étudiants (où les utilisateurs sont divisés en plusieurs petits groupes) et les réunions (où un douzaine d'utilisateurs interagissent entre eux). +Galène est un serveur de visioconférence (un « SFU ») facile à déployer et qui nécessite des ressources serveur modérées. Il a été conçu à l'origine pour les cours et les conférences (où un seul orateur diffuse de l'audio et de la vidéo à des centaines ou des milliers d'utilisateurs), mais a évolué par la suite pour être utile pour les travaux pratiques des étudiants (où les utilisateurs sont divisés en plusieurs petits groupes) et les réunions (où un douzaine d'utilisateurs interagissent entre eux). + +### Fonctionnalités client : + +- audio et vidéo multipartites +- chat textuel +- assez bonne prise en charge pour mobile (Android et iPhone/iPad) +- partage d'écran et de fenêtre, y compris le partage de plusieurs fenêtres simultanément (pas sur mobile) +- streaming vidéo et audio à partir du disque +- détection d'activité diff --git a/doc/DISCLAIMER.md b/doc/DISCLAIMER.md index 7ec1d5c..be313fa 100644 --- a/doc/DISCLAIMER.md +++ b/doc/DISCLAIMER.md @@ -4,14 +4,14 @@ #### Creating and configuring groups -Groups are defined by JSON files located in the *Galène* folder (`/opt/yunohost/galene/groups`). Each group is represented by a `GroupName.json` file. +Groups are defined by JSON files located in the folder `/home/yunohost.app/galene/groups`. Each group is represented by a `GroupName.json` file. To create a new group, you need to create a `GroupNameExample.json` file (you can also make subfolder groups, and the groups will be accessible with `https://domain.tld/group/subfolder/GroupName`). Various configuration options are available (see https://github.com/YunoHost-Apps/galene_ynh/wiki/Configuration-file). -*NB: spaces are supported in group file names.* +*NB: Spaces are supported in group file names.* ### Configuring your TURN server -#### Using *Galène*'s TURN server +#### Using *Galène*'s internal TURN server Galène comes with a built-in TURN server that should work out-of-the-box. - If your server is behind NAT, allow incoming traffic to TCP port `8443` (or whatever is configured with the `-http` option in `/etc/systemd/system/galene.service`) and TCP/UDP port `1194` (or whatever is configured with the `-turn` option in `/etc/systemd/system/galene.service`) @@ -35,6 +35,13 @@ Galène comes with a built-in TURN server that should work out-of-the-box. To check if the TURN server is up and running, type `/relay-test` in the chat box. If the TURN server is properly configured, you should see a message saying that the relay test has been successful. +You can also install Galène with an external TURN server with this branch: https://github.com/YunoHost-Apps/galene_ynh/tree/galene+turn + ### Server Statistics page -Some statistics are available under `/opt/yunohost/galene/stats.json`, with a human-readable version at `domain.ltd/stats.html`. This is only available to the server administrator. +Statistics are available under `/var/www/galene/stats.json`, with a human-readable version at `domain.ltd/stats.html`. This is only available to the server administrator. + +### How do I record my lecture? + +Make sure allow-recording is set in your group configuration. Log-in as an operator, then say `/record` before you start your lecture. Don't forget to say `/unrecord` at the end. You will find your recordings under `https://server.example.com/recordings/groupname/`. The video recordings are stored in `/home/yunohost.app/galene/recordings` folder. + diff --git a/doc/DISCLAIMER_fr.md b/doc/DISCLAIMER_fr.md index f557adc..2fc4b08 100644 --- a/doc/DISCLAIMER_fr.md +++ b/doc/DISCLAIMER_fr.md @@ -4,7 +4,7 @@ Les salles de réunion *Galène* sont appelées « groupes ». Tout groupe est a #### Ajouter et configurer des groupes -Les groupes sont définis par des fichiers JSON situés dans le dossier *Galène* (`/opt/yunohost/galene/groups`). Chaque groupe est représenté par un fichier `GroupName.json`. +Les groupes sont définis par des fichiers JSON situés dans le dossier `/home/yunohost.app/galene/groups`. Chaque groupe est représenté par un fichier `GroupName.json`. Pour créer un nouveau groupe, vous devez créer un fichier `GroupNameExample.json` (vous pouvez également créer un sous-dossier, et les groupes seront accessibles avec` https://domain.tld/group/subfolder/GroupName`). Différentes options de configurations sont disponibles (voir https://github.com/YunoHost-Apps/galene_ynh/wiki/Configuration-file). *NB : les espaces sont pris en charge dans les noms de fichiers de groupe.* @@ -17,7 +17,7 @@ Galène est livré avec un serveur TURN intégré qui devrait fonctionner imméd #### Utilisation de votre propre serveur TURN - Installez [coturn_ynh](https://github.com/YunoHost-Apps/coturn_ynh). -- Ajoutez `/opt/yunohost/galene/data/ice-servers.json` avec ces lignes et changez `turn.example.org` et `secret` +- Ajoutez `/var/www/galene/data/ice-servers.json` avec ces lignes et changez `turn.example.org` et `secret` ``` [ @@ -31,10 +31,16 @@ Galène est livré avec un serveur TURN intégré qui devrait fonctionner imméd } ] ``` -- définir l'option de virage de `/etc/systemd/system/galene.service` sur `-turn auto` (ou `-turn ""` pour désactiver le serveur TURN intégré). +- Dans `/etc/systemd/system/galene.service` changer l'option `-turn auto` (ou `-turn ""` pour désactiver le serveur TURN intégré). -Pour vérifier si le serveur TURN est opérationnel, tapez `/relay-test` dans la boîte de dialogue ; si le serveur TURN est correctement configuré, vous devriez voir un message indiquant que le test du relai a réussi. +Pour vérifier si le serveur TURN est opérationnel, tapez `/relay-test` dans la boîte de dialogue du chat de *Galène* ; si le serveur TURN est correctement configuré, vous devriez voir un message indiquant que le test du relai a réussi. + +Vous pouvez également installer *Galène* avec un serveur TURN externe avec cette branch : https://github.com/YunoHost-Apps/galene_ynh/tree/galene+turn ### Statistiques du serveur -Certaines statistiques sont disponibles sous `/opt/yunohost/galene/stats.json`, avec une version lisible sur `domain.ltd/stats.html`. Ceci n'est disponible que pour l'administrateur du serveur. +Les statistiques sont disponibles sous `/var/www/galene/stats.json`, avec une version lisible sur `domain.ltd/stats.html`. Cette page n'est disponible que pour l'administrateur du serveur. + +### Comment enregistrer ma conférence ? + +Assurez-vous que l'autorisation d'enregistrement est définie dans la configuration de votre groupe. Connectez-vous en tant qu'opérateur, puis dites `/record` dans la fenêtre de chat avant de commencer la visio. N'oubliez pas de dire `/unrecord` à la fin. Vous trouverez vos enregistrements sous `https://server.example.com/recordings/groupname/`. Les enregistrements vidéo sont stockés dans le dossier `/home/yunohost.app/galene/recordings`. diff --git a/manifest.json b/manifest.json index 4197814..fe6287a 100644 --- a/manifest.json +++ b/manifest.json @@ -13,7 +13,7 @@ "website": "https://galene.org/", "demo": "https://galene.org:8443/", "admindoc": "https://galene.org/", - "userdoc": "https://yunohost.org/en/app_galene", + "userdoc": "https://galene.org/faq.html", "code": "https://github.com/jech/galene" }, "license": "MIT", diff --git a/scripts/backup b/scripts/backup index 11f1bbb..5d6324e 100755 --- a/scripts/backup +++ b/scripts/backup @@ -13,9 +13,6 @@ source /usr/share/yunohost/helpers # MANAGE SCRIPT FAILURE #================================================= -ynh_clean_setup () { - ynh_clean_check_starting -} # Exit if an error occurs during the execution of the script ynh_abort_if_errors @@ -28,6 +25,7 @@ app=$YNH_APP_INSTANCE_NAME final_path=$(ynh_app_setting_get --app=$app --key=final_path) domain=$(ynh_app_setting_get --app=$app --key=domain) +datadir=$(ynh_app_setting_get --app=$app --key=datadir) #================================================= # DECLARE DATA AND CONF FILES TO BACKUP @@ -40,6 +38,12 @@ ynh_print_info --message="Declaring files to be backed up..." ynh_backup --src_path="$final_path" +#================================================= +# BACKUP THE DATA DIR +#================================================= + +ynh_backup --src_path="$datadir" --is_big + #================================================= # BACKUP THE NGINX CONFIGURATION #================================================= diff --git a/scripts/change_url b/scripts/change_url index 344d4bd..d650a59 100755 --- a/scripts/change_url +++ b/scripts/change_url @@ -9,8 +9,6 @@ source _common.sh source /usr/share/yunohost/helpers -ynh_abort_if_errors - #================================================= # RETRIEVE ARGUMENTS #================================================= @@ -110,7 +108,7 @@ fi #================================================= ynh_script_progression --message="Starting a systemd service..." --weight=3 -ynh_systemd_action --service_name=$app --action=start --log_path="/var/log/$app/$app.log" +ynh_systemd_action --service_name=$app --action=start --log_path="systemd" #================================================= # RELOAD NGINX diff --git a/scripts/install b/scripts/install index 3fa1730..e686616 100755 --- a/scripts/install +++ b/scripts/install @@ -101,15 +101,11 @@ chown -R $app:www-data "$final_path" # CREATE DATA AND GROUPS FOLDER #================================================= -# Define app's data directory -data="$final_path/data" # Create data folder -mkdir -p "$data" - -# Define app's groups directory -groups="$final_path/groups" -# Create groups folder -mkdir -p "$groups" +mkdir -p "$final_path/data" +echo '$admin:$password' > "$final_path/data/passwd" +chmod 400 "$final_path/data/passwd" +chown $app: "$final_path/data/passwd" #================================================= # NGINX CONFIGURATION @@ -119,6 +115,20 @@ ynh_script_progression --message="Configuring NGINX web server..." --weight=2 # Create a dedicated NGINX config ynh_add_nginx_config +#================================================= +# CREATE DATA DIRECTORY +#================================================= +ynh_script_progression --message="Creating a data directory..." --weight=1 + +datadir=/home/yunohost.app/$app +ynh_app_setting_set --app=$app --key=datadir --value=$datadir + +mkdir -p $datadir/{groups,recordings} + +chmod 750 "$datadir" +chmod -R o-rwx "$datadir" +chown -R $app:www-data "$datadir" + #================================================= # SETUP SYSTEMD #================================================= @@ -133,11 +143,8 @@ ynh_add_systemd_config # MODIFY A CONFIG FILES #================================================= -ynh_add_config --template="../conf/passwd" --destination="$final_path/data/passwd" - -chmod 400 "$final_path/data/passwd" -chown $app "$final_path/data/passwd" -ynh_add_config --template="../conf/groupname.json" --destination="$final_path/groups/$group_name.json" +# Create a group name config +ynh_add_config --template="../conf/groupname.json" --destination="$datadir/groups/$group_name.json" #================================================= # INTEGRATE SERVICE IN YUNOHOST @@ -152,7 +159,7 @@ yunohost service add $app --description="Videoconferencing server" --log="/var/l ynh_script_progression --message="Starting a systemd service..." --weight=1 # Start a systemd service -ynh_systemd_action --service_name=$app --action=start --log_path="/var/log/$app/$app.log" +ynh_systemd_action --service_name=$app --action=start --log_path="systemd" #================================================= # SETUP SSOWAT diff --git a/scripts/remove b/scripts/remove index 27f03fd..17b441a 100755 --- a/scripts/remove +++ b/scripts/remove @@ -20,6 +20,7 @@ domain=$(ynh_app_setting_get --app=$app --key=domain) port=$(ynh_app_setting_get --app=$app --key=port) turn_port=$(ynh_app_setting_get --app=$app --key=turn_port) final_path=$(ynh_app_setting_get --app=$app --key=final_path) +datadir=$(ynh_app_setting_get --app=$app --key=datadir) #================================================= # STANDARD REMOVE @@ -50,6 +51,19 @@ ynh_script_progression --message="Removing app main directory..." --weight=2 # Remove the app directory securely ynh_secure_remove --file="$final_path" +#================================================= +# REMOVE DATA DIR +#================================================= + +YNH_APP_PURGE=1 + +# Remove the app data directory with the command `yunohost app remove --purge` +if [ "${YNH_APP_PURGE:-0}" -eq 1 ] +then + ynh_script_progression --message="Removing $app data directory..." --weight=2 + ynh_secure_remove --file="$datadir" +fi + #================================================= # REMOVE NGINX CONFIGURATION #================================================= diff --git a/scripts/restore b/scripts/restore index 9ae79c2..23b0000 100755 --- a/scripts/restore +++ b/scripts/restore @@ -14,9 +14,6 @@ source /usr/share/yunohost/helpers # MANAGE SCRIPT FAILURE #================================================= -ynh_clean_setup () { - ynh_clean_check_starting -} # Exit if an error occurs during the execution of the script ynh_abort_if_errors @@ -68,6 +65,19 @@ chmod 750 "$final_path" chmod -R o-rwx "$final_path" chown -R $app:www-data "$final_path" +#================================================= +# RESTORE THE DATA DIRECTORY +#================================================= +ynh_script_progression --message="Restoring the data directory..." --weight=1 + +ynh_restore_file --origin_path="$datadir" --not_mandatory + +mkdir -p $datadir/{groups,recordings} + +chmod 750 "$datadir" +chmod -R o-rwx "$datadir" +chown -R $app:www-data "$datadir" + #================================================= # RESTORE SYSTEMD #================================================= @@ -88,7 +98,7 @@ yunohost service add $app --description="Videoconferencing server" --log="/var/l #================================================= ynh_script_progression --message="Starting a systemd service..." --weight=3 -ynh_systemd_action --service_name=$app --action=start --log_path="/var/log/$app/$app.log" +ynh_systemd_action --service_name=$app --action=start --log_path="systemd" #================================================= # GENERIC FINALIZATION diff --git a/scripts/upgrade b/scripts/upgrade index ceff2bc..509475f 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -31,6 +31,20 @@ architecture=$(ynh_detect_arch) upgrade_type=$(ynh_check_app_version_changed) +#================================================= +# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP +#================================================= +ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --weight=1 + +# 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 + #================================================= # ENSURE DOWNWARD COMPATIBILITY #================================================= @@ -56,18 +70,12 @@ if ynh_legacy_permissions_exists; then fi #================================================= -# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP +# CREATE DEDICATED USER #================================================= -ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --weight=1 +ynh_script_progression --message="Making sure dedicated system user exists..." --weight=1 -# 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 +# Create a dedicated user (if not existing) +ynh_system_user_create --username=$app --home_dir="$final_path" #================================================= # STANDARD UPGRADE STEPS @@ -90,19 +98,14 @@ then # tmpdir="$(mktemp -d)" # # Backup the config file in the temp dir - # cp -ar "$final_path/groups" "$tmpdir/groups" # cp -ar "$final_path/data/passwd" "$tmpdir/passwd" # # Remove the app directory securely # ynh_secure_remove --file="$final_path" - ynh_setup_source --dest_dir="$final_path" --source_id="$architecture" --keep="$final_path/groups $final_path/data/passwd" - - # # Create data and groups folder - # mkdir -p "$final_path/data" "$final_path/groups" + ynh_setup_source --dest_dir="$final_path" --source_id="$architecture" --keep="$final_path/data/passwd" # # Copy the admin saved settings from tmp directory to final path - # cp -ar "$tmpdir/groups" "$final_path/groups" # cp -ar "$tmpdir/passwd" "$final_path/data/passwd" # # Remove the tmp directory securely @@ -121,14 +124,6 @@ ynh_script_progression --message="Upgrading NGINX web server configuration..." - # Create a dedicated NGINX config ynh_add_nginx_config -#================================================= -# CREATE DEDICATED USER -#================================================= -ynh_script_progression --message="Making sure dedicated system user exists..." --weight=1 - -# Create a dedicated user (if not existing) -ynh_system_user_create --username=$app --home_dir="$final_path" - #================================================= # SETUP SYSTEMD #================================================= @@ -151,7 +146,7 @@ yunohost service add $app --description="Videoconferencing server" --log="/var/l #================================================= ynh_script_progression --message="Starting a systemd service..." --weight=1 -ynh_systemd_action --service_name=$app --action=start --log_path="/var/log/$app/$app.log" +ynh_systemd_action --service_name=$app --action=start --log_path="systemd" #================================================= # RELOAD NGINX