diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 783a4ae..0000000 --- a/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*~ -*.sw[op] diff --git a/README.md b/README.md index 0fb2f7c..d5b367f 100644 --- a/README.md +++ b/README.md @@ -1,45 +1,70 @@ -Movim for Yunohost. -========== +# Movim for YunoHost [![Integration level](https://dash.yunohost.org/integration/movim.svg)](https://dash.yunohost.org/appci/app/movim) ![](https://ci-apps.yunohost.org/ci/badges/movim.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/movim.maintain.svg) [![Install Movim with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=movim) -Movim is a decentralized social network, written in PHP and HTML5 and based on the XMPP standard protocol : https://movim.eu . +*[Lire ce readme en français.](./README_fr.md)* -It is recommended to use a "valid" certificate to use Movim, auto-signed is sometimes problematic. You might want to take a look a StartSSL or Let's Encrypt. +> *This package allows you to install Movim 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.* -Provided Movim version: 0.13 +## Overview -Please read CHANGELOG. +[Movim](https://movim.eu) is a decentralized social network, written in PHP and HTML5 and based on the XMPP standard protocol. -**Installation** +**Shipped version:** 0.18rc14 - yunohost app install https://github.com/movim/movim_ynh +## Screenshots -**Upgrade** +![](https://camo.githubusercontent.com/1392d5eb8cd2824d7eb121424392e82f9393a5ad/68747470733a2f2f6d6f76696d2e65752f696d672f686f6d652e706e67) - yunohost app upgrade movim -u https://github.com/movim/movim_ynh +## Demo -**Options** +* [Official demo](https://nl.movim.eu/?login) -* domain : Your domain name. -* path : Path to the Movim pod. -* admin : Allowed acces to /?admin (pod advanced options), must exist in Yunohost. -* password : Password to access /?admin. -* language : Pod language. -* enable sso : Automatic login. -* port : Local port for Movim daemon (no firewall configuration needed). +## Configuration -**Pod advanced configuration** + * How to configure this app: From an admin panel at this address https://example.com/movim/?admin. Username and password are defined during installation. - https://example.com/movim/?admin +## Documentation -Username and password are defined during installation. + * Official documentation: https://github.com/movim/movim/wiki + * YunoHost documentation: If specific documentation is needed, feel free to contribute. -**Remove** +## YunoHost specific features - yunohost app remove movim +#### Multi-user support -**Help** +* Are LDAP and HTTP auth supported? **No** +* Can the app be used by multiple users? **Yes** -Just open an issue. +#### Supported architectures + +* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/movim%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/movim/) +* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/movim%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/movim/) + +## Limitations + +* Any known limitations. + +## Additional information + +## Links + + * Report a bug: https://github.com/YunoHost-Apps/movim_ynh/issues + * App website: https://movim.eu/ + * Upstream app repository: https://github.com/movim/movim + * YunoHost website: https://yunohost.org/ + +--- + +## Developer info + +Please send your pull request to the [testing branch](https://github.com/YunoHost-Apps/movim_ynh/tree/testing). + +To try the testing branch, please proceed like that. +``` +sudo yunohost app install https://github.com/YunoHost-Apps/movim_ynh/tree/testing --debug +or +sudo yunohost app upgrade movim -u https://github.com/YunoHost-Apps/movim_ynh/tree/testing --debug +``` diff --git a/README_fr.md b/README_fr.md new file mode 100644 index 0000000..9355685 --- /dev/null +++ b/README_fr.md @@ -0,0 +1,70 @@ +# Movim pour YunoHost + +[![Integration level](https://dash.yunohost.org/integration/movim.svg)](https://dash.yunohost.org/appci/app/movim) ![](https://ci-apps.yunohost.org/ci/badges/movim.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/movim.maintain.svg) +[![Installer Movim avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=movim) + +*[Read this readme in english.](./README.md)* + +> *Ce package vous permet d'installer Movim rapidement et simplement sur un serveur YunoHost. +Si vous n'avez pas YunoHost, consultez [le guide](https://yunohost.org/#/install) pour apprendre comment l'installer.* + +## Vue d'ensemble + +[Movim](https://movim.eu) est un réseau social décentralisé, écrit en PHP et HTML5 et basé sur le protocole standard XMPP. + +**Version incluse :** 0.18rc14 + +## Captures d'écran + +![](https://camo.githubusercontent.com/1392d5eb8cd2824d7eb121424392e82f9393a5ad/68747470733a2f2f6d6f76696d2e65752f696d672f686f6d652e706e67) + +## Démo + + * [Démo officielle](https://nl.movim.eu/?login) + +## Configuration + + * Comment configurer cette application : via le panneau d'administration a cette adresse https://example.com/movim/?admin. Le nom d'utilisateur et le mot de passe sont définis lors de l'installation. + +## Documentation + + * Documentation officielle : https://github.com/movim/movim/wiki + * Documentation YunoHost : Si une documentation spécifique est nécessaire, n'hésitez pas à contribuer. + +## Caractéristiques spécifiques YunoHost + +#### Support multi-utilisateur + +* L'authentification LDAP et HTTP est-elle prise en charge ? **No** +* L'application peut-elle être utilisée par plusieurs utilisateurs ? **Oui** + +#### Architectures supportées + +* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/movim%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/movim/) +* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/movim%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/movim/) + +## Limitations + +* Limitations connues. + +## Informations additionnelles + +## Liens + + * Signaler un bug : https://github.com/YunoHost-Apps/movim_ynh/issues + * Site de l'application : https://movim.eu/ + * Dépôt de l'application principale : https://github.com/movim/movim + * Site web YunoHost : https://yunohost.org/ + +--- + +## Developer info + +Please send your pull request to the [testing branch](https://github.com/YunoHost-Apps/movim_ynh/tree/testing). + +To try the testing branch, please proceed like that. +``` +sudo yunohost app install https://github.com/YunoHost-Apps/movim_ynh/tree/testing --debug +or +sudo yunohost app upgrade movim -u https://github.com/YunoHost-Apps/movim_ynh/tree/testing --debug +``` diff --git a/check_process b/check_process index 53b9f8b..7f063a2 100644 --- a/check_process +++ b/check_process @@ -6,21 +6,21 @@ ;; Test complet ; Manifest domain="domain.tld" (DOMAIN) - path="/path" (PATH) - admin="john" (USER) + path="/path" (PATH) + admin="john" (USER) + is_public=1 (PUBLIC|public=1|private=0) password="phrasedepasse" language="fr" - ssoenabled="Yes" port=9537 (PORT) ; Checks pkg_linter=1 setup_sub_dir=1 setup_root=1 setup_nourl=0 - setup_private=0 + setup_private=1 setup_public=1 upgrade=1 - backup_restore=0 + backup_restore=1 multi_instance=0 incorrect_path=1 port_already_use=1 @@ -29,9 +29,7 @@ Level 1=auto Level 2=auto Level 3=auto -# Level 4: - Level 4=1 -# Level 5: + Level 4=auto Level 5=auto Level 6=auto Level 7=auto @@ -39,5 +37,9 @@ Level 9=0 Level 10=0 ;;; Options -Email=jean-baptiste@holcroft.fr -Notification=all \ No newline at end of file +Email= +Notification=none +;;; Upgrade options + ; commit=CommitHash + name=Name and date of the commit. + manifest_arg=domain=DOMAIN&path=PATH&admin=USER&language=fr&is_public=1&password=phrasedepasse&port=9537& diff --git a/conf/app.src b/conf/app.src index 25328ed..1932789 100644 --- a/conf/app.src +++ b/conf/app.src @@ -1,4 +1,6 @@ -SOURCE_URL=https://github.com/movim/movim/archive/v0.13.tar.gz -SOURCE_SUM=7aa5b2b6cd97e87a440981cfb6788a6f04ffd5eb4545026c49e1c61771593d11 +SOURCE_URL=https://github.com/movim/movim/archive/v0.18rc14.tar.gz +SOURCE_SUM=5296c995ee4d70f965284487deb609ab322ac04eab826bf30f964f198f914aad SOURCE_SUM_PRG=sha256sum -SOURCE_FORMAT=tar.gz \ No newline at end of file +SOURCE_FORMAT=tar.gz +SOURCE_IN_SUBDIR=true +SOURCE_FILENAME= diff --git a/conf/db.inc.php b/conf/db.example.inc.php similarity index 72% rename from conf/db.inc.php rename to conf/db.example.inc.php index e876147..9427545 100644 --- a/conf/db.inc.php +++ b/conf/db.example.inc.php @@ -3,15 +3,15 @@ # You need to copy an rename this file to 'db.inc.php' and complete the values $conf = [ # The type can be 'pgsql' or 'mysql' - 'type' => 'mysql', + 'type' => 'pgsql', # The database username - 'username' => '__DB_USER__', + 'username' => '__DB_NAME__', # The password 'password' => '__DB_PWD__', # Where can we find the database ? 'host' => 'localhost', - # The port number, 3306 for MySQL and 5432 for PostGreSQL - 'port' => 3306, + # The port number, 3306 for MySQL and 5432 for PostgreSQL + 'port' => 5432, # The database name 'database' => '__DB_NAME__' ]; diff --git a/conf/nginx.conf b/conf/nginx.conf index 0bc59e8..7f054e0 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -1,6 +1,7 @@ #sub_path_only rewrite ^__PATH__$ __PATH__/ permanent; location __PATH__/ { - alias __FINALPATH__/; + + alias __FINALPATH__/public/; if ($scheme = http) { rewrite ^ https://$server_name$request_uri? permanent; @@ -10,12 +11,8 @@ location __PATH__/ { try_files $uri $uri/ /index.php; location ~ [^/]\.php(/|$) { - if ($request_uri ~ "\/movim\/\?infos") { - return 403; - } - fastcgi_split_path_info ^(.+?\.php)(/.*)$; - fastcgi_pass unix:/var/run/php-fpm-__NAME__.sock; + fastcgi_pass unix:/var/run/php__PHPVERSION__-fpm-__NAME__.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param REMOTE_USER $remote_user; @@ -24,15 +21,15 @@ location __PATH__/ { } location ~ ^__PATH__/ws/ { - proxy_pass http://localhost:__PORT__; + proxy_pass http://127.0.0.1:__PORT__; proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "Upgrade"; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto https; - proxy_redirect off; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto https; + proxy_redirect off; # To avoid disconnecting after 60sec : proxy_read_timeout 14400s; @@ -42,19 +39,3 @@ location __PATH__/ { # Include SSOWAT user panel. include conf.d/yunohost_panel.conf.inc; } - -location ~ /\.ht { - deny all; -} - -location ^~ /movim/log/ { - return 403; -} - -location ^~ /movim/config/ { - return 403; -} - -location ^~ /movim/?infos { - return 403; -} \ No newline at end of file diff --git a/conf/php-fpm.conf b/conf/php-fpm.conf index cccc8e2..7ac1650 100644 --- a/conf/php-fpm.conf +++ b/conf/php-fpm.conf @@ -30,7 +30,7 @@ group = __USER__ ; specific port; ; '/path/to/unix/socket' - to listen on a unix socket. ; Note: This value is mandatory. -listen = /var/run/php-fpm-__NAMETOCHANGE__.sock +listen = /var/run/php__PHPVERSION__-fpm-__NAMETOCHANGE__.sock ; Set listen(2) backlog. A value of '-1' means unlimited. ; Default Value: 128 (-1 on FreeBSD and OpenBSD) @@ -390,3 +390,6 @@ catch_workers_output = yes ;php_admin_value[error_log] = /var/log/fpm-php.www.log ;php_admin_flag[log_errors] = on ;php_admin_value[memory_limit] = 32M + +php_admin_value[open_basedir] = none +php_admin_value[date.timezone] = "__TIMEZONE__" diff --git a/conf/php-fpm.ini b/conf/php-fpm.ini deleted file mode 100644 index b1221c2..0000000 --- a/conf/php-fpm.ini +++ /dev/null @@ -1,2 +0,0 @@ -open_basedir = none -date.timezone = "YHTZ" \ No newline at end of file diff --git a/conf/systemd.service b/conf/systemd.service index 204da6a..24c5f4e 100644 --- a/conf/systemd.service +++ b/conf/systemd.service @@ -1,15 +1,17 @@ [Unit] -Description=Movim daemon (__APP__) -After=nginx.service network.target local-fs.target mysql.service +Description=Movim: Responsive web-based XMPP client +After=nginx.service network.target local-fs.target postgresql.service [Service] Type=simple User=__APP__ -Group=__APP__ -WorkingDirectory=__FINALPATH__/ -ExecStart=/usr/bin/php daemon.php start --url=https://__URL__ --port=__PORT__ +WorkingDirectory=__FINALPATH__ +ExecStart=/usr/bin/php7.3 daemon.php start --interface=127.0.0.1 --url=https://__DOMAIN____PATH__/ --port=__PORT__ StandardOutput=syslog SyslogIdentifier=__APP__ +PIDFile=/run/movim.pid +Restart=on-failure +RestartSec=10 [Install] WantedBy=multi-user.target diff --git a/issue_template.md b/issue_template.md new file mode 100644 index 0000000..3d5c5d9 --- /dev/null +++ b/issue_template.md @@ -0,0 +1,55 @@ +--- +name: Bug report +about: When creating a bug report, please use the following template to provide all the relevant information and help debugging efficiently. + +--- + +**How to post a meaningful bug report** +1. *Read this whole template first.* +2. *Make sure you are on the right place:* + - *If you were performing an action on Movim from the webadmin or the CLI (install, update, backup, restore, change_url...), you are on the right place!* + - *Otherwise, the issue may be due to the app itself. Refer to its documentation or repository for help.* + - *In doubt, ask here and we will figure it out together.* +3. *Delete these italic comments as you write over them below, and remove this guide.* +--- + +### Describe the bug + +*A clear and concise description of what the bug is.* + +### Context + +- Hardware: *VPS bought online / Old laptop or computer / Raspberry Pi at home / Internet Cube with VPN / Other ARM board / ...* +- YunoHost version: x.x.x +- I have access to my server: *Through SSH | through the webadmin | direct access via keyboard / screen | ...* +- Are you in a special context or did you perform some particular tweaking on your YunoHost instance ?: *no / yes* + - If yes, please explain: +- Using, or trying to install package version/branch: +- If upgrading, current package version: *can be found in the admin, or with `yunohost app info $app_id`* + +### Steps to reproduce + +- *If you performed a command from the CLI, the command itself is enough. For example:* + ```sh + sudo yunohost app install movim + ``` +- *If you used the webadmin, please perform the equivalent command from the CLI first.* +- *If the error occurs in your browser, explain what you did:* + 1. *Go to '...'* + 2. *Click on '...'* + 3. *Scroll down to '...'* + 4. *See error* + +### Expected behavior + +*A clear and concise description of what you expected to happen. You can remove this section if the command above is enough to understand your intent.* + +### Logs + +*When an operation fails, YunoHost provides a simple way to share the logs.* +- *In the webadmin, the error message contains a link to the relevant log page. On that page, you will be able to 'Share with Yunopaste'. If you missed it, the logs of previous operations are also available under Tools > Logs.* +- *In command line, the command to share the logs is displayed at the end of the operation and looks like `yunohost log display [log name] --share`. If you missed it, you can find the log ID of a previous operation using `yunohost log list`.* + +*After sharing the log, please copypaste directly the link provided by YunoHost (to help readability, no need to copypaste the entire content of the log here, just the link is enough...)* + +*If applicable and useful, add screenshots to help explain your problem.* diff --git a/manifest.json b/manifest.json index 7a8e320..0239bcc 100644 --- a/manifest.json +++ b/manifest.json @@ -3,34 +3,34 @@ "id": "movim", "packaging_format": 1, "description": { - "en": "The Kickass Social Network" + "en": "Web-based cross-platform XMPP client", + "fr": "Client XMPP multiplateforme basé sur le Web" }, - "version": "0.13.0~ynh1", - "requirements": { - "yunohost": ">= 3.0" - }, - "url": "https://movim.eu/", + "version": "0.18rc14~ynh1", + "url": "https://movim.eu", "license": "AGPL-3.0-or-later", "maintainer": { - "name": "src386", - "email": "soyouz@src386.org", - "url": "http://github.com/src386" + "name": "", + "email": "" }, + "requirements": { + "yunohost": ">= 3.8.1" + }, + "multi_instance": false, "services": [ "nginx", - "php5-fpm", - "mysql", + "php7.0-fpm", + "postgresql", "metronome" ], - "multi_instance": false, "arguments": { "install" : [ { "name": "domain", "type": "domain", "ask": { - "en": "Domain of the pod", - "fr": "Domaine du pod" + "en": "Choose a domain name for Movim", + "fr": "Choisissez un nom de domaine pour Movim" }, "example": "domain.org" }, @@ -38,8 +38,8 @@ "name": "path", "type": "path", "ask": { - "en": "Path to the pod", - "fr": "Chemin vers le pod" + "en": "Choose a path for Movim", + "fr": "Choisissez un chemin pour Movim" }, "example": "/movim", "default": "/movim" @@ -48,37 +48,28 @@ "name": "admin", "type": "user", "ask": { - "en": "Pod administrator", - "fr": "Administrateur du pod" + "en": "Choose an admin user", + "fr": "Choisissez l'administrateur" }, - "example": "homer" + "example": "johndoe" }, { "name": "password", "type": "password", "ask": { - "en": "Administrator password", - "fr": "Mot de passe administrateur" + "en": "Set the administrator password", + "fr": "Définissez le mot de passe administrateur" }, - "example" : "password" + "example": "Choose a password" }, { - "name": "language", + "name": "is_public", + "type": "boolean", "ask": { - "en": "Pod language", - "fr": "Langue du pod" + "en": "Is it a public application?", + "fr": "Est-ce une application publique ?" }, - "choices" : ["ar", "de", "en", "es", "fr", "it", "ja", "nl", "ru"], - "default" : "en" - }, - { - "name": "ssoenabled", - "ask": { - "en": "Enable SSO support (autologin) ?", - "fr": "Activer le support SSO (connexin auto) ?" - }, - "choices": ["Yes", "No"], - "default": "Yes" + "default": true } ] } diff --git a/pull_request_template.md b/pull_request_template.md new file mode 100644 index 0000000..077ba48 --- /dev/null +++ b/pull_request_template.md @@ -0,0 +1,18 @@ +## Problem +- *Description of why you made this PR* + +## Solution +- *And how do you fix that problem* + +## PR Status +- [ ] Code finished. +- [ ] Tested with Package_check. +- [ ] Fix or enhancement tested. +- [ ] Upgrade from last version tested. +- [ ] Can be reviewed and tested. + +## Package_check results +--- +*If you have access to [App Continuous Integration for packagers](https://yunohost.org/#/packaging_apps_ci) you can provide a link to the package_check results like below, replacing '-NUM-' in this link by the PR number and USERNAME by your username on the ci-apps-dev. Or you provide a screenshot or a pastebin of the results* + +[![Build Status](https://ci-apps-dev.yunohost.org/jenkins/job/movim_ynh%20PR-NUM-%20(USERNAME)/badge/icon)](https://ci-apps-dev.yunohost.org/jenkins/job/movim_ynh%20PR-NUM-%20(USERNAME)/) diff --git a/scripts/_common.sh b/scripts/_common.sh index b7a2c22..83966a7 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -1,20 +1,37 @@ #!/bin/bash -# -# Common variables -# -# App package root directory should be the parent folder -PKGDIR=$(cd ../; pwd) +#================================================= +# COMMON VARIABLES +#================================================= -# -# Common helpers -# +# dependencies used by the app +pkg_dependencies="postgresql postgresql-contrib apt-transport-https" -# Undo the SSO patch to source code (applied by default with ynh_setup_source) -# usage: undo_sso_patch -undo_sso_patch() { - ( - cd $final_path - patch -p1 -R < $YNH_CWD/../sources/patches/app-00-sso-logout.patch - ) +YNH_PHP_VERSION="7.3" + +extra_php_dependencies="php${YNH_PHP_VERSION}-fpm php${YNH_PHP_VERSION}-curl php${YNH_PHP_VERSION}-mbstring php${YNH_PHP_VERSION}-imagick php${YNH_PHP_VERSION}-gd php${YNH_PHP_VERSION}-pgsql php${YNH_PHP_VERSION}-xml" + +#================================================= +# PERSONAL HELPERS +#================================================= + +#================================================= +# EXPERIMENTAL HELPERS +#================================================= + +#================================================= +# FUTURE OFFICIAL HELPERS +#================================================= + +# Execute a command as another user +# usage: ynh_exec_as USER COMMAND [ARG ...] +ynh_exec_as() { + local USER=$1 + shift 1 + + if [[ $USER = $(whoami) ]]; then + eval "$@" + else + sudo -u "$USER" "$@" + fi } diff --git a/scripts/backup b/scripts/backup new file mode 100644 index 0000000..45a26b8 --- /dev/null +++ b/scripts/backup @@ -0,0 +1,76 @@ +#!/bin/bash + +#================================================= +# GENERIC START +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +source ../settings/scripts/_common.sh +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 + +#================================================= +# LOAD SETTINGS +#================================================= +ynh_print_info --message="Loading installation settings..." + +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) +db_name=$(ynh_app_setting_get --app=$app --key=db_name) +db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd) +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) + +#================================================= +# DECLARE DATA AND CONF FILES TO BACKUP +#================================================= +ynh_print_info --message="Declaring files to be backed up..." + +#================================================= +# BACKUP THE APP MAIN DIR +#================================================= + +ynh_backup --src_path="$final_path" + +#================================================= +# BACKUP THE NGINX CONFIGURATION +#================================================= + +ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" + + +#================================================= +# BACKUP THE PHP-FPM CONFIGURATION +#================================================= + +ynh_backup --src_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" + +#================================================= +# BACKUP SYSTEMD +#================================================= + +ynh_backup --src_path="/etc/systemd/system/$app.service" + +#================================================= +# BACKUP THE POSTGRESQL DATABASE +#================================================= +ynh_print_info --message="Backing up the PostgreSQL database..." + +ynh_psql_dump_db --database="$db_name" > db.sql + +#================================================= +# END OF SCRIPT +#================================================= + +ynh_print_info --message="Backup script completed for Movim. (YunoHost will then actually copy those files to the archive)." diff --git a/scripts/install b/scripts/install index 4d6a6ae..cafd3a3 100644 --- a/scripts/install +++ b/scripts/install @@ -23,123 +23,117 @@ ynh_abort_if_errors domain=$YNH_APP_ARG_DOMAIN path_url=$YNH_APP_ARG_PATH admin=$YNH_APP_ARG_ADMIN +is_public=$YNH_APP_ARG_IS_PUBLIC password=$YNH_APP_ARG_PASSWORD -language=$YNH_APP_ARG_LANGUAGE -ssoenabled=$YNH_APP_ARG_SSOENABLED timezone=$(cat /etc/timezone) -### If it's a multi-instance app, meaning it can be installed several times independently -### The id of the app as stated in the manifest is available as $YNH_APP_ID -### The instance number is available as $YNH_APP_INSTANCE_NUMBER (equals "1", "2", ...) -### The app instance name is available as $YNH_APP_INSTANCE_NAME -### - the first time the app is installed, YNH_APP_INSTANCE_NAME = ynhexample -### - the second time the app is installed, YNH_APP_INSTANCE_NAME = ynhexample__2 -### - ynhexample__{N} for the subsequent installations, with N=3,4, ... -### The app instance name is probably what interests you most, since this is -### guaranteed to be unique. This is a good unique identifier to define installation path, -### db names, ... app=$YNH_APP_INSTANCE_NAME #================================================= # CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS #================================================= +ynh_script_progression --message="Validating installation parameters..." --weight=1 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 -ynh_webpath_register $app $domain $path_url - +ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url #================================================= # STORE SETTINGS FROM MANIFEST #================================================= +ynh_script_progression --message="Storing installation settings..." --weight=2 -# Save app settings -ynh_app_setting_set "$app" admin "$admin" -ynh_app_setting_set "$app" ssoenabled "$ssoenabled" -ynh_app_setting_set "$app" path "$path_url" - +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 +ynh_app_setting_set --app=$app --key=is_public --value=$is_public #================================================= # STANDARD MODIFICATIONS #================================================= # FIND AND OPEN A PORT #================================================= +ynh_script_progression --message="Configuring firewall..." --weight=2 # Find a free port -port=$(ynh_find_port 9537) -# Open this port -yunohost firewall allow --no-upnp TCP "$port" 2>&1 -ynh_app_setting_set "$app" port "$port" +port=$(ynh_find_port --port=9537) +ynh_app_setting_set --app=$app --key=port --value=$port #================================================= # INSTALL DEPENDENCIES #================================================= +ynh_script_progression --message="Installing dependencies..." --weight=1 # Install packages -ynh_install_app_dependencies php-gd php-curl php-imagick php-cli php-zmq +ynh_install_app_dependencies $pkg_dependencies #================================================= -# CREATE A MYSQL DATABASE +# CREATE A POSTGRESQL DATABASE #================================================= +ynh_script_progression --message="Creating a PostgreSQL database..." --weight=2 -db_name=$(ynh_sanitize_dbid "$app") +db_name=$(ynh_sanitize_dbid --db_name=$app) db_user=$db_name -ynh_app_setting_set "$app" db_name "$db_name" -ynh_mysql_setup_db "$db_user" "$db_name" +db_pwd=$(ynh_string_random --length=30) + +ynh_app_setting_set --app=$app --key=db_name --value=$db_name +ynh_app_setting_set --app=$app --key=db_pwd --value=$db_pwd + +ynh_psql_test_if_first_run +ynh_psql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd + +ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS unaccent;" --database=$db_name +ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS pg_trgm;" --database=$db_name #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= +ynh_script_progression --message="Setting up source files..." --weight=4 -ynh_app_setting_set "$app" final_path "$final_path" - -ynh_setup_source "$final_path" +ynh_app_setting_set --app=$app --key=final_path --value=$final_path +# Download, check integrity, uncompress and patch the source from app.src +ynh_setup_source --dest_dir="$final_path" #================================================= # NGINX CONFIGURATION #================================================= +ynh_script_progression --message="Configuring NGINX web server..." --weight=11 -# Create a dedicated nginx config +# Create a dedicated NGINX config ynh_add_nginx_config -ynh_replace_string "//ws/" "/ws/" "$finalnginxconf" # Avoid duplicate / - #================================================= # CREATE DEDICATED USER #================================================= +ynh_script_progression --message="Configuring system user..." --weight=3 # Create a system user -ynh_system_user_create "$app" +ynh_system_user_create --username=$app #================================================= # PHP-FPM CONFIGURATION #================================================= +ynh_script_progression --message="Configuring PHP-FPM..." --weight=1 -# Create a dedicated php-fpm config -ynh_replace_string "YHTZ" "$timezone" ../conf/php-fpm.ini -ynh_add_fpm_config +# Create a dedicated PHP-FPM config +ynh_replace_string --match_string="__TIMEZONE__" --replace_string="$timezone" --target_file=../conf/php-fpm.conf + +ynh_add_fpm_config --phpversion=$YNH_PHP_VERSION --package="$extra_php_dependencies" +phpversion=$(ynh_app_setting_get --app="$app" --key=phpversion) #================================================= # SET CONFIGURATION FILE #================================================= +ynh_script_progression --message="Modifying a config file..." --weight=1 -# TODO: add checksum -cp ../conf/db.inc.php "$final_path/config/db.inc.php" +cp ../conf/db.example.inc.php $final_path/config/db.inc.php -ynh_replace_string "__DB_USER__" "$db_user" "$final_path/config/db.inc.php" -ynh_replace_string "__DB_PWD__" "$db_pwd" "$final_path/config/db.inc.php" -ynh_replace_string "__DB_NAME__" "$db_name" "$final_path/config/db.inc.php" +ynh_replace_string --match_string="__DB_PWD__" --replace_string="$db_pwd" --target_file="$final_path/config/db.inc.php" +ynh_replace_string --match_string="__DB_NAME__" --replace_string="$db_name" --target_file="$final_path/config/db.inc.php" -## TODO: consider installation in a subpath -ynh_replace_string "'/ws/'" "'${path_url%/}/ws/'" \ - "$final_path/app/assets/js/movim_websocket.js" +ynh_store_file_checksum --file="$final_path/config/db.inc.php" #================================================= # Install PHP dependencies using composer @@ -149,30 +143,34 @@ ynh_replace_string "'/ws/'" "'${path_url%/}/ws/'" \ cd "$final_path" export COMPOSER_HOME=$final_path curl -sS https://getcomposer.org/installer | php -- --install-dir="$final_path" \ - && php composer.phar config --global discard-changes true --quiet \ - && php composer.phar install --no-interaction --quiet + && php"${phpversion}" composer.phar install --no-interaction --quiet ) #================================================= # SETUP SYSTEMD #================================================= +ynh_script_progression --message="Configuring a systemd service..." --weight=1 + +ynh_replace_string --match_string="__DOMAIN__" --replace_string="$domain" --target_file=../conf/systemd.service +ynh_replace_string --match_string="__PATH__" --replace_string="$path_url" --target_file=../conf/systemd.service +ynh_replace_string --match_string="__PORT__" --replace_string="$port" --target_file=../conf/systemd.service -# Create a dedicated systemd config -ynh_replace_string "__URL__" "${domain}${path_url}" ../conf/systemd.service -ynh_replace_string "__PORT__" "${port}" ../conf/systemd.service ynh_add_systemd_config #================================================= # Set-up database and configuration #================================================= +ynh_script_progression --message="Configuring database..." --weight=1 -( - cd "$final_path" - php mud.php db --set - php mud.php config --loglevel=1 \ - --locale="$language" --timezone="$timezone" \ - --username="$admin" --password="$password" -) +cache_dir="/home/$app" + +# Create cachedir folder +mkdir -p $cache_dir +chown -R $app $cache_dir + +cd "$final_path" +ynh_exec_as $app php"${phpversion}" composer.phar $app:migrate +php"${phpversion}" daemon.php config --username=$admin --password=$password #================================================= # GENERIC FINALIZATION @@ -180,27 +178,44 @@ ynh_add_systemd_config # SET PERMISSIONS #================================================= -# TODO: use more strict permissions -chown -R "$app":www-data "$final_path" -find "${final_path}/" -type f -print0 | xargs -0 chmod 0644 -find "${final_path}/" -type d -print0 | xargs -0 chmod 0755 -chmod 400 "${final_path}/config/db.inc.php" +chown -R $app:www-data $final_path +chown -R $app $final_path/src/Movim/ + +#================================================= +# INTEGRATE SERVICE IN YUNOHOST +#================================================= +ynh_script_progression --message="Integrating service in YunoHost..." --weight=1 + +yunohost service add $app --description "Responsive web-based XMPP client" --log="/var/log/$app/$app.log" + +#================================================= +# START SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Starting a systemd service..." --weight=2 + +# Start a systemd service +ynh_systemd_action --service_name=$app --action="start" --log_path="systemd" #--line_match="HTTP Server listening" #================================================= # SETUP SSOWAT #================================================= +ynh_script_progression --message="Configuring SSOwat..." --weight=1 -# SSOwat configuration -if [[ "$ssoenabled" = "No" ]]; then - ynh_app_setting_set "$app" skipped_uris "/" - (cd "$final_path" && php mud.php config --xmppwhitelist="$domain") - undo_sso_patch -else - ynh_app_setting_set "$app" unprotected_uris "/" +# Make app public if necessary or protect it +if [ $is_public -eq 1 ] +then + ynh_permission_update --permission "main" --add "visitors" fi #================================================= # RELOAD NGINX #================================================= +ynh_script_progression --message="Reloading NGINX web server..." --weight=1 -service nginx reload +ynh_systemd_action --service_name=nginx --action=reload + +#================================================= +# END OF SCRIPT +#================================================= + +ynh_script_progression --message="Installation of Movim completed" --last diff --git a/scripts/remove b/scripts/remove index 8017332..58eebf1 100644 --- a/scripts/remove +++ b/scripts/remove @@ -16,33 +16,38 @@ source /usr/share/yunohost/helpers app=$YNH_APP_INSTANCE_NAME # Retrieve app settings -domain=$(ynh_app_setting_get "$app" domain) -final_path=$(ynh_app_setting_get "$app" final_path) -port=$(ynh_app_setting_get "$app" port) -db_name=$(ynh_app_setting_get "$app" db_name) +domain=$(ynh_app_setting_get --app="$app" --key=domain) +final_path=$(ynh_app_setting_get --app="$app" --key=final_path) +port=$(ynh_app_setting_get --app="$app" --key=port) +db_name=$(ynh_app_setting_get --app="$app" --key=db_name) db_user=$db_name +#================================================= +# STANDARD REMOVE +#================================================= +# 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 THE POSTGRESQL DATABASE +#================================================= +ynh_script_progression --message="Removing the PostgreSQL database" --weight=1 + +# Remove a database if it exists, along with the associated user +ynh_psql_remove_db --db_user=$db_user --db_name=$db_name + #================================================= # REMOVE NGINX CONFIGURATION #================================================= +ynh_script_progression --message="Removing NGINX web server configuration..." --weight=5 -# Remove the dedicated nginx config +# Remove the dedicated NGINX config ynh_remove_nginx_config -#================================================= -# REMOVE PHP-FPM CONFIGURATION -#================================================= - -# Remove the dedicated php-fpm config -ynh_remove_fpm_config - -#================================================= -# STOP AND REMOVE SERVICE -#================================================= - -# Remove the dedicated systemd config -ynh_remove_systemd_config - #================================================= # REMOVE DEPENDENCIES #================================================= @@ -50,33 +55,42 @@ ynh_remove_systemd_config # Remove metapackage and its dependencies ynh_remove_app_dependencies -#================================================= -# REMOVE THE MYSQL DATABASE -#================================================= - -ynh_mysql_remove_db "$db_user" "$db_name" - #================================================= # REMOVE APP MAIN DIR #================================================= +ynh_script_progression --message="Removing Movim main directory..." --weight=6 -ynh_secure_remove "$final_path" +# Remove the app directory securely +ynh_secure_remove --file="$final_path" #================================================= -# CLOSE A PORT +# REMOVE APP CACHE DIR #================================================= +ynh_script_progression --message="Removing Movim cache directory..." --weight=6 -if yunohost firewall list | grep -q "\- $port$" -then - echo "Close port $port" >&2 - yunohost firewall disallow TCP "$port" 2>&1 -fi +# Remove the app directory securely +ynh_secure_remove --file="/home/$app" + +#================================================= +# REMOVE PHP-FPM CONFIGURATION +#================================================= +ynh_script_progression --message="Removing PHP-FPM configuration..." --weight=2 + +# Remove the dedicated PHP_FPM config +ynh_remove_fpm_config #================================================= # GENERIC FINALIZATION #================================================= # REMOVE DEDICATED USER #================================================= +ynh_script_progression --message="Removing the dedicated system user..." --weight=1 # Delete a system user -ynh_system_user_delete "$app" +ynh_system_user_delete --username=$app + +#================================================= +# END OF SCRIPT +#================================================= + +ynh_script_progression --message="Removal of Movim completed" --last diff --git a/scripts/restore b/scripts/restore new file mode 100644 index 0000000..71f1eab --- /dev/null +++ b/scripts/restore @@ -0,0 +1,139 @@ +#!/bin/bash + +#================================================= +# GENERIC START +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +#Keep this path for calling _common.sh inside the execution's context of backup and restore scripts +source ../settings/scripts/_common.sh +source /usr/share/yunohost/helpers + +#================================================= +# MANAGE SCRIPT FAILURE +#================================================= + +ynh_clean_setup () { + true +} +# Exit if an error occurs during the execution of the script +ynh_abort_if_errors + +#================================================= +# LOAD SETTINGS +#================================================= +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) +final_path=$(ynh_app_setting_get --app=$app --key=final_path) +db_name=$(ynh_app_setting_get --app=$app --key=db_name) +db_user=$db_name +db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd) +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) + +#================================================= +# CHECK IF THE APP CAN BE RESTORED +#================================================= +ynh_script_progression --message="Validating restoration parameters..." --weight=2 + +ynh_webpath_available --domain=$domain --path_url=$path_url \ + || ynh_die --message="Path not available: ${domain}${path_url}" +test ! -d $final_path \ + || ynh_die --message="There is already a directory: $final_path " + +#================================================= +# STANDARD RESTORATION STEPS +#================================================= +# RESTORE THE NGINX CONFIGURATION +#================================================= + +ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" + +#================================================= +# RESTORE THE APP MAIN DIR +#================================================= +ynh_script_progression --message="Restoring Movim main directory..." --weight=1 + +ynh_restore_file --origin_path="$final_path" + +#================================================= +# RECREATE THE DEDICATED USER +#================================================= +ynh_script_progression --message="Recreating the dedicated system user..." --weight=1 + +# Create the dedicated user (if not existing) +ynh_system_user_create --username=$app + +#================================================= +# RESTORE USER RIGHTS +#================================================= + +# Restore permissions on app files +chown -R $app:www-data $final_path +chown -R $app $final_path/src/Movim/ + +#================================================= +# RESTORE THE PHP-FPM CONFIGURATION +#================================================= + +ynh_restore_file --origin_path="/etc/php/${phpversion}/fpm/pool.d/$app.conf" + +#================================================= +# SPECIFIC RESTORATION +#================================================= +# REINSTALL DEPENDENCIES +#================================================= +ynh_script_progression --message="Reinstalling dependencies..." --weight=2 + +# Define and install dependencies +ynh_install_app_dependencies $pkg_dependencies + +#================================================= +# RESTORE THE POSTGRESQL DATABASE +#================================================= +ynh_script_progression --message="Restoring the PostgreSQL database..." --weight=6 + +ynh_psql_test_if_first_run +ynh_psql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd +ynh_psql_execute_file_as_root --file="./db.sql" --database=$db_name + +#================================================= +# RESTORE SYSTEMD +#================================================= +ynh_script_progression --message="Restoring the systemd configuration..." --weight=4 + +ynh_restore_file --origin_path="/etc/systemd/system/$app.service" +systemctl enable $app.service + +#================================================= +# INTEGRATE SERVICE IN YUNOHOST +#================================================= + +yunohost service add $app --description "Responsive web-based XMPP client" --log "/var/log/$app/$app.log" + +#================================================= +# START SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Starting a systemd service..." --weight=2 + +ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log" + +#================================================= +# GENERIC FINALIZATION +#================================================= +# RELOAD NGINX AND PHP-FPM +#================================================= +ynh_script_progression --message="Reloading NGINX web server and PHP-FPM..." --weight=1 + +ynh_systemd_action --service_name=php${phpversion}-fpm --action=reload +ynh_systemd_action --service_name=nginx --action=reload + +#================================================= +# END OF SCRIPT +#================================================= + +ynh_script_progression --message="Restoration completed for Movim" --last diff --git a/scripts/upgrade b/scripts/upgrade index 939f1f0..22e8a13 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -12,47 +12,64 @@ source /usr/share/yunohost/helpers #================================================= # LOAD SETTINGS #================================================= +ynh_script_progression --message="Loading installation settings..." --weight=1 app=$YNH_APP_INSTANCE_NAME # Retrieve app settings -domain=$(ynh_app_setting_get "$app" domain) -path_url=$(ynh_app_setting_get "$app" path) -port=$(ynh_app_setting_get "$app" port) -ssoenabled=$(ynh_app_setting_get "$app" ssoenabled) -public_site=$(ynh_app_setting_get "$app" public_site) +domain=$(ynh_app_setting_get --app=$app --key=domain) +path_url=$(ynh_app_setting_get --app=$app --key=path) +port=$(ynh_app_setting_get --app=$app --key=port) +is_public=$(ynh_app_setting_get --app=$app --key=is_public) +final_path=$(ynh_app_setting_get --app=$app --key=final_path) +db_name=$(ynh_app_setting_get --app=$app --key=db_name) +db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd) +phpversion=$(ynh_app_setting_get --app="$app" --key=phpversion) timezone=$(cat /etc/timezone) -final_path=$(ynh_app_setting_get "$app" final_path) -db_name=$(ynh_app_setting_get "$app" db_name) + +#================================================= +# CHECK VERSION +#================================================= + +upgrade_type=$(ynh_check_app_version_changed) #================================================= # ENSURE DOWNWARD COMPATIBILITY #================================================= +ynh_script_progression --message="Ensuring downward compatibility..." --weight=4 -# If final_path doesn't exist, create it -if [ -z "$final_path" ]; then - final_path="/var/www/$app" - ynh_app_setting_set "$app" final_path "$final_path" +# Fix is_public as a boolean value +if [ "$is_public" = "Yes" ]; then + ynh_app_setting_set --app=$app --key=is_public --value=1 + is_public=1 +elif [ "$is_public" = "No" ]; then + ynh_app_setting_set --app=$app --key=is_public --value=0 + is_public=0 fi - # If db_name doesn't exist, create it if [ -z "$db_name" ]; then - db_name=$(ynh_sanitize_dbid "$app") - ynh_app_setting_set "$app" db_name "$db_name" + db_name=$(ynh_sanitize_dbid --db_name=$app) + ynh_app_setting_set --app=$app --key=db_name --value=$db_name +fi + +# If final_path doesn't exist, create it +if [ -z "$final_path" ]; then + final_path=/var/www/$app + ynh_app_setting_set --app=$app --key=final_path --value=$final_path fi #================================================= -# ACTIVE TRAP +# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP #================================================= +ynh_script_progression --message="Backing up Movim before upgrading (may take a while)..." --weight=1 -# TODO: activate backup # Backup the current version of the app -# ynh_backup_before_upgrade -# ynh_clean_setup () { +ynh_backup_before_upgrade +ynh_clean_setup () { # restore it if the upgrade fails - # ynh_restore_upgradebackup -# } + ynh_restore_upgradebackup +} # Exit if an error occurs during the execution of the script ynh_abort_if_errors @@ -63,56 +80,67 @@ ynh_abort_if_errors # Normalize the URL path syntax path_url=$(ynh_normalize_url_path $path_url) - #================================================= # STANDARD UPGRADE STEPS #================================================= - -#================================================= -# UPGRADE DEPENDENCIES +# STOP SYSTEMD SERVICE #================================================= +ynh_script_progression --message="Stopping a systemd service..." --weight=23 -ynh_install_app_dependencies php-gd php-curl php-imagick php-cli php-zmq +ynh_systemd_action --service_name=$app --action="stop" --log_path="/var/log/$app/$app.log" #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= -ynh_setup_source "$final_path" +if [ "$upgrade_type" == "UPGRADE_APP" ] +then + ynh_script_progression --message="Upgrading source files..." --weight=1 -## TODO: consider installation in a subpath -ynh_replace_string "'/ws/'" "'${path_url%/}/ws/'" \ - "${final_path}/app/assets/js/movim_websocket.js" + # Download, check integrity, uncompress and patch the source from app.src + ynh_setup_source --dest_dir="$final_path" +fi #================================================= # NGINX CONFIGURATION #================================================= +ynh_script_progression --message="Upgrading NGINX web server configuration..." --weight=5 # Create a dedicated nginx config ynh_add_nginx_config +#================================================= +# UPGRADE DEPENDENCIES +#================================================= +ynh_script_progression --message="Upgrading dependencies..." --weight=4 + +ynh_install_app_dependencies $pkg_dependencies + #================================================= # CREATE DEDICATED USER #================================================= +ynh_script_progression --message="Making sure dedicated system user exists..." --weight=7 # Create a dedicated user (if not existing) -ynh_system_user_create "$app" +ynh_system_user_create --username=$app #================================================= # PHP-FPM CONFIGURATION #================================================= +ynh_script_progression --message="Upgrading PHP-FPM configuration..." --weight=1 -# Create a dedicated php-fpm config -ynh_add_fpm_config +# Create a dedicated PHP-FPM config +ynh_replace_string --match_string="__TIMEZONE__" --replace_string="$timezone" --target_file=../conf/php-fpm.conf + +ynh_add_fpm_config --phpversion=$YNH_PHP_VERSION --package="$extra_php_dependencies" +phpversion=$(ynh_app_setting_get --app="$app" --key=phpversion) #================================================= # SET PERMISSIONS #================================================= -chown -R "$app":www-data "$final_path" -find "${final_path}/" -type f -print0 | xargs -0 chmod 0644 -find "${final_path}/" -type d -print0 | xargs -0 chmod 0755 -chmod 400 "${final_path}/config/db.inc.php" +chown -R $app:www-data $final_path +chown -R $app $final_path/src/Movim/Bootstrap.php #================================================= # Install PHP dependencies using composer @@ -128,58 +156,39 @@ chmod 400 "${final_path}/config/db.inc.php" #================================================= # Set-up database #================================================= - +ynh_script_progression --message="Configuring database.." --weight=1 ( cd "$final_path" - php mud.php db --set + ynh_exec_as $app php"${phpversion}" composer.phar movim:migrate ) -#================================================= -# ENSURE DOWNWARD COMPATIBILITY -#================================================= - -# Reset SSO parameters -ynh_app_setting_delete "$app" protected_uris -ynh_app_setting_delete "$app" skipped_uris -yunohost app clearaccess "$app" - -# Replace old public_site variable (if exists) by ssoenabled -# TODO: add clean support for old/new setting public_site/ssoenabled -if [ ! -z "$public_site" ]; then - [[ $public_site = "Yes" ]] \ - && ssoenabled="No" \ - || ssoenabled="Yes" - ynh_app_setting_delete "$app" public_site - ynh_app_setting_set "$app" ssoenabled "$ssoenabled" -fi - -#================================================= -# SETUP SSOWAT -#================================================= - -# SSOwat configuration -if [[ "$ssoenabled" = "No" ]]; then - ynh_app_setting_set "$app" skipped_uris "/" - (cd "$final_path" && php mud.php config --xmppwhitelist="$domain") - yunohost app ssowatconf - undo_sso_patch -else - ynh_app_setting_set "$app" unprotected_uris "/" -fi - - #================================================= # SETUP SYSTEMD #================================================= # Create a dedicated systemd config -ynh_replace_string "__URL__" "${domain}${path_url}" ../conf/systemd.service -ynh_replace_string "__PORT__" "${port}" ../conf/systemd.service +ynh_replace_string --match_string="__DOMAIN__" --replace_string="$domain" --target_file=../conf/systemd.service +ynh_replace_string --match_string="__PATH__" --replace_string="$path_url" --target_file=../conf/systemd.service +ynh_replace_string --match_string="__PORT__" --replace_string="$port" --target_file=../conf/systemd.service + ynh_add_systemd_config #================================================= -# RELOAD SERVICES +# START SYSTEMD SERVICE +#================================================= +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" + +#================================================= +# RELOAD NGINX +#================================================= +ynh_script_progression --message="Reloading NGINX web server..." --weight=1 + +ynh_systemd_action --service_name=nginx --action=reload + +#================================================= +# END OF SCRIPT #================================================= -# Reload services -service nginx reload +ynh_script_progression --message="Upgrade of Movim completed" --last diff --git a/sources/patches/app-00-sso-logout.patch b/sources/patches/app-00-sso-logout.patch deleted file mode 100644 index 28168d0..0000000 --- a/sources/patches/app-00-sso-logout.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/app/controllers/DisconnectController.php b/app/controllers/DisconnectController.php -index abe2006..af72e68 100644 ---- a/app/controllers/DisconnectController.php -+++ b/app/controllers/DisconnectController.php -@@ -20,6 +20,7 @@ class DisconnectController extends Base - // Fresh cookie - Cookie::renew(); - -- $this->redirect('login'); -+ $main_domain = exec('cat /etc/yunohost/current_host'); -+ header('Location: https://' . $main_domain . '/yunohost/sso/?action=logout'); - } - }