diff --git a/README.md b/README.md index fcd763a..ee2dc3e 100644 --- a/README.md +++ b/README.md @@ -1,121 +1,44 @@ -SOGo for Yunohost -================= + -[![Integration level](https://dash.yunohost.org/integration/sogo.svg)](https://dash.yunohost.org/appci/app/sogo) ![](https://ci-apps.yunohost.org/ci/badges/sogo.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/sogo.maintain.svg) -[![Install sogo with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=sogo) +# SOGo for YunoHost -> *This package allow you to install sogo 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.* +[![Integration level](https://dash.yunohost.org/integration/sogo.svg)](https://dash.yunohost.org/appci/app/sogo) ![Working status](https://ci-apps.yunohost.org/ci/badges/sogo.status.svg) ![Maintenance status](https://ci-apps.yunohost.org/ci/badges/sogo.maintain.svg) +[![Install SOGo with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=sogo) -Overview --------- +*[Lire ce readme en français.](./README_fr.md)* + +> *This package allows you to install SOGo quickly and simply on a YunoHost server. +If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/install) to learn how to install it.* + +## Overview SOGo is an opensource groupware solution which has Webmail, a global address book and Calender and Contacts which can be synced via caldav or cardav. -**Shipped version:** 4.0.7-1 -Screenshots ------------ +**Shipped version:** 5.0.1~ynh1 -| Localized |Drag'n'Drop | Reminders | Delegation | -| :------------: | :------------: | :------------: | :------------: | -| ![](https://sogo.nu/img/features/localized.png) | ![](https://sogo.nu/img/features/dnd_01.png) | ![](https://sogo.nu/img/features/reminders.png) | ![](https://sogo.nu/img/features/delegation.png) | -| SOGo is available in over a dozen languages so you'll always feel at home. If your language is missing, you can easily contribute to the project and submit your translation. | Move messages to folders, drag contacts to address books, and modify events time and duration from the tip of your finger. Just like a desktop app. | Set alarms to important events and get alerted directly from your browser. | Set alarms to important events and get alerted directly from your browser. | Delegate access to your mail account or delegate an invitation to another person. | +**Demo:** https://demo.sogo.nu/SOGo/ +## Documentation and resources -| Resource Reservation | HTML | Mail Return Receipt | Forward and Auto-Reply | -| :------------: | :------------: | :------------: | :------------: | -| ![](https://sogo.nu/img/features/resource.png) | ![](https://sogo.nu/img/features/html.png) | ![](https://sogo.nu/img/features/return-receipt.png) | ![](https://sogo.nu/img/features/auto-reply.png) | -| Define resources like projectors and conference rooms to automatically accept invitations for them while avoiding double-booking. | Compose HTML mail with the complete inline [rich-text editor](http://www.ckeditor.com). | Request or answer to return requests to confirm the arrival of messages. | Set an auto reply while on vacation or forward all your incoming mail to one ore many alternate email addresses. | +* Official app website: +* Official admin documentation: +* Upstream app code repository: +* YunoHost documentation for this app: +* Report a bug: -| S/MIME | Mail Filtering | Sharing | Recurring Events | -| :------------: | :------------: | :------------: | :------------: | -| ![](https://sogo.nu/img/features/security.png) | ![](https://sogo.nu/img/features/mail-filters.png) | ![](https://sogo.nu/img/features/sharing.png) | ![](https://sogo.nu/img/features/recurring-events.png) | -| Sign and encrypt messages using your personal secure certificate. Automatically manage public certificates you receive by email. | Define powerful server-side filters to automatically act on new messages. Forward, discard, reject, flag or move incoming mail depending on complex criteria. | Share your mail, calendars and address books with other users. Define specific rights to each person or group of persons. | Define precise recurrence pattern for your repeating events and create exceptions if necessary. | +## Developer info -| Free/Busy Time | Notifications | Categories | Multiple Mail Accounts | Export/Import | -| :------------: | :------------: | :------------: | :------------: | :------------: | -| ![](https://sogo.nu/img/features/freebusy.png) | ![](https://sogo.nu/img/features/notifications.png) | ![](https://sogo.nu/img/features/categories.png) | ![](https://sogo.nu/img/features/imap-accounts.png) | ![](https://sogo.nu/img/features/import.png) | -| Before sending an invitation, see the free/busy periods of attendees, either from the local SOGo server or a remote Microsoft Exchange server. Automatically set off-hours as busy if you like. | Be informed if someone modifies your calendar or automatically inform someone if your calendar changes. | Choose from a predefined set of categories or create your own categories and associate them to your events and contacts. | Configure all your mail accounts (IMAP) from SOGo and forget about login-in to multiple webmail services. | Export calendars or import events from a vCalendar file. Export contacts to LDIF or import cards from a LDIF of vCard file. Export a mailbox to zip archive. | - - -Demo ----- - -* [Official demo](https://sogo.nu/) - - - -Documentation -------------- - - * Official documentation: https://sogo.nu/support.html#/documentation - * YunoHost documentation: There no other documentations, feel free to contribute. - -YunoHost specific features --------------------------- - -### Multi-users support - -LDAP and HTTP auth are supported. - -### Supported architectures - -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/sogo%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/sogo/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/sogo%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/sogo/) - - - -Links ------ - - * Report a bug: https://github.com/YunoHost-Apps/sogo_ynh/issues - * App website: https://sogo.nu/ - * YunoHost website: https://yunohost.org/ - ---- - -Install -------- - -From command line: - -`sudo yunohost app install -l sogo https://github.com/YunoHost-Apps/sogo_ynh` - -Upgrade -------- - -From command line: - -`sudo yunohost app upgrade sogo -u https://github.com/YunoHost-Apps/sogo_ynh` - -Developers infos ----------------- - -Please do your pull request to the [testing branch](https://github.com/YunoHost-Apps/sogo_ynh/tree/testing). +Please send your pull request to the [testing branch](https://github.com/YunoHost-Apps/sogo_ynh/tree/testing). To try the testing branch, please proceed like that. -``` + +``` bash sudo yunohost app install https://github.com/YunoHost-Apps/sogo_ynh/tree/testing --debug or sudo yunohost app upgrade sogo -u https://github.com/YunoHost-Apps/sogo_ynh/tree/testing --debug ``` -License -------- - -Sogo is published under the GPL-v2 and LGPL-v2 liencience : https://github.com/inverse-inc/sogo/blob/master/COPYING.GPL and https://github.com/inverse-inc/sogo/blob/master/COPYING.LGPL - -Todo ----- - --[ ] More Tests +**More info regarding app packaging:** diff --git a/README_fr.md b/README_fr.md new file mode 100644 index 0000000..7bcc802 --- /dev/null +++ b/README_fr.md @@ -0,0 +1,44 @@ + + +# SOGo pour YunoHost + +[![Niveau d'intégration](https://dash.yunohost.org/integration/sogo.svg)](https://dash.yunohost.org/appci/app/sogo) ![Statut du fonctionnement](https://ci-apps.yunohost.org/ci/badges/sogo.status.svg) ![Statut de maintenance](https://ci-apps.yunohost.org/ci/badges/sogo.maintain.svg) +[![Installer SOGo avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=sogo) + +*[Read this readme in english.](./README.md)* + +> *Ce package vous permet d'installer SOGo rapidement et simplement sur un serveur YunoHost. +Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour savoir comment l'installer et en profiter.* + +## Vue d'ensemble + +SOGo is an opensource groupware solution which has Webmail, a global address book and Calender and Contacts which can be synced via caldav or cardav. + + +**Version incluse :** 5.0.1~ynh1 + +**Démo :** https://demo.sogo.nu/SOGo/ +## Documentations et ressources + +* Site officiel de l'app : +* Documentation officielle de l'admin : +* Dépôt de code officiel de l'app : +* Documentation YunoHost pour cette app : +* Signaler un bug : + +## Informations pour les développeurs + +Merci de faire vos pull request sur la [branche testing](https://github.com/YunoHost-Apps/sogo_ynh/tree/testing). + +Pour essayer la branche testing, procédez comme suit. + +``` bash +sudo yunohost app install https://github.com/YunoHost-Apps/sogo_ynh/tree/testing --debug +ou +sudo yunohost app upgrade sogo -u https://github.com/YunoHost-Apps/sogo_ynh/tree/testing --debug +``` + +**Plus d'infos sur le packaging d'applications :** diff --git a/check_process b/check_process index 0a909a8..2358f21 100644 --- a/check_process +++ b/check_process @@ -5,12 +5,10 @@ ;; Test complet ; Manifest - domain="domain.tld" (DOMAIN) - path="/SOGo" (PATH) - admin="john" (USER) - language="French" - is_public=1 (PUBLIC|public=1|private=0) - port="20000" (PORT) + domain="domain.tld" + path="/SOGo" + admin="john" + is_public=1 ; Checks pkg_linter=1 setup_sub_dir=1 @@ -20,11 +18,12 @@ setup_public=1 upgrade=1 upgrade=1 from_commit=cc07f5da79498ef948c31a99f6ace9ad0a5b9ec1 + upgrade=1 from_commit=2fc174c57586df38506a07195decb08eed02f55f backup_restore=1 multi_instance=0 - incorrect_path=1 - port_already_use=1 (8448) change_url=0 ;;; Upgrade options ; commit=cc07f5da79498ef948c31a99f6ace9ad0a5b9ec1 name=Before group permission support + ; commit=2fc174c57586df38506a07195decb08eed02f55f + name=Before refactoring diff --git a/conf/app.src b/conf/app.src deleted file mode 100644 index e4dd89f..0000000 --- a/conf/app.src +++ /dev/null @@ -1,6 +0,0 @@ -SOURCE_URL=url of app's source -SOURCE_SUM=sha256 checksum -SOURCE_SUM_PRG=sha256sum -SOURCE_FORMAT=tar.gz -SOURCE_IN_SUBDIR=true -SOURCE_FILENAME= diff --git a/conf/cron b/conf/cron index 3e4484b..f770c98 100644 --- a/conf/cron +++ b/conf/cron @@ -2,17 +2,17 @@ # Vacation messages expiration # The credentials file should contain the sieve admin credentials (username:passwd) -0 0 * * * __APP__ /opt/yunohost/__APP__/sbin/sogo-tool update-autoreply -p /etc/sogo/sieve.creds +0 0 * * * __APP__ /opt/yunohost/__APP__/sbin/sogo-tool update-autoreply -p /etc/sogo/sieve.creds # Session cleanup - runs every minute # - Ajust the nbMinutes parameter to suit your needs # Example: Sessions without activity since 60 minutes will be dropped: -* * * * * __APP__ /opt/yunohost/__APP__/sbin/sogo-tool expire-sessions 60 > /dev/null 2>&1 +* * * * * __APP__ /opt/yunohost/__APP__/sbin/sogo-tool expire-sessions 60 > /dev/null 2>&1 # Email alarms - runs every minutes # If you need to use SMTP AUTH for outgoing mails, specify credentials to use # with '-p /path/to/credentialsFile' (same format as the sieve credentials) -* * * * * __APP__ /opt/yunohost/__APP__/sbin/sogo-ealarms-notify > /dev/null 2>&1 +* * * * * __APP__ /opt/yunohost/__APP__/sbin/sogo-ealarms-notify > /dev/null 2>&1 # Daily backups # - writes to ~sogo/backups/ by default diff --git a/conf/systemd.service b/conf/systemd.service index 8079db1..221a0a9 100644 --- a/conf/systemd.service +++ b/conf/systemd.service @@ -12,5 +12,35 @@ ExecStart=/opt/yunohost/__APP__/sbin/sogod -WOWorkersCount ${PREFORK} -WOPidFile PIDFile=/run/__APP__/sogo.pid User=__APP__ +# 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 new file mode 100644 index 0000000..f03d178 --- /dev/null +++ b/doc/DESCRIPTION.md @@ -0,0 +1 @@ +SOGo is an opensource groupware solution which has Webmail, a global address book and Calender and Contacts which can be synced via caldav or cardav. diff --git a/scripts/experimental_helper.sh b/doc/DISCLAIMER.md similarity index 100% rename from scripts/experimental_helper.sh rename to doc/DISCLAIMER.md diff --git a/manifest.json b/manifest.json index 872fd07..55c1aee 100644 --- a/manifest.json +++ b/manifest.json @@ -2,13 +2,20 @@ "name": "SOGo", "id": "sogo", "packaging_format": 1, - "license": "LGPL-2.1,GPL-2.0", - "url": "https://sogo.nu/", - "version": "4.0.7-1~ynh2", "description": { - "en": "An opensource groupware for E-Mail, Contacts and Calender.", - "fr": "Un groupware opensource pour les e-mail, contacts et calendrier" + "en": "Opensource groupware for E-Mail, Contacts and Calender", + "fr": "Groupware opensource pour les e-mail, contacts et calendrier" }, + "version": "5.0.1~ynh1", + "url": "https://sogo.nu/", + "upstream": { + "license": "LGPL-2.1,GPL-2.0", + "website": "https://sogo.nu/", + "demo": "https://demo.sogo.nu/SOGo/", + "admindoc": "https://www.sogo.nu/support.html#/documentation", + "code": "https://github.com/inverse-inc/sogo" + }, + "license": "LGPL-2.1,GPL-2.0", "maintainer": { "name": "Josué Tille", "email": "josue@tille.ch" @@ -24,35 +31,21 @@ "mysql" ], "requirements": { - "yunohost": ">= 4.1" + "yunohost": ">= 4.3.0" }, "arguments": { "install" : [ { "name": "domain", - "type": "domain", - "ask": { - "en": "Choose a domain name for SOGo", - "fr": "Choisissez un nom de domaine pour SOGo" - }, - "example": "example.com" + "type": "domain" }, { "name": "admin", - "type": "user", - "ask": { - "en": "Choose an admin user", - "fr": "Choisissez l’administrateur" - }, - "example": "johndoe" + "type": "user" }, { "name": "is_public", "type": "boolean", - "ask": { - "en": "Is it a public site ? To be able to use caldav and cardav you need to set as public.", - "fr": "Est-ce un site public ? Pour pouvoir utiliser caldav et cardav vous devz mettre en public." - }, "help": { "en": "If it's not public, everybody which want to access to any page of SOGo need to be authenticated on the SSO. On the public mode anybody can access to the authentication page. The shared calendar will be also accessible by anybody who has this link", "fr": "Si n'est pas publique, n'importe qui veux accéder à n'importe quelle page de SOGo doit être authentifié dans le SSO. Dans le mode publique n'importe qui peut accéder à la page d'authentification de SOGo. Les agenda partagé seront aussi accessible par n'import qui qui à ce liens." diff --git a/scripts/_common.sh b/scripts/_common.sh index 0f5273b..173cd44 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -4,16 +4,13 @@ # SET ALL CONSTANTS #================================================= -app=$YNH_APP_INSTANCE_NAME +# dependencies used by the app +pkg_dependencies="sogo stunnel4 memcached" #================================================= # DEFINE ALL COMMON FONCTIONS #================================================= -install_dependance() { - ynh_install_app_dependencies sogo stunnel4 memcached -} - config_stunnel() { ynh_add_config --template="stunnel.conf" --destination="/etc/stunnel/$app.conf" @@ -21,11 +18,6 @@ config_stunnel() { ynh_replace_string --match_string "ENABLED=0" --replace_string "ENABLED=1" --target_file /etc/default/stunnel4 } -config_cron() { - ynh_add_config --template="cron" --destination="/etc/cron.d/$app" - systemctl restart cron -} - config_nginx() { ynh_add_nginx_config diff --git a/scripts/backup b/scripts/backup index 05d1216..4568644 100755 --- a/scripts/backup +++ b/scripts/backup @@ -3,47 +3,78 @@ #================================================= # GENERIC START #================================================= +# IMPORT GENERIC HELPERS +#================================================= -# Import common cmd -source ../settings/scripts/experimental_helper.sh +# Keep this path for calling _common.sh inside the execution's context of backup and restore scripts source ../settings/scripts/_common.sh - -# Source YunoHost helpers source /usr/share/yunohost/helpers -# Stop script if errors +#================================================= +# MANAGE SCRIPT FAILURE +#================================================= + +ynh_clean_setup () { + ### Remove this function if there's nothing to clean before calling the remove script. + true +} +# Exit if an error occurs during the execution of the script ynh_abort_if_errors +#================================================= +# LOAD SETTINGS +#================================================= ynh_print_info --message="Loading installation settings..." -# retrieve useful param -domain=$(ynh_app_setting_get --app $app --key domain) -db_name=$(ynh_app_setting_get --app $app --key db_name) +app=$YNH_APP_INSTANCE_NAME + +domain=$(ynh_app_setting_get --app=$app --key=domain) +db_name=$(ynh_app_setting_get --app=$app --key=db_name) #================================================= -# STANDARD BACKUP STEPS +# DECLARE DATA AND CONF FILES TO BACKUP #================================================= +ynh_print_info --message="Declaring files to be backed up..." -ynh_print_info --message="Backing up configuration..." - +#================================================= # BACKUP THE NGINX CONFIGURATION -ynh_backup --src_path "/etc/nginx/conf.d/$domain.d/$app.conf" +#================================================= -# Backup SOGo config -ynh_backup --src_path "/etc/$app" +ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" -# Backup stunnel config -ynh_backup --src_path "/etc/stunnel/$app.conf" +#================================================= +# BACKUP SOGo CONFIGURATION +#================================================= -# Backup Cron -ynh_backup --src_path "/etc/cron.d/$app" +ynh_backup --src_path="/etc/$app" -# Backup Logs -ynh_print_info --message="Backing up logs" -ynh_backup --src_path "/var/log/$app" +#================================================= +# BACKUP STUNNEL CONFIGURATION +#================================================= +ynh_backup --src_path="/etc/stunnel/$app.conf" + +#================================================= +# BACKUP CRON +#================================================= + +ynh_backup --src_path="/etc/cron.d/$app" + +#================================================= +# BACKUP LOGS +#================================================= + +ynh_backup --src_path="/var/log/$app" + +#================================================= # BACKUP THE MYSQL DATABASE -ynh_print_info --message="Backing up database" -ynh_mysql_dump_db "$db_name" > db.sql +#================================================= +ynh_print_info --message="Backing up the MySQL database..." + +ynh_mysql_dump_db --database="$db_name" > db.sql + +#================================================= +# END OF SCRIPT +#================================================= ynh_print_info --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." diff --git a/scripts/change_url b/scripts/change_url index 1813e6b..513dfbc 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -1,30 +1,34 @@ #!/bin/bash #================================================= -# GENERIC START +# GENERIC STARTING +#================================================= +# IMPORT GENERIC HELPERS #================================================= -# Import common cmd -source ./experimental_helper.sh -source ./_common.sh - -# IMPORT GENERIC HELPERS +source _common.sh source /usr/share/yunohost/helpers -# Exit if an error occurs during the execution of the script -ynh_abort_if_errors - +#================================================= +# RETRIEVE ARGUMENTS +#================================================= ynh_script_progression --message="Loading installation settings..." # RETRIEVE ARGUMENTS old_domain=$YNH_APP_OLD_DOMAIN domain=$YNH_APP_NEW_DOMAIN -path_url=$(ynh_normalize_url_path --path_url $YNH_APP_NEW_PATH) +path_url=$YNH_APP_NEW_PATH + app=$YNH_APP_INSTANCE_NAME -port=$(ynh_app_setting_get --app $app --key web_port) -admin=$(ynh_app_setting_get --app $app --key admin) -final_path=$(ynh_app_setting_get --app $app --key final_path) +#================================================= +# LOAD SETTINGS +#================================================= +ynh_script_progression --message="Loading installation settings..." --weight=1 + +port=$(ynh_app_setting_get --app=$app --key=web_port) +admin=$(ynh_app_setting_get --app=$app --key=admin) +final_path=$(ynh_app_setting_get --app=$app --key=final_path) # Check if the new path stay /SOGo if not exit @@ -36,8 +40,7 @@ fi #================================================= # STANDARD MODIFICATIONS #================================================= - -ynh_script_progression --message="Updating nginx configuration..." +ynh_script_progression --message="Updating NGINX configuration..." # MODIFY URL IN NGINX CONF nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf @@ -52,4 +55,8 @@ ynh_store_file_checksum --file "/etc/nginx/conf.d/$domain.d/$app.conf" #Configure Nginx config_nginx +#================================================= +# END OF SCRIPT +#================================================= + ynh_script_progression --message="Change of URL completed for $app" --last diff --git a/scripts/install b/scripts/install index 8e6324d..4b9d7be 100755 --- a/scripts/install +++ b/scripts/install @@ -3,105 +3,172 @@ #================================================= # GENERIC START #================================================= +# IMPORT GENERIC HELPERS +#================================================= -# Import common cmd -source ./experimental_helper.sh -source ./_common.sh - -# Source YunoHost helpers +source _common.sh source /usr/share/yunohost/helpers -# Stop script if errors +#================================================= +# MANAGE SCRIPT FAILURE +#================================================= + +ynh_clean_setup () { + ### Remove this function if there's nothing to clean before calling the remove script. + true +} +# Exit if an error occurs during the execution of the script ynh_abort_if_errors -ynh_script_progression --message="Validating installation parameters..." - +#================================================= # RETRIEVE ARGUMENTS FROM THE MANIFEST +#================================================= + domain=$YNH_APP_ARG_DOMAIN admin=$YNH_APP_ARG_ADMIN is_public=$YNH_APP_ARG_IS_PUBLIC +app=$YNH_APP_INSTANCE_NAME + +#================================================= +# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS +#================================================= +ynh_script_progression --message="Validating installation parameters..." --weight=1 + # Set variable path_url="/SOGo" -# final_path="/opt/yunohost/$app" # Register (book) web path -ynh_webpath_register --app $app --domain $domain --path_url $path_url - -# Find a port for SOGo -ynh_script_progression --message="Finding available ports..." -port=$(ynh_find_port --port 20000) -smtp_port=$(ynh_find_port --port $((port+1))) +ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url +#================================================= # STORE SETTINGS FROM MANIFEST -ynh_script_progression --message="Storing installation settings..." -ynh_app_setting_set --app $app --key admin --value $admin -ynh_app_setting_set --app $app --key is_public --value $is_public -ynh_app_setting_set --app $app --key smtp_port --value $smtp_port -ynh_app_setting_set --app $app --key web_port --value $port +#================================================= +ynh_script_progression --message="Storing installation settings..." --weight=1 + +ynh_app_setting_set --app=$app --key=domain --value=$domain +ynh_app_setting_set --app=$app --key=path --value=$path_url +ynh_app_setting_set --app=$app --key=admin --value=$admin #================================================= # STANDARD MODIFICATIONS #================================================= +# FIND AND OPEN A PORT +#================================================= +ynh_script_progression --message="Finding an available port..." --weight=1 +port=$(ynh_find_port --port=20000) +ynh_app_setting_set --app=$app --key=web_port --value=$port + +smtp_port=$(ynh_find_port --port=$((port+1))) +ynh_app_setting_set --app=$app --key=smtp_port --value=$smtp_port + +#================================================= # INSTALL DEPENDENCIES -ynh_script_progression --message="Installing dependencies..." --weight=7 -install_dependance +#================================================= +ynh_script_progression --message="Installing dependencies..." --weight=1 +ynh_install_app_dependencies $pkg_dependencies + +#================================================= # CREATE A MYSQL DATABASE -ynh_script_progression --message="Configuring MySQL database..." -db_name=$(ynh_sanitize_dbid $app) -db_user=$db_name -ynh_app_setting_set --app $app --key db_name --value $db_name -ynh_app_setting_set --app $app --key db_user --value $db_user -ynh_mysql_setup_db --db_name $db_name --db_user $db_user +#================================================= +ynh_script_progression --message="Creating a MySQL database..." --weight=1 +db_name=$(ynh_sanitize_dbid --db_name=$app) +db_user=$db_name +ynh_app_setting_set --app=$app --key=db_name --value=$db_name +ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name + +#================================================= +# ADD A CONFIGURATION +#================================================= ynh_script_progression --message="Configuring application..." --weight=3 # Configure SOGO mkdir -p /etc/$app -ynh_add_config --template="sogo.conf" --destination="/etc/$app/sogo.conf" +ynh_add_config --template="../conf/sogo.conf" --destination="/etc/$app/sogo.conf" # Configure stunnel # To fix the issue https://sogo.nu/bugs/view.php?id=31 we need stunnel to be able to connect correctly to the smtp server -config_stunnel +ynh_add_config --template="../conf/stunnel.conf" --destination="/etc/stunnel/$app.conf" -# Install crontab -config_cron +# Enable stunnel at startup +ynh_replace_string --match_string="ENABLED=0" --replace_string="ENABLED=1" --target_file="/etc/default/stunnel4" + +#================================================= +# SETUP A CRON +#================================================= +ynh_script_progression --message="Setuping a cron..." --weight=1 + +ynh_add_config --template="../conf/cron" --destination="/etc/cron.d/$app" +chown root: "/etc/cron.d/$app" +chmod 644 "/etc/cron.d/$app" + +#================================================= +# NGINX CONFIGURATION +#================================================= +ynh_script_progression --message="Configuring NGINX web server..." --weight=1 -#Configure Nginx -ynh_script_progression --message="Configuring nginx..." --weight=1 config_nginx +#================================================= +# SECURE FILES AND DIRECTORIES +#================================================= +ynh_script_progression --message="Protecting directory..." --weight=1 + +chown -R $app:$app /etc/$app +chmod u=rwX,g=rX,o= -R /etc/$app +chown -R $app:$app /var/log/$app +chmod u=rwX,g=rX,o= -R /var/log/$app + #================================================= # GENERIC FINALIZATION #================================================= +# SETUP LOGROTATE +#================================================= +ynh_script_progression --message="Configuring log rotation..." --weight=1 -# SECURE FILES AND DIRECTORIES -ynh_script_progression --message="Protecting directory..." -set_permission +ynh_use_logrotate --logfile="/var/log/$app/sogo.log" --nonappend + +#================================================= +# INTEGRATE SERVICE IN YUNOHOST +#================================================= +ynh_script_progression --message="Integrating service in YunoHost..." --weight=1 + +yunohost service add $app --description="Groupware for E-Mail, Contacts and Calender" --log="/var/log/$app/$app.log" + +#================================================= +# START SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Starting a systemd service..." --weight=1 + +ynh_systemd_action --service_name=$app --action="restart" --log_path="systemd" +ynh_systemd_action --service_name=stunnel4 --action="restart" --log_path="systemd" + +#================================================= +# SETUP SSOWAT +#================================================= +ynh_script_progression --message="Configuring permissions..." --weight=1 + +if [ $is_public -eq 1 ] +then + ynh_permission_update --permission="main" --add="visitors" +fi -# configure the sso -ynh_script_progression --message="Configuring permissions..." ynh_permission_create --permission="sync_client" --allowed='visitors' --auth_header=false\ --label="Sync client" --protected=true --show_tile=false\ --additional_urls="/Microsoft-Server-ActiveSync" "/principals" "/.well-known/caldav" "/.well-known/carddav" -if [ "$is_public" == '1' ]; -then - ynh_permission_update --permission "main" --add "visitors" -fi +#================================================= +# RELOAD NGINX +#================================================= +ynh_script_progression --message="Reloading NGINX web server..." --weight=1 -# SETUP LOGROTATE -ynh_script_progression --message="Configuring log rotation..." -ynh_use_logrotate --logfile /var/log/$app/sogo.log --nonappend +ynh_systemd_action --service_name=nginx --action=reload -# Register service -yunohost service add $app --log "/var/log/$app/sogo.log" - -# Restart services -ynh_script_progression --message="Starting sogo services..." --weight=3 -systemctl restart sogo -systemctl restart stunnel4 +#================================================= +# END OF SCRIPT +#================================================= ynh_script_progression --message="Installation of $app completed" --last diff --git a/scripts/remove b/scripts/remove index 13e6b77..98d1b55 100755 --- a/scripts/remove +++ b/scripts/remove @@ -3,57 +3,92 @@ #================================================= # GENERIC START #================================================= +# IMPORT GENERIC HELPERS +#================================================= -# Import common cmd -source ./experimental_helper.sh -source ./_common.sh - -# Source YunoHost helpers +source _common.sh source /usr/share/yunohost/helpers -ynh_script_progression --message="Loading installation settings..." +#================================================= +# LOAD SETTINGS +#================================================= +ynh_script_progression --message="Loading installation settings..." --weight=1 -# Retrieve app settings app=$YNH_APP_INSTANCE_NAME -domain=$(ynh_app_setting_get --app $app --key domain) -port=$(ynh_app_setting_get --app $app --key port) -db_name=$(ynh_app_setting_get --app $app --key db_name) -db_user=$(ynh_app_setting_get --app $app --key db_user) -final_path=$(ynh_app_setting_get --app $app --key final_path) + +domain=$(ynh_app_setting_get --app=$app --key=domain) +port=$(ynh_app_setting_get --app=$app --key=port) +db_name=$(ynh_app_setting_get --app=$app --key=db_name) +db_user=$db_name +final_path=$(ynh_app_setting_get --app=$app --key=final_path) #================================================= # STANDARD REMOVE #================================================= +# REMOVE SERVICE INTEGRATION IN YUNOHOST +#================================================= -# Remove metapackage and its dependencies -ynh_script_progression --message="Removing dependencies" --weight=10 -ynh_remove_app_dependencies +# Remove the service from the list of services known by YunoHost (added from `yunohost service add`) +if ynh_exec_warn_less yunohost service status $app >/dev/null +then + ynh_script_progression --message="Removing $app service integration..." --weight=1 + yunohost service remove $app +fi + +#================================================= +# STOP AND REMOVE SERVICE +#================================================= +ynh_script_progression --message="Stopping and removing the systemd service..." --weight=1 + +# Remove the dedicated systemd config +ynh_remove_systemd_config + +#================================================= +# REMOVE LOGROTATE CONFIGURATION +#================================================= +ynh_script_progression --message="Removing logrotate configuration..." --weight=1 + +# Remove the app-specific logrotate config +ynh_remove_logrotate + +#================================================= +# REMOVE THE MYSQL DATABASE +#================================================= +ynh_script_progression --message="Removing the MySQL database..." --weight=1 # Remove a database if it exists, along with the associated user -ynh_script_progression --message="Removing databases..." -ynh_mysql_remove_db --db_user $db_user --db_name $db_name +ynh_mysql_remove_db --db_user=$db_user --db_name=$db_name -# Remove the app directory securely -ynh_script_progression --message="Removing user data..." -ynh_secure_remove --file="$final_path" +#================================================= +# REMOVE NGINX CONFIGURATION +#================================================= +ynh_script_progression --message="Removing NGINX web server configuration..." --weight=1 -ynh_script_progression --message="Removing configuration..." +# Remove the dedicated NGINX config +ynh_remove_nginx_config + +#================================================= +# REMOVE DEPENDENCIES +#================================================= +ynh_script_progression --message="Removing dependencies..." --weight=3 + +# Remove metapackage and its dependencies +ynh_remove_app_dependencies + +#================================================= +# SPECIFIC REMOVE +#================================================= +# REMOVE VARIOUS FILES +#================================================= +ynh_script_progression --message="Removing various files..." --weight=1 -# Remove sogo config ynh_secure_remove --file="/etc/$app" # Remove stunnel config ynh_secure_remove --file="/etc/stunnel/$app.conf" -# Remove nginx config -ynh_script_progression --message="Removing nginx configuration..." -ynh_remove_nginx_config - - -# Remove service -yunohost service remove $app - -# Remove the app-specific logrotate config -ynh_remove_logrotate +#================================================= +# END OF SCRIPT +#================================================= ynh_script_progression --message="Removal of $app completed" --last diff --git a/scripts/restore b/scripts/restore index 4731326..1d435f6 100755 --- a/scripts/restore +++ b/scripts/restore @@ -3,69 +3,123 @@ #================================================= # GENERIC START #================================================= +# IMPORT GENERIC HELPERS +#================================================= -# Import common cmd -source ../settings/scripts/experimental_helper.sh +# Keep this path for calling _common.sh inside the execution's context of backup and restore scripts source ../settings/scripts/_common.sh - -# Source YunoHost helpers source /usr/share/yunohost/helpers -# Stop script if errors +#================================================= +# MANAGE SCRIPT FAILURE +#================================================= + +ynh_clean_setup () { + #### Remove this function if there's nothing to clean before calling the remove script. + true +} +# Exit if an error occurs during the execution of the script ynh_abort_if_errors -ynh_script_progression --message="Loading settings..." +#================================================= +# LOAD SETTINGS +#================================================= +ynh_script_progression --message="Loading installation settings..." --weight=1 -domain=$(ynh_app_setting_get --app $app --key domain) -path_url=$(ynh_app_setting_get --app $app --key path) -final_path=$(ynh_app_setting_get --app $app --key final_path) -db_name=$(ynh_app_setting_get --app $app --key db_name) +app=$YNH_APP_INSTANCE_NAME -# CHECK IF THE APP CAN BE RESTORED -ynh_webpath_available --domain $domain --path_url $path_url \ - || ynh_die --message "Path not available: ${domain}${path_url}" +domain=$(ynh_app_setting_get --app=$app --key=domain) +path_url=$(ynh_app_setting_get --app=$app --key=path) +db_name=$(ynh_app_setting_get --app=$app --key=db_name) +db_user=$db_name #================================================= -# STANDARD RESTORATION STEPS +# RESTORE THE NGINX CONFIGURATION #================================================= +ynh_script_progression --message="Restoring the NGINX configuration..." --weight=1 + +ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" + +#================================================= +# REINSTALL DEPENDENCIES +#================================================= +ynh_script_progression --message="Reinstalling dependencies..." --weight=1 # Define and install dependencies -ynh_script_progression --message="Reinstalling dependencies..." --weight=5 -install_dependance +ynh_install_app_dependencies $pkg_dependencies # Restore all config and data -ynh_script_progression --message="Restoring files..." --weight=10 -ynh_restore +#ynh_script_progression --message="Restoring files..." --weight=10 +#ynh_restore + +#================================================= # RESTORE THE MYSQL DATABASE -ynh_script_progression --message="Restoring database..." --weight=3 -db_user=$db_name -db_pwd=$(ynh_app_setting_get --app $app --key mysqlpwd) -ynh_mysql_setup_db --db_name $db_name --db_user $db_user --db_pwd $db_pwd -ynh_mysql_connect_as --user $db_user --password $db_pwd --database $db_name < ./db.sql +#================================================= +ynh_script_progression --message="Restoring the MySQL database..." --weight=1 + +db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd) +ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd +ynh_mysql_connect_as --user=$db_user --password=$db_pwd --database=$db_name < ./db.sql # Enable stunnel at startup ynh_replace_string --match_string "ENABLED=0" --replace_string "ENABLED=1" --target_file /etc/default/stunnel4 #================================================= -# GENERIC FINALIZATION +# RESTORE VARIOUS FILES +#================================================= +ynh_script_progression --message="Restoring various files..." --weight=1 + +ynh_restore_file --origin_path="/etc/cron.d/$app" + +ynh_restore_file --origin_path="/etc/$app" + +#================================================= +# SECURE FILES AND DIRECTORIES +#================================================= +ynh_script_progression --message="Protecting directory..." --weight=1 + +chown -R $app:$app /etc/$app +chmod u=rwX,g=rX,o= -R /etc/$app +chown -R $app:$app /var/log/$app +chmod u=rwX,g=rX,o= -R /var/log/$app + +#================================================= +# RESTORE SYSTEMD +#================================================= +ynh_script_progression --message="Restoring the systemd configuration..." --weight=1 +systemctl enable $app.service --quiet + +#================================================= +# RESTORE THE LOGROTATE CONFIGURATION +#================================================= +ynh_script_progression --message="Restoring the logrotate configuration..." --weight=1 +ynh_use_logrotate --logfile="/var/log/$app/sogo.log" --nonappend + +#================================================= +# INTEGRATE SERVICE IN YUNOHOST +#================================================= +ynh_script_progression --message="Integrating service in YunoHost..." --weight=1 + +yunohost service add $app --description="Groupware for E-Mail, Contacts and Calender" --log="/var/log/$app/$app.log" + +#================================================= +# START SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Starting a systemd service..." --weight=3 + +ynh_systemd_action --service_name=$app --action="restart" --log_path="systemd" +ynh_systemd_action --service_name=stunnel4 --action="restart" --log_path="systemd" + +#================================================= +# RELOAD NGINX AND PHP-FPM +#================================================= +ynh_script_progression --message="Reloading NGINX web server..." --weight=1 + +ynh_systemd_action --service_name=nginx --action=reload + +#================================================= +# END OF SCRIPT #================================================= -# SECURE FILES AND DIRECTORIES -ynh_script_progression --message="Protecting directory..." -set_permission - -# SETUP LOGROTATE -ynh_use_logrotate --logfile /var/log/$app/sogo.log --nonappend - -# Register service -yunohost service add $app --log "/var/log/$app/sogo.log" - -# Restart services -ynh_script_progression --message="Starting SOGo services..." --weight=3 -systemctl restart sogo -systemctl restart stunnel4 -systemctl reload nginx -systemctl restart cron - ynh_script_progression --message="Restoration completed for $app" --last diff --git a/scripts/upgrade b/scripts/upgrade index 8e6e654..14480f7 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -3,36 +3,44 @@ #================================================= # GENERIC START #================================================= - -# Import common cmd -source ./experimental_helper.sh -source ./_common.sh - # IMPORT GENERIC HELPERS +#================================================= + +source _common.sh source /usr/share/yunohost/helpers -# Exit if an error occurs during the execution of the script -ynh_abort_if_errors - -ynh_script_progression --message="Loading installation settings..." - +#================================================= # LOAD SETTINGS -domain=$(ynh_app_setting_get --app $app --key domain) -path_url=$(ynh_normalize_url_path --path_url $(ynh_app_setting_get --app $app --key path)) -admin=$(ynh_app_setting_get --app $app --key admin) -is_public=$(ynh_app_setting_get --app $app --key is_public) -port=$(ynh_app_setting_get --app $app --key web_port) -smtp_port=$(ynh_app_setting_get --app $app --key smtp_port) -db_name=$(ynh_app_setting_get --app $app --key db_name) -db_user=$(ynh_app_setting_get --app $app --key db_user) -db_pwd=$(ynh_app_setting_get --app $app --key mysqlpwd) +#================================================= +ynh_script_progression --message="Loading installation settings..." --weight=1 + +app=$YNH_APP_INSTANCE_NAME + +domain=$(ynh_app_setting_get --app=$app --key=domain) +path_url=$(ynh_app_setting_get --app=$app --key=path) +admin=$(ynh_app_setting_get --app=$app --key=admin) +port=$(ynh_app_setting_get --app=$app --key=web_port) +smtp_port=$(ynh_app_setting_get --app=$app --key=smtp_port) +db_name=$(ynh_app_setting_get --app=$app --key=db_name) +db_user=$db_name +db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd) + +#================================================= +# CHECK VERSION +#================================================= + +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 + # Restore it if the upgrade fails + ynh_restore_upgradebackup } # Exit if an error occurs during the execution of the script ynh_abort_if_errors @@ -40,81 +48,98 @@ ynh_abort_if_errors #================================================= # UPGRADE SETTINGS FROM OLD INSTALL #================================================= +ynh_script_progression --message="Ensuring downward compatibility..." --weight=1 -ynh_script_progression --message="Fixing old settings..." --weight=1 - -if [[ ${is_public,,*} = "yes" ]] -then - is_public=1 - ynh_app_setting_set --app $app --key is_public --value 1 -fi - -if [[ ${is_public,,*} = "no" ]] -then - is_public=0 - ynh_app_setting_set --app $app --key is_public --value 0 -fi - -if [[ -z $port ]] -then +if [[ -z $port ]]; then # Find a port for SOGo - port=$(ynh_find_port --port 20000) - ynh_app_setting_set --app $app --key web_port --value $port + port=$(ynh_find_port --port=20000) + ynh_app_setting_set --app=$app --key=web_port --value=$port fi -if [[ -z $db_name ]] -then +if [[ -z $db_name ]]; then db_name=$app - ynh_app_setting_set --app $app --key db_name --value $db_name + ynh_app_setting_set --app=$app --key=db_name --value=$db_name fi -if [[ -z $db_user ]] -then +if [[ -z $db_user ]]; then db_user=$app - ynh_app_setting_set --app $app --key db_user --value $db_user + ynh_app_setting_set --app=$app --key=db_user --value=$db_user fi -# Manage migration form SOGo 3.x to SOGo 4.x (Debian stretch -> Buster) +# Cleaning legacy permissions +if ynh_legacy_permissions_exists; then + ynh_legacy_permissions_delete_all + + ynh_app_setting_delete --app=$app --key=is_public +fi + +# Manage migrations ynh_script_progression --message="Migrating database if needed..." -# FIXME use the new way to manage version when available on the core -app_previous_version="$(jq -r .version /etc/yunohost/apps/$app/manifest.json | cut -d~ -f1)" -if [[ "$app_previous_version" == 3.2.* ]]; then +if ynh_compare_current_package_version --comparison le --version 4.0.0~ynh0; then ynh_replace_string --match_string __APP__ --replace_string $app --target_file migrations/3.2-4.0.sh ynh_replace_string --match_string __DBUSER__ --replace_string $db_user --target_file migrations/3.2-4.0.sh ynh_replace_string --match_string __DBPASS__ --replace_string $db_pwd --target_file migrations/3.2-4.0.sh bash migrations/3.2-4.0.sh fi +if ! ynh_permission_exists --permission="sync_client"; then + # Create the required permissions + ynh_permission_create --permission="sync_client" --allowed='visitors' --auth_header=false\ + --label="Sync client" --protected=true --show_tile=false\ + --additional_urls="/Microsoft-Server-ActiveSync" "/principals" "/.well-known/caldav" "/.well-known/carddav" +fi + #================================================= # STANDARD MODIFICATIONS #================================================= +# UPGRADE DEPENDENCIES +#================================================= +ynh_script_progression --message="Upgrading dependencies..." --weight=1 -# INSTALL DEPENDENCIES -ynh_script_progression --message="Upgrading dependencies..." -install_dependance +ynh_install_app_dependencies $pkg_dependencies -ynh_script_progression --message="Configuring application..." +#================================================= +# UPDATE A CONFIG FILE +#================================================= +ynh_script_progression --message="Configuring application..." --weight=1 # Configure SOGO -ynh_add_config --template="sogo.conf" --destination="/etc/$app/sogo.conf" +ynh_add_config --template="../conf/sogo.conf" --destination="/etc/$app/sogo.conf" # Configure stunnel -config_stunnel +ynh_add_config --template="../conf/stunnel.conf" --destination="/etc/stunnel/$app.conf" -# Install crontab -config_cron +# Enable stunnel at startup +ynh_replace_string --match_string="ENABLED=0" --replace_string="ENABLED=1" --target_file="/etc/default/stunnel4" + +#================================================= +# SETUP A CRON +#================================================= +ynh_script_progression --message="Setuping a cron..." --weight=1 + +ynh_add_config --template="../conf/cron" --destination="/etc/cron.d/$app" +chown root: "/etc/cron.d/$app" +chmod 644 "/etc/cron.d/$app" + +#================================================= +# NGINX CONFIGURATION +#================================================= +ynh_script_progression --message="Upgrading NGINX web server configuration..." --weight=1 -#Configure Nginx config_nginx #================================================= -# GENERIC FINALIZATION -#================================================= - # SECURE FILES AND DIRECTORIES -ynh_script_progression --message="Protecting directory..." -set_permission +#================================================= +ynh_script_progression --message="Protecting directory..." --weight=1 + +chown -R $app:$app /etc/$app +chmod u=rwX,g=rX,o= -R /etc/$app +chown -R $app:$app /var/log/$app +chmod u=rwX,g=rX,o= -R /var/log/$app + + # configure the sso ynh_script_progression --message="Configuring permissions..." @@ -127,20 +152,44 @@ if ! ynh_permission_exists --permission sync_client; then || ynh_print_warn --message="Your file /etc/ssowat/""conf.json.persistent doesn't respect the json syntax. The config file wasn't cleaned. Please clean it manually." else ynh_permission_update --permission="sync_client" --add='visitors' --label="Sync client" --protected=true --show_tile=false - ynh_permission_url --permission "sync_client" --auth_header=false\ + ynh_permission_url --permission "sync_client" --auth_header=false\ --add_url="/Microsoft-Server-ActiveSync" "/principals" "/.well-known/caldav" "/.well-known/carddav" fi +#================================================= +# GENERIC FINALIZATION +#================================================= # SETUP LOGROTATE -ynh_script_progression --message="Configuring log rotation..." -ynh_use_logrotate --logfile /var/log/$app/sogo.log --nonappend +#================================================= +ynh_script_progression --message="Upgrading logrotate configuration..." --weight=1 -# Register service -yunohost service add $app --log "/var/log/$app/sogo.log" +# Use logrotate to manage app-specific logfile(s) +ynh_use_logrotate --logfile="/var/log/$app/sogo.log" --nonappend -# Restart services -ynh_script_progression --message="Starting SOGo services..." --weight=3 -systemctl restart sogo -systemctl restart stunnel4 +#================================================= +# INTEGRATE SERVICE IN YUNOHOST +#================================================= +ynh_script_progression --message="Integrating service in YunoHost..." --weight=1 + +yunohost service add $app --description="Groupware for E-Mail, Contacts and Calender" --log="/var/log/$app/$app.log" + +#================================================= +# START SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Starting a systemd service..." --weight=1 + +ynh_systemd_action --service_name=$app --action="restart" --log_path="systemd" +ynh_systemd_action --service_name=stunnel4 --action="restart" --log_path="systemd" + +#================================================= +# RELOAD NGINX +#================================================= +ynh_script_progression --message="Reloading NGINX web server..." --weight=1 + +ynh_systemd_action --service_name=nginx --action=reload + +#================================================= +# END OF SCRIPT +#================================================= ynh_script_progression --message="Upgrade of $app completed" --last