From 616b11b7363bf1f170f7e21ee24ba78ebd412c0e Mon Sep 17 00:00:00 2001 From: tomdereub Date: Mon, 30 Sep 2024 09:51:18 +0200 Subject: [PATCH 01/74] Update ADMIN.md (#734) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit J'ai sorti High Performance Backend, qui était dans la section Onlyoffice, alors que c'est indépendant. --- doc/ADMIN.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/ADMIN.md b/doc/ADMIN.md index 9b19c1b2..4a68583a 100644 --- a/doc/ADMIN.md +++ b/doc/ADMIN.md @@ -8,13 +8,13 @@ sudo -u __APP__ php__PHPVERSION__ --define apc.enable_cli=1 __INSTALL_DIR__/occ Alternatively, you may open a 'Nextcloud shell' with `sudo yunohost app shell __APP__`, then run `php occ ...` -### ONLYOFFICE integration +### High Performance Backend -ONLYOFFICE is an online rich text document editor which can be integrated in Nextcloud +High Performance Backend is an application on Nextcloud that should speed up the instance, more information here: https://github.com/nextcloud/notify_push#about -#### High Performance Backend +### ONLYOFFICE integration -High Performance Backend is an application on Nextcloud that should speed up the instance, more information here: https://github.com/nextcloud/notify_push#about +ONLYOFFICE is an online rich text document editor which can be integrated in Nextcloud #### With YunoHost App (ARM64 support, better performance) From 978e71f00ae691e2c47a13607bdf470be5266ae4 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Sat, 24 Aug 2024 19:43:16 +0200 Subject: [PATCH 02/74] Add experimental curl tests --- tests.toml | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/tests.toml b/tests.toml index a7671f20..bd538ce0 100644 --- a/tests.toml +++ b/tests.toml @@ -14,9 +14,32 @@ test_format = 1.0 test_upgrade_from.e9f82ab7.name = "Upgrade from 28.0.6" test_upgrade_from.e9f82ab7.args.system_addressbook_exposed = "yes" + [default.curl_tests] + #home.path = "/" + home.expect_title = "Login - Nextcloud" + home.auto_test_assets = true + + #dash.path = "/" + dash.logged_on_sso = true + dash.expect_title = "Dashboard - Nextcloud" + + admin.path = "/settings/admin" + admin.logged_on_sso = true + admin.expect_title = "Administration settings - Nextcloud" + + asset.path = "/core/img/logo/logo.svg" + + file.path = "/remote.php/dav/files/__USER__/Readme.md" + file.logged_on_sso = true + file.expect_content = "# Welcome to Nextcloud!" + + caldav.base_url = "https://__DOMAIN__" + caldav.path = "/.well-known/caldav" + caldav.logged_on_sso = true + caldav.expect_content = "This is the WebDAV interface." + [notify_push_test] args.enable_notify_push = "1" test_upgrade_from.e9f82ab7.name = "Upgrade from 28.0.6" test_upgrade_from.e9f82ab7.args.system_addressbook_exposed = "yes" - From 7a23074a5c2fd386915806052a23a609997f9da9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Thu, 10 Oct 2024 17:58:26 +0200 Subject: [PATCH 03/74] 29.0.8 --- manifest.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.toml b/manifest.toml index 7e35930b..9bbb5d49 100644 --- a/manifest.toml +++ b/manifest.toml @@ -5,7 +5,7 @@ name = "Nextcloud" description.en = "Online storage, file sharing platform and various other applications" description.fr = "Stockage en ligne, plateforme de partage de fichiers et diverses autres applications" -version = "29.0.7~ynh2" +version = "29.0.8~ynh1" maintainers = ["kay0u"] @@ -73,8 +73,8 @@ ram.runtime = "512M" [resources.sources] [resources.sources.main] - url = 'https://download.nextcloud.com/server/releases/nextcloud-29.0.7.tar.bz2' - sha256 = 'f532ffc31be5a8374b5e072b86fff8765ec19fda0c8509cee39873081db2c544' + url = 'https://download.nextcloud.com/server/releases/nextcloud-29.0.8.tar.bz2' + sha256 = '0ab54b517f76cd26f2bd38b6fe184b9fbaed32f734246c58c1acf83473c0a4b9' [resources.sources.28] url = 'https://download.nextcloud.com/server/releases/nextcloud-28.0.8.tar.bz2' From fa49faa69dfba538770db849bc2f14de8cebed93 Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Thu, 10 Oct 2024 17:58:31 +0200 Subject: [PATCH 04/74] Auto-update READMEs --- README.md | 2 +- README_es.md | 2 +- README_eu.md | 2 +- README_fr.md | 2 +- README_gl.md | 2 +- README_id.md | 2 +- README_nl.md | 2 +- README_ru.md | 2 +- README_zh_Hans.md | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 83bac72e..079d63d6 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ In the context of YunoHost, Nextcloud integrates with the SSO / user portal (Yun The `/.well-known` address will be automatically configured for CalDAV and CardDAV synchronization if no other service such as Baïkal is already using it. -**Shipped version:** 29.0.7~ynh2 +**Shipped version:** 29.0.8~ynh1 **Demo:** diff --git a/README_es.md b/README_es.md index 15930ab6..51e82f2c 100644 --- a/README_es.md +++ b/README_es.md @@ -23,7 +23,7 @@ In the context of YunoHost, Nextcloud integrates with the SSO / user portal (Yun The `/.well-known` address will be automatically configured for CalDAV and CardDAV synchronization if no other service such as Baïkal is already using it. -**Versión actual:** 29.0.7~ynh2 +**Versión actual:** 29.0.8~ynh1 **Demo:** diff --git a/README_eu.md b/README_eu.md index 1207b069..c54ea437 100644 --- a/README_eu.md +++ b/README_eu.md @@ -23,7 +23,7 @@ In the context of YunoHost, Nextcloud integrates with the SSO / user portal (Yun The `/.well-known` address will be automatically configured for CalDAV and CardDAV synchronization if no other service such as Baïkal is already using it. -**Paketatutako bertsioa:** 29.0.7~ynh2 +**Paketatutako bertsioa:** 29.0.8~ynh1 **Demoa:** diff --git a/README_fr.md b/README_fr.md index 98a51cf1..9c3a02aa 100644 --- a/README_fr.md +++ b/README_fr.md @@ -23,7 +23,7 @@ Dans le cadre de YunoHost, Nextcloud s'intègre avec le SSO / portail utilisateu L'adresse `/.well-known` sera automatiquement configuré pour la synchronisation CalDAV et CardDAV si aucun autre service tel que Baïkal ne l'utilise déjà. -**Version incluse :** 29.0.7~ynh2 +**Version incluse :** 29.0.8~ynh1 **Démo :** diff --git a/README_gl.md b/README_gl.md index f5b88bf2..3f58552e 100644 --- a/README_gl.md +++ b/README_gl.md @@ -23,7 +23,7 @@ In the context of YunoHost, Nextcloud integrates with the SSO / user portal (Yun The `/.well-known` address will be automatically configured for CalDAV and CardDAV synchronization if no other service such as Baïkal is already using it. -**Versión proporcionada:** 29.0.7~ynh2 +**Versión proporcionada:** 29.0.8~ynh1 **Demo:** diff --git a/README_id.md b/README_id.md index 6820e080..ee5cee4b 100644 --- a/README_id.md +++ b/README_id.md @@ -23,7 +23,7 @@ In the context of YunoHost, Nextcloud integrates with the SSO / user portal (Yun The `/.well-known` address will be automatically configured for CalDAV and CardDAV synchronization if no other service such as Baïkal is already using it. -**Versi terkirim:** 29.0.7~ynh2 +**Versi terkirim:** 29.0.8~ynh1 **Demo:** diff --git a/README_nl.md b/README_nl.md index 5b7ac74e..18d16fbc 100644 --- a/README_nl.md +++ b/README_nl.md @@ -23,7 +23,7 @@ In the context of YunoHost, Nextcloud integrates with the SSO / user portal (Yun The `/.well-known` address will be automatically configured for CalDAV and CardDAV synchronization if no other service such as Baïkal is already using it. -**Geleverde versie:** 29.0.7~ynh2 +**Geleverde versie:** 29.0.8~ynh1 **Demo:** diff --git a/README_ru.md b/README_ru.md index 63661d61..587b92aa 100644 --- a/README_ru.md +++ b/README_ru.md @@ -23,7 +23,7 @@ In the context of YunoHost, Nextcloud integrates with the SSO / user portal (Yun The `/.well-known` address will be automatically configured for CalDAV and CardDAV synchronization if no other service such as Baïkal is already using it. -**Поставляемая версия:** 29.0.7~ynh2 +**Поставляемая версия:** 29.0.8~ynh1 **Демо-версия:** diff --git a/README_zh_Hans.md b/README_zh_Hans.md index 73eb98d9..2e29df22 100644 --- a/README_zh_Hans.md +++ b/README_zh_Hans.md @@ -23,7 +23,7 @@ In the context of YunoHost, Nextcloud integrates with the SSO / user portal (Yun The `/.well-known` address will be automatically configured for CalDAV and CardDAV synchronization if no other service such as Baïkal is already using it. -**分发版本:** 29.0.7~ynh2 +**分发版本:** 29.0.8~ynh1 **演示:** From 9cee1eb27c0904c9fe5ac50e75d078c929230d9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Fri, 11 Oct 2024 11:45:27 +0200 Subject: [PATCH 05/74] fix linter --- scripts/install | 2 +- scripts/upgrade | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/install b/scripts/install index 324381ce..43455101 100755 --- a/scripts/install +++ b/scripts/install @@ -220,7 +220,7 @@ then ynh_add_config --template="watcher.path" --destination="/etc/systemd/system/${app}-notify-push-watcher.path" ynh_add_systemd_config --service="${app}-notify-push-watcher" --template="watcher.service" - systemctl enable --now ${app}-notify-push-watcher.path + systemctl enable --now --quiet ${app}-notify-push-watcher.path ynh_add_systemd_config --service="${app}-notify-push" fi diff --git a/scripts/upgrade b/scripts/upgrade index 657a10c0..37121476 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -405,7 +405,7 @@ then ynh_add_config --template="watcher.path" --destination="/etc/systemd/system/${app}-notify-push-watcher.path" ynh_add_systemd_config --service="${app}-notify-push-watcher" --template="watcher.service" - systemctl enable --now ${app}-notify-push-watcher.path + systemctl enable --now --quiet ${app}-notify-push-watcher.path ynh_add_systemd_config --service="${app}-notify-push" fi From 12bca635fc471a267370c519b5fe53703e1da957 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Fri, 11 Oct 2024 11:55:30 +0200 Subject: [PATCH 06/74] Update remove --- scripts/remove | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/remove b/scripts/remove index 5b503421..20a29598 100755 --- a/scripts/remove +++ b/scripts/remove @@ -23,7 +23,7 @@ ynh_remove_fail2ban_config # Remove notify push ynh_remove_systemd_config --service="${app}-notify-push" -ynh_exec_warn_less systemctl disable --now ${app}-notify-push-watcher.path +systemctl disable --now --quiet ${app}-notify-push-watcher.path ynh_secure_remove --file="/etc/systemd/system/${app}-notify-push-watcher.path" ynh_remove_systemd_config --service="${app}-notify-push-watcher" From b3ac029daa919d160e0f802bf1e7c25975303fc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Mon, 14 Oct 2024 08:53:59 +0200 Subject: [PATCH 07/74] Update tests.toml --- tests.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests.toml b/tests.toml index bd538ce0..edbf2ab4 100644 --- a/tests.toml +++ b/tests.toml @@ -8,11 +8,11 @@ test_format = 1.0 # Commits to test upgrade from # ------------------------------- - test_upgrade_from.c5cf91ad.name = "Upgrade from 25.0.2" + #test_upgrade_from.c5cf91ad.name = "Upgrade from 25.0.2" test_upgrade_from.caf917f3.name = "Upgrade from 26.0.2" test_upgrade_from.9c6d1eea.name = "Upgrade from 27.1.4" - test_upgrade_from.e9f82ab7.name = "Upgrade from 28.0.6" - test_upgrade_from.e9f82ab7.args.system_addressbook_exposed = "yes" + #test_upgrade_from.e9f82ab7.name = "Upgrade from 28.0.6" + #test_upgrade_from.e9f82ab7.args.system_addressbook_exposed = "yes" [default.curl_tests] #home.path = "/" From cc04eb60034cbf633190bd746d35a1d284486bac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Fri, 25 Oct 2024 12:13:51 +0200 Subject: [PATCH 08/74] Add fr translation --- config_panel.toml | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/config_panel.toml b/config_panel.toml index c408eadc..517f06d9 100644 --- a/config_panel.toml +++ b/config_panel.toml @@ -1,30 +1,36 @@ version = "1.0" [main] -name = "Nextcloud configuration" +name.en = "Nextcloud configuration" +name.fr = "Configuration Nextcloud" [main.maintenance] name = "Maintenance" [main.maintenance.maintenance_mode] - ask = "Enable maintenance mode" + ask.en = "Enable maintenance mode" + ask.fr = "Activer le mode maintenance" type = "boolean" default = false [main.maintenance.set_permissions_button] ask.en = "Set permissions for all data (Can take up to several hours if users have a lot of data)" + ask.fr = "Définir des autorisations pour toutes les données (cela peut prendre jusqu'à plusieurs heures)" type = "button" style = "success" [main.addressbook] - name = "Address book configuration" + name.en = "Address book configuration" + name.fr = "Configuration du carnet d'adresses" [main.addressbook.system_addressbook_exposed] - ask = "Should there be a system address book listing all users, accessible by all users?" + ask.en = "Should there be a system address book listing all users, accessible by all users?" + ask.fr = "Devrait-il y avoir un carnet d’adresses système répertoriant tous les utilisateurs, accessible par tous les utilisateurs ?" type = "boolean" [main.notify_push] - name = "Notify Push configuration" + name.en = "Notify Push configuration" + name.fr = "Configuration de la notification push" [main.notify_push.enable_notify_push] ask.en = "Configure the High Performance Backend?" @@ -35,7 +41,8 @@ name = "Nextcloud configuration" [main.php_fpm_config] - name = "PHP-FPM configuration" + name.en = "PHP-FPM configuration" + name.fr = "Configuration de PHP-FPM" [main.php_fpm_config.fpm_footprint] ask = "Memory footprint" From e8e04de9d777486d88a1620cc230e7cda7d02ec5 Mon Sep 17 00:00:00 2001 From: eric_G <46165813+ericgaspar@users.noreply.github.com> Date: Fri, 25 Oct 2024 12:16:01 +0200 Subject: [PATCH 09/74] remove duplicate extension "js" (#742) --- conf/nginx.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/nginx.conf b/conf/nginx.conf index aabd4471..6b01ab59 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -4,7 +4,7 @@ # only for Nextcloud like below: include mime.types; types { - text/javascript js mjs; + text/javascript mjs; } location ^~ /.well-known { From 8f8a3afc25f15a471afc053a3dbd1f7484829375 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Fri, 25 Oct 2024 23:16:19 +0200 Subject: [PATCH 10/74] Update config_panel.toml --- config_panel.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config_panel.toml b/config_panel.toml index 517f06d9..31ceb80d 100644 --- a/config_panel.toml +++ b/config_panel.toml @@ -2,7 +2,7 @@ version = "1.0" [main] name.en = "Nextcloud configuration" -name.fr = "Configuration Nextcloud" +name.fr = "Configuration de Nextcloud" [main.maintenance] name = "Maintenance" From 83dd697b14dd47f8282e1d4231d7e7f7a2418a72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Thu, 31 Oct 2024 16:42:13 +0100 Subject: [PATCH 11/74] Update manifest.toml --- manifest.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.toml b/manifest.toml index 9bbb5d49..acf562e1 100644 --- a/manifest.toml +++ b/manifest.toml @@ -19,7 +19,7 @@ code = "https://github.com/nextcloud/server" cpe = "cpe:2.3:a:nextcloud:nextcloud" [integration] -yunohost = ">= 11.2.27" +yunohost = ">= 11.3.0" architectures = ["amd64", "arm64", "armhf"] multi_instance = true From 960a061e86a37f5ea72875dfd19333038b476e11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Sun, 3 Nov 2024 09:38:21 +0100 Subject: [PATCH 12/74] fix translations --- config_panel.toml | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/config_panel.toml b/config_panel.toml index 31ceb80d..d0afdc14 100644 --- a/config_panel.toml +++ b/config_panel.toml @@ -24,20 +24,22 @@ name.fr = "Configuration de Nextcloud" name.fr = "Configuration du carnet d'adresses" [main.addressbook.system_addressbook_exposed] - ask.en = "Should there be a system address book listing all users, accessible by all users?" - ask.fr = "Devrait-il y avoir un carnet d’adresses système répertoriant tous les utilisateurs, accessible par tous les utilisateurs ?" + ask.en = "Enable address book" + ask.fr = "Activer le carnet d’adresses" type = "boolean" + help.en = "Should there be a system address book listing all users, accessible by all users?" + help.fr = "Devrait-il y avoir un carnet d’adresses système répertoriant tous les utilisateurs, accessible par tous les utilisateurs ?" [main.notify_push] name.en = "Notify Push configuration" - name.fr = "Configuration de la notification push" + name.fr = "Configuration Notification Push" [main.notify_push.enable_notify_push] - ask.en = "Configure the High Performance Backend?" - ask.fr = "Configurer le Backend Hautes Performances ?" + ask.en = "Enable Notify Push" + ask.fr = "Activer la Notification Push" type = "boolean" - help.en = "Also called 'notify push' and corresponds to a mechanism allowing more instantaneous notifications and reduce server load. (However, it is still a bit new and adds complexity to the setup)" - help.fr = "Aussi appelé 'notifications push' et corresponds à un mécanisme qui permet d'avoir des notifications plus rapides et de réduire la charge du serveur. (Cependant, cette fonctionnalité reste relativement nouvelle, et augmente la complexité de l'installation)" + help.en = "Mechanism allowing more instantaneous notifications and reduce server load." + help.fr = "Mécanisme qui permet d'avoir des notifications plus rapides et de réduire la charge du serveur." [main.php_fpm_config] @@ -45,7 +47,8 @@ name.fr = "Configuration de Nextcloud" name.fr = "Configuration de PHP-FPM" [main.php_fpm_config.fpm_footprint] - ask = "Memory footprint" + ask.en = "Memory footprint" + ask.fr = "Empreinte mémoire" type = "select" choices.low = "Low, <= 20Mb per pool" choices.medium = "Medium, between 20Mb and 40Mb per pool" @@ -61,8 +64,11 @@ name.fr = "Configuration de Nextcloud" help = "Free field to specify exactly the footprint in Mb if you don't want to use one of the three previous values." [main.php_fpm_config.fpm_usage] - ask = "Expected usage" + ask.en = "Expected usage" + ask.fr = "Utilisation prévue" type = "select" choices = ["low", "medium", "high"] default = "low" - help = "low: Personal usage, behind the SSO. No RAM footprint when not used, but the impact on the processor can be high if many users are using the service.
medium: Low usage, few people or/and publicly accessible. Low RAM footprint, medium processor footprint when used.
high: High usage, frequently visited website. High RAM footprint, but lower on processor usage and quickly responding." + help.en = "low: Personal usage, behind the SSO. No RAM footprint when not used, but the impact on the processor can be high if many users are using the service.
medium: Low usage, few people or/and publicly accessible. Low RAM footprint, medium processor footprint when used.
high: High usage, frequently visited website. High RAM footprint, but lower on processor usage and quickly responding." + help.fr = "low : utilisation personnelle, derrière le SSO. Pas d'empreinte RAM lorsqu'il n'est pas utilisé, mais l'impact sur le processeur peut être élevé si de nombreux utilisateurs utilisent le service.
medium : faible utilisation, peu de personnes ou/et accessible au public. Faible empreinte RAM, empreinte processeur moyenne lorsqu'il est utilisé.
high : utilisation élevée, site Web fréquemment visité. Empreinte RAM élevée, mais utilisation du processeur plus faible et réponse rapide." + From ccbdda19e39b2b3392e9c37ad9fe3672a4d391de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Sun, 3 Nov 2024 10:18:12 +0100 Subject: [PATCH 13/74] Update config_panel.toml --- config_panel.toml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/config_panel.toml b/config_panel.toml index d0afdc14..ca86708c 100644 --- a/config_panel.toml +++ b/config_panel.toml @@ -14,10 +14,12 @@ name.fr = "Configuration de Nextcloud" default = false [main.maintenance.set_permissions_button] - ask.en = "Set permissions for all data (Can take up to several hours if users have a lot of data)" - ask.fr = "Définir des autorisations pour toutes les données (cela peut prendre jusqu'à plusieurs heures)" + ask.en = "Reset permissions" + ask.fr = "Redéfinir les autorisations" type = "button" style = "success" + help.en = "This action sets permissions for all data. Beware, this action can take up to several hours if users have a lot of data." + help.fr = "Cette action définit les autorisations pour toutes les données. Attention, cette action peut prendre jusqu'à plusieurs heures si les utilisateurs ont beaucoup de données." [main.addressbook] name.en = "Address book configuration" From c52350016024bd0ab3f3a532680a80a77c9d1ceb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Sun, 3 Nov 2024 10:28:27 +0100 Subject: [PATCH 14/74] Update config_panel.toml --- config_panel.toml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/config_panel.toml b/config_panel.toml index ca86708c..a22d2cb1 100644 --- a/config_panel.toml +++ b/config_panel.toml @@ -13,7 +13,11 @@ name.fr = "Configuration de Nextcloud" type = "boolean" default = false - [main.maintenance.set_permissions_button] + [main.permissions] + name.en = "Permissions" + name.fr = "Autorisations" + + [main.permissions.set_permissions_button] ask.en = "Reset permissions" ask.fr = "Redéfinir les autorisations" type = "button" From b100f029915d454c05e611d3ab5f914bff1a6793 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Sun, 3 Nov 2024 10:41:04 +0100 Subject: [PATCH 15/74] Update manifest.toml --- manifest.toml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/manifest.toml b/manifest.toml index acf562e1..d27bbbff 100644 --- a/manifest.toml +++ b/manifest.toml @@ -49,8 +49,8 @@ ram.runtime = "512M" default = "visitors" [install.user_home] - ask.en = "Access the users home folder from Nextcloud?" - ask.fr = "Accéder au dossier personnel des utilisateurs depuis Nextcloud ?" + ask.en = "Access the users home folder from Nextcloud" + ask.fr = "Accéder au dossier personnel des utilisateurs depuis Nextcloud" type = "boolean" default = false @@ -61,12 +61,12 @@ ram.runtime = "512M" default = true [install.enable_notify_push] - ask.en = "Configure the High Performance Backend?" - ask.fr = "Configurer le Backend Hautes Performances ?" + ask.en = "Enable Notify Push" + ask.fr = "Activer la Notification Push" type = "boolean" default = false - help.en = "Also called 'notify push' and corresponds to a mechanism allowing more instantaneous notifications and reduce server load. (However, it is still a bit new and adds complexity to the setup)" - help.fr = "Aussi appelé 'notifications push' et corresponds à un mécanisme qui permet d'avoir des notifications plus rapides et de réduire la charge du serveur. (Cependant, cette fonctionnalité reste relativement nouvelle, et augmente la complexité de l'installation)" + help.en = "Mechanism allowing more instantaneous notifications and reduce server load. (However, it is still a bit new and adds complexity to the setup)" + help.fr = "Mécanisme qui permet d'avoir des notifications plus rapides et de réduire la charge du serveur. (Cependant, cette fonctionnalité reste relativement nouvelle, et augmente la complexité de l'installation)" [resources] From bd68f75e17ca8a4cf670d09b2732544976a901af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Sun, 3 Nov 2024 10:46:44 +0100 Subject: [PATCH 16/74] Update manifest.toml --- manifest.toml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/manifest.toml b/manifest.toml index d27bbbff..476a1d76 100644 --- a/manifest.toml +++ b/manifest.toml @@ -55,10 +55,13 @@ ram.runtime = "512M" default = false [install.system_addressbook_exposed] - ask.en = "Should there be a system address book listing all users, accessible by all users?" - ask.fr = "Devrait-il y avoir un carnet d'adresses système listant tous les comptes, accessible par tous les comptes ?" + ask.en = "Enable address book" + ask.fr = "Activer le carnet d’adresses" type = "boolean" default = true + help.en = "Should there be a system address book listing all users, accessible by all users?" + help.fr = "Devrait-il y avoir un carnet d’adresses système répertoriant tous les utilisateurs, accessible par tous les utilisateurs ?" + [install.enable_notify_push] ask.en = "Enable Notify Push" From c9b8e60b07563612b10a406d18694c39cd10bddc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Sun, 3 Nov 2024 10:47:54 +0100 Subject: [PATCH 17/74] Update manifest.toml --- manifest.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/manifest.toml b/manifest.toml index 476a1d76..05180f83 100644 --- a/manifest.toml +++ b/manifest.toml @@ -62,7 +62,6 @@ ram.runtime = "512M" help.en = "Should there be a system address book listing all users, accessible by all users?" help.fr = "Devrait-il y avoir un carnet d’adresses système répertoriant tous les utilisateurs, accessible par tous les utilisateurs ?" - [install.enable_notify_push] ask.en = "Enable Notify Push" ask.fr = "Activer la Notification Push" From 81958af8fd59556b3cf5af6b64dddd7799a33605 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Sun, 3 Nov 2024 11:38:55 +0100 Subject: [PATCH 18/74] Update manifest.toml --- manifest.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.toml b/manifest.toml index 05180f83..575945cc 100644 --- a/manifest.toml +++ b/manifest.toml @@ -19,7 +19,7 @@ code = "https://github.com/nextcloud/server" cpe = "cpe:2.3:a:nextcloud:nextcloud" [integration] -yunohost = ">= 11.3.0" +yunohost = ">= 11.2.30" architectures = ["amd64", "arm64", "armhf"] multi_instance = true From e454580485e38e5da82c882482a3fce5a6d45e35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Sun, 3 Nov 2024 11:46:34 +0100 Subject: [PATCH 19/74] Update install --- scripts/install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install b/scripts/install index 43455101..26020d18 100755 --- a/scripts/install +++ b/scripts/install @@ -308,7 +308,7 @@ then ynh_systemd_action --service_name="${app}-notify-push" --action=restart --line_match="Push daemon for Nextcloud clients." --log_path="systemd" if ! exec_occ notify_push:self-test; then - ynh_print_warn --message="The High Performance Backend service is still not working properly. Please log in with a user to your NextCloud instance, restart the High Performance Backend service with \"systemctl restart ${app}-notify-push.service\", and run \"sudo -u $app php${phpversion} $install_dir/occ notify_push:self-test\" to verify that everything is green." + ynh_print_warn --message="The Notify Push service is still not working properly. Please log in with a user to your NextCloud instance, restart the Notify Push service with \"systemctl restart ${app}-notify-push.service\", and run \"sudo -u $app php${phpversion} $install_dir/occ notify_push:self-test\" to verify that everything is green." fi fi From 1456e669b2bcfdffca75c80c557d23b353e42b25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Sun, 3 Nov 2024 11:47:46 +0100 Subject: [PATCH 20/74] cleaning --- scripts/restore | 2 +- scripts/upgrade | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/restore b/scripts/restore index 63581144..90c74d5a 100755 --- a/scripts/restore +++ b/scripts/restore @@ -171,7 +171,7 @@ then ynh_systemd_action --service_name="${app}-notify-push" --action=restart --line_match="Push daemon for Nextcloud clients." --log_path="systemd" --action=restart if ! exec_occ notify_push:self-test; then - ynh_print_warn --message="The High Performance Backend service is still not working properly. Please log in with a user to your NextCloud instance, restart the High Performance Backend service with \"systemctl restart ${app}-notify-push.service\", and run \"sudo -u $app php${phpversion} $install_dir/occ notify_push:self-test\" to verify that everything is green." + ynh_print_warn --message="The Notify Push service is still not working properly. Please log in with a user to your NextCloud instance, restart the Notify Push service with \"systemctl restart ${app}-notify-push.service\", and run \"sudo -u $app php${phpversion} $install_dir/occ notify_push:self-test\" to verify that everything is green." fi fi diff --git a/scripts/upgrade b/scripts/upgrade index 37121476..ab9b0309 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -452,7 +452,7 @@ then ynh_systemd_action --service_name="${app}-notify-push" --action=restart --line_match="Push daemon for Nextcloud clients." --log_path="systemd" --action=restart if ! exec_occ notify_push:self-test; then - ynh_print_warn --message="The High Performance Backend service is still not working properly. Please log in with a user to your NextCloud instance, restart the High Performance Backend service with \"systemctl restart ${app}-notify-push.service\", and run \"sudo -u $app php${phpversion} $install_dir/occ notify_push:self-test\" to verify that everything is green." + ynh_print_warn --message="The Notify Push service is still not working properly. Please log in with a user to your NextCloud instance, restart the Notify Push service with \"systemctl restart ${app}-notify-push.service\", and run \"sudo -u $app php${phpversion} $install_dir/occ notify_push:self-test\" to verify that everything is green." fi fi From 3195268297bca273a15eac3561aa1af8c48c9484 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Sun, 3 Nov 2024 11:48:41 +0100 Subject: [PATCH 21/74] cleaning --- doc/ADMIN.md | 4 ++-- doc/ADMIN_fr.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/ADMIN.md b/doc/ADMIN.md index 4a68583a..2262f3d7 100644 --- a/doc/ADMIN.md +++ b/doc/ADMIN.md @@ -8,9 +8,9 @@ sudo -u __APP__ php__PHPVERSION__ --define apc.enable_cli=1 __INSTALL_DIR__/occ Alternatively, you may open a 'Nextcloud shell' with `sudo yunohost app shell __APP__`, then run `php occ ...` -### High Performance Backend +### Notify Push -High Performance Backend is an application on Nextcloud that should speed up the instance, more information here: https://github.com/nextcloud/notify_push#about +Notify Push is an application on Nextcloud that should speed up the instance, more information here: https://github.com/nextcloud/notify_push#about ### ONLYOFFICE integration diff --git a/doc/ADMIN_fr.md b/doc/ADMIN_fr.md index 5b52928a..ed3c619b 100644 --- a/doc/ADMIN_fr.md +++ b/doc/ADMIN_fr.md @@ -12,9 +12,9 @@ Ou bien, vous pouvez ouvrir un "shell Nextcloud" avec `sudo yunohost app shell _ ONLYOFFICE est un éditeur de texte enrichi en ligne qui peut s'intégrer dans Nextcloud -#### Backend Hautes Performances +#### Notify Push -Le backend Hautes Performances est une application sur Nextcloud qui devrait accélérer l'instance, plus d'informations ici : https://github.com/nextcloud/notify_push#about +Notify Push est une application sur Nextcloud qui devrait accélérer l'instance, plus d'informations ici : https://github.com/nextcloud/notify_push#about #### Avec l'application YunoHost (support ARM64, meilleures performances) From 278140470a66eb6b79fc58a08f1451c46d8ce682 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Mon, 4 Nov 2024 12:10:17 +0100 Subject: [PATCH 22/74] add link to the help menu --- doc/ADMIN.md | 4 ---- doc/ADMIN_fr.md | 4 ---- manifest.toml | 4 ++-- 3 files changed, 2 insertions(+), 10 deletions(-) diff --git a/doc/ADMIN.md b/doc/ADMIN.md index 2262f3d7..8d401d2f 100644 --- a/doc/ADMIN.md +++ b/doc/ADMIN.md @@ -8,10 +8,6 @@ sudo -u __APP__ php__PHPVERSION__ --define apc.enable_cli=1 __INSTALL_DIR__/occ Alternatively, you may open a 'Nextcloud shell' with `sudo yunohost app shell __APP__`, then run `php occ ...` -### Notify Push - -Notify Push is an application on Nextcloud that should speed up the instance, more information here: https://github.com/nextcloud/notify_push#about - ### ONLYOFFICE integration ONLYOFFICE is an online rich text document editor which can be integrated in Nextcloud diff --git a/doc/ADMIN_fr.md b/doc/ADMIN_fr.md index ed3c619b..06b76b12 100644 --- a/doc/ADMIN_fr.md +++ b/doc/ADMIN_fr.md @@ -12,10 +12,6 @@ Ou bien, vous pouvez ouvrir un "shell Nextcloud" avec `sudo yunohost app shell _ ONLYOFFICE est un éditeur de texte enrichi en ligne qui peut s'intégrer dans Nextcloud -#### Notify Push - -Notify Push est une application sur Nextcloud qui devrait accélérer l'instance, plus d'informations ici : https://github.com/nextcloud/notify_push#about - #### Avec l'application YunoHost (support ARM64, meilleures performances) Pour de meilleures performances et le support de ARM64 (Raspberry Pi, OLinuXino...), installez l'[app YunoHost OnlyOffice](https://apps.yunohost.org/app/onlyoffice), puis connectez-la à Nextcloud : voir le tutoriel dans la [doc du paquet onlyoffice_ynh](https://github.com/YunoHost-Apps/onlyoffice_ynh/blob/master/README_fr.md#configuration-de-onlyoffice-server) diff --git a/manifest.toml b/manifest.toml index 575945cc..fa7717ce 100644 --- a/manifest.toml +++ b/manifest.toml @@ -67,8 +67,8 @@ ram.runtime = "512M" ask.fr = "Activer la Notification Push" type = "boolean" default = false - help.en = "Mechanism allowing more instantaneous notifications and reduce server load. (However, it is still a bit new and adds complexity to the setup)" - help.fr = "Mécanisme qui permet d'avoir des notifications plus rapides et de réduire la charge du serveur. (Cependant, cette fonctionnalité reste relativement nouvelle, et augmente la complexité de l'installation)" + help.en = "Notify Push is a mechanism allowing more instantaneous notifications and reduce server load. (However, it is still a bit new)" + help.fr = "Notify Push est un mécanisme qui permet d'avoir des notifications plus rapides et de réduire la charge du serveur. (Cependant, cette fonctionnalité reste relativement nouvelle)" [resources] From 6f868da54a3dd64aca2d342771e9475e6a210273 Mon Sep 17 00:00:00 2001 From: eric_G <46165813+ericgaspar@users.noreply.github.com> Date: Mon, 4 Nov 2024 13:12:37 +0100 Subject: [PATCH 23/74] remove onlyoffice doc (#743) --- doc/ADMIN.md | 15 --------------- doc/ADMIN_fr.md | 15 --------------- 2 files changed, 30 deletions(-) diff --git a/doc/ADMIN.md b/doc/ADMIN.md index 8d401d2f..a48d167d 100644 --- a/doc/ADMIN.md +++ b/doc/ADMIN.md @@ -7,18 +7,3 @@ sudo -u __APP__ php__PHPVERSION__ --define apc.enable_cli=1 __INSTALL_DIR__/occ ``` Alternatively, you may open a 'Nextcloud shell' with `sudo yunohost app shell __APP__`, then run `php occ ...` - -### ONLYOFFICE integration - -ONLYOFFICE is an online rich text document editor which can be integrated in Nextcloud - -#### With YunoHost App (ARM64 support, better performance) - -For better performance and ARM64 support (Raspberry Pi, OLinuXino...), install the [OnlyOffice YunoHost app](https://apps.yunohost.org/app/onlyoffice) and connect it to Nextcloud, see the tutorial in the [doc of onlyoffice_ynh package](https://github.com/YunoHost-Apps/onlyoffice_ynh/blob/master/README_fr.md#configuration-de-onlyoffice-server) - -#### Alternative: With Nextcloud App (no ARM support, lower performance) - -Nextcloud features a direct integration of ONLYOFFICE through a Nextcloud app. -- Install *Community Document Server* application in your Nextcloud. That's the part that runs ONLYOFFICE server. -- Install *ONLYOFFICE* application. That's the client part that will connect to an ONLYOFFICE server. -- Then in Settings -> ONLYOFFICE (`https://__DOMAIN____PATH__/settings/admin/onlyoffice`), if you want to configure which file formats should be opened by ONLYOFFICE. diff --git a/doc/ADMIN_fr.md b/doc/ADMIN_fr.md index 06b76b12..ada48ad9 100644 --- a/doc/ADMIN_fr.md +++ b/doc/ADMIN_fr.md @@ -7,18 +7,3 @@ sudo -u __APP__ php__PHPVERSION__ --define apc.enable_cli=1 __INSTALL_DIR__/occ ``` Ou bien, vous pouvez ouvrir un "shell Nextcloud" avec `sudo yunohost app shell __APP__`, puis lancer `php occ ...` - -### Intégration d'ONLYOFFICE - -ONLYOFFICE est un éditeur de texte enrichi en ligne qui peut s'intégrer dans Nextcloud - -#### Avec l'application YunoHost (support ARM64, meilleures performances) - -Pour de meilleures performances et le support de ARM64 (Raspberry Pi, OLinuXino...), installez l'[app YunoHost OnlyOffice](https://apps.yunohost.org/app/onlyoffice), puis connectez-la à Nextcloud : voir le tutoriel dans la [doc du paquet onlyoffice_ynh](https://github.com/YunoHost-Apps/onlyoffice_ynh/blob/master/README_fr.md#configuration-de-onlyoffice-server) - -#### Alternative: avec l'application Nextcloud (pas de support ARM, performances limitées) - -Nextcloud inclut une intégration directe via une application Nextcloud. -- Installez l'application *Community Document Server* dans votre Nextcloud. C'est la partie qui fait tourner un serveur ONLYOFFICE. -- Installez l'application *ONLYOFFICE*. C'est la partie cliente qui va se connecter au serveur ONLYOFFICE. -- Ensuite dans les Paramètres -> ONLYOFFICE (`https://__DOMAIN____PATH__/settings/admin/onlyoffice`), si vous voulez configurer quels formats de fichier s'ouvrent avec ONLYOFFICE. From 96c0aaf02aaccd95dc3ea79dbeeed2ae795300ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Mon, 4 Nov 2024 13:58:01 +0100 Subject: [PATCH 24/74] cleaning --- doc/DESCRIPTION.md | 4 +++- doc/DESCRIPTION_fr.md | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/DESCRIPTION.md b/doc/DESCRIPTION.md index 67150c8f..9565b929 100644 --- a/doc/DESCRIPTION.md +++ b/doc/DESCRIPTION.md @@ -1,5 +1,7 @@ Nextcloud lets you access and synchronize data, files, contacts and calendars between different devices (PCs or mobiles), or share them with other people (with or without accounts), and also offers advanced communication and collaborative working features. Nextcloud features its own application mechanism (see also [Nextcloud's app store](https://apps.nextcloud.com/)) for specific functionalities. -In the context of YunoHost, Nextcloud integrates with the SSO / user portal (YunoHost accounts are automatically connected to Nextcloud). +In the context of YunoHost, Nextcloud integrates with the SSO/User Portal (YunoHost accounts are automatically connected to Nextcloud). The `/.well-known` address will be automatically configured for CalDAV and CardDAV synchronization if no other service such as Baïkal is already using it. + +The Yunohost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. \ No newline at end of file diff --git a/doc/DESCRIPTION_fr.md b/doc/DESCRIPTION_fr.md index b9229dc0..4300e3f4 100644 --- a/doc/DESCRIPTION_fr.md +++ b/doc/DESCRIPTION_fr.md @@ -1,5 +1,7 @@ Nextcloud permet de rendre accessible et de synchroniser ses données, fichiers, contacts, agendas entre différents appareils (ordinateurs ou mobiles), ou de les partager avec d'autres personnes (avec ou sans comptes), et propose également des fonctionnalités avancées de communication et de travail collaboratif. Nextcloud dispose de son propre mécanisme d'applications (voir aussi [le store d'apps de Nextcloud](https://apps.nextcloud.com/)) pour disposer des fonctionnalités spécifiques. -Dans le cadre de YunoHost, Nextcloud s'intègre avec le SSO / portail utilisateur (les comptes YunoHost sont automatiquements connectés à Nextcloud). +Dans le cadre de YunoHost, Nextcloud s'intègre avec le SSO/portail utilisateur (les comptes YunoHost sont automatiquements connectés à Nextcloud). L'adresse `/.well-known` sera automatiquement configuré pour la synchronisation CalDAV et CardDAV si aucun autre service tel que Baïkal ne l'utilise déjà. + +Le catalogue YunoHost dispose de deux suites bureautiques collaboratives, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) et [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), qui peuvent être intégrées à Nextcloud. From 2a296b79fe2fdadfc5041f8c5b57529a1eb45fa4 Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Mon, 4 Nov 2024 13:58:06 +0100 Subject: [PATCH 25/74] Auto-update READMEs --- README.md | 3 ++- README_es.md | 3 ++- README_eu.md | 3 ++- README_fr.md | 4 +++- README_gl.md | 3 ++- README_id.md | 3 ++- README_nl.md | 3 ++- README_ru.md | 3 ++- README_zh_Hans.md | 3 ++- 9 files changed, 19 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 079d63d6..bc402ccc 100644 --- a/README.md +++ b/README.md @@ -18,10 +18,11 @@ It shall NOT be edited by hand. Nextcloud lets you access and synchronize data, files, contacts and calendars between different devices (PCs or mobiles), or share them with other people (with or without accounts), and also offers advanced communication and collaborative working features. Nextcloud features its own application mechanism (see also [Nextcloud's app store](https://apps.nextcloud.com/)) for specific functionalities. -In the context of YunoHost, Nextcloud integrates with the SSO / user portal (YunoHost accounts are automatically connected to Nextcloud). +In the context of YunoHost, Nextcloud integrates with the SSO/User Portal (YunoHost accounts are automatically connected to Nextcloud). The `/.well-known` address will be automatically configured for CalDAV and CardDAV synchronization if no other service such as Baïkal is already using it. +The Yunohost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. **Shipped version:** 29.0.8~ynh1 diff --git a/README_es.md b/README_es.md index 51e82f2c..9318cc2b 100644 --- a/README_es.md +++ b/README_es.md @@ -18,10 +18,11 @@ No se debe editar a mano. Nextcloud lets you access and synchronize data, files, contacts and calendars between different devices (PCs or mobiles), or share them with other people (with or without accounts), and also offers advanced communication and collaborative working features. Nextcloud features its own application mechanism (see also [Nextcloud's app store](https://apps.nextcloud.com/)) for specific functionalities. -In the context of YunoHost, Nextcloud integrates with the SSO / user portal (YunoHost accounts are automatically connected to Nextcloud). +In the context of YunoHost, Nextcloud integrates with the SSO/User Portal (YunoHost accounts are automatically connected to Nextcloud). The `/.well-known` address will be automatically configured for CalDAV and CardDAV synchronization if no other service such as Baïkal is already using it. +The Yunohost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. **Versión actual:** 29.0.8~ynh1 diff --git a/README_eu.md b/README_eu.md index c54ea437..75e33e05 100644 --- a/README_eu.md +++ b/README_eu.md @@ -18,10 +18,11 @@ EZ editatu eskuz. Nextcloud lets you access and synchronize data, files, contacts and calendars between different devices (PCs or mobiles), or share them with other people (with or without accounts), and also offers advanced communication and collaborative working features. Nextcloud features its own application mechanism (see also [Nextcloud's app store](https://apps.nextcloud.com/)) for specific functionalities. -In the context of YunoHost, Nextcloud integrates with the SSO / user portal (YunoHost accounts are automatically connected to Nextcloud). +In the context of YunoHost, Nextcloud integrates with the SSO/User Portal (YunoHost accounts are automatically connected to Nextcloud). The `/.well-known` address will be automatically configured for CalDAV and CardDAV synchronization if no other service such as Baïkal is already using it. +The Yunohost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. **Paketatutako bertsioa:** 29.0.8~ynh1 diff --git a/README_fr.md b/README_fr.md index 9c3a02aa..0f754fee 100644 --- a/README_fr.md +++ b/README_fr.md @@ -18,10 +18,12 @@ Il NE doit PAS être modifié à la main. Nextcloud permet de rendre accessible et de synchroniser ses données, fichiers, contacts, agendas entre différents appareils (ordinateurs ou mobiles), ou de les partager avec d'autres personnes (avec ou sans comptes), et propose également des fonctionnalités avancées de communication et de travail collaboratif. Nextcloud dispose de son propre mécanisme d'applications (voir aussi [le store d'apps de Nextcloud](https://apps.nextcloud.com/)) pour disposer des fonctionnalités spécifiques. -Dans le cadre de YunoHost, Nextcloud s'intègre avec le SSO / portail utilisateur (les comptes YunoHost sont automatiquements connectés à Nextcloud). +Dans le cadre de YunoHost, Nextcloud s'intègre avec le SSO/portail utilisateur (les comptes YunoHost sont automatiquements connectés à Nextcloud). L'adresse `/.well-known` sera automatiquement configuré pour la synchronisation CalDAV et CardDAV si aucun autre service tel que Baïkal ne l'utilise déjà. +Le catalogue YunoHost dispose de deux suites bureautiques collaboratives, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) et [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), qui peuvent être intégrées à Nextcloud. + **Version incluse :** 29.0.8~ynh1 diff --git a/README_gl.md b/README_gl.md index 3f58552e..34ebbd96 100644 --- a/README_gl.md +++ b/README_gl.md @@ -18,10 +18,11 @@ NON debe editarse manualmente. Nextcloud lets you access and synchronize data, files, contacts and calendars between different devices (PCs or mobiles), or share them with other people (with or without accounts), and also offers advanced communication and collaborative working features. Nextcloud features its own application mechanism (see also [Nextcloud's app store](https://apps.nextcloud.com/)) for specific functionalities. -In the context of YunoHost, Nextcloud integrates with the SSO / user portal (YunoHost accounts are automatically connected to Nextcloud). +In the context of YunoHost, Nextcloud integrates with the SSO/User Portal (YunoHost accounts are automatically connected to Nextcloud). The `/.well-known` address will be automatically configured for CalDAV and CardDAV synchronization if no other service such as Baïkal is already using it. +The Yunohost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. **Versión proporcionada:** 29.0.8~ynh1 diff --git a/README_id.md b/README_id.md index ee5cee4b..c46f5fe2 100644 --- a/README_id.md +++ b/README_id.md @@ -18,10 +18,11 @@ Ini TIDAK boleh diedit dengan tangan. Nextcloud lets you access and synchronize data, files, contacts and calendars between different devices (PCs or mobiles), or share them with other people (with or without accounts), and also offers advanced communication and collaborative working features. Nextcloud features its own application mechanism (see also [Nextcloud's app store](https://apps.nextcloud.com/)) for specific functionalities. -In the context of YunoHost, Nextcloud integrates with the SSO / user portal (YunoHost accounts are automatically connected to Nextcloud). +In the context of YunoHost, Nextcloud integrates with the SSO/User Portal (YunoHost accounts are automatically connected to Nextcloud). The `/.well-known` address will be automatically configured for CalDAV and CardDAV synchronization if no other service such as Baïkal is already using it. +The Yunohost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. **Versi terkirim:** 29.0.8~ynh1 diff --git a/README_nl.md b/README_nl.md index 18d16fbc..de8dc8d6 100644 --- a/README_nl.md +++ b/README_nl.md @@ -18,10 +18,11 @@ Hij mag NIET handmatig aangepast worden. Nextcloud lets you access and synchronize data, files, contacts and calendars between different devices (PCs or mobiles), or share them with other people (with or without accounts), and also offers advanced communication and collaborative working features. Nextcloud features its own application mechanism (see also [Nextcloud's app store](https://apps.nextcloud.com/)) for specific functionalities. -In the context of YunoHost, Nextcloud integrates with the SSO / user portal (YunoHost accounts are automatically connected to Nextcloud). +In the context of YunoHost, Nextcloud integrates with the SSO/User Portal (YunoHost accounts are automatically connected to Nextcloud). The `/.well-known` address will be automatically configured for CalDAV and CardDAV synchronization if no other service such as Baïkal is already using it. +The Yunohost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. **Geleverde versie:** 29.0.8~ynh1 diff --git a/README_ru.md b/README_ru.md index 587b92aa..6593d6c9 100644 --- a/README_ru.md +++ b/README_ru.md @@ -18,10 +18,11 @@ Nextcloud lets you access and synchronize data, files, contacts and calendars between different devices (PCs or mobiles), or share them with other people (with or without accounts), and also offers advanced communication and collaborative working features. Nextcloud features its own application mechanism (see also [Nextcloud's app store](https://apps.nextcloud.com/)) for specific functionalities. -In the context of YunoHost, Nextcloud integrates with the SSO / user portal (YunoHost accounts are automatically connected to Nextcloud). +In the context of YunoHost, Nextcloud integrates with the SSO/User Portal (YunoHost accounts are automatically connected to Nextcloud). The `/.well-known` address will be automatically configured for CalDAV and CardDAV synchronization if no other service such as Baïkal is already using it. +The Yunohost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. **Поставляемая версия:** 29.0.8~ynh1 diff --git a/README_zh_Hans.md b/README_zh_Hans.md index 2e29df22..4c5759bf 100644 --- a/README_zh_Hans.md +++ b/README_zh_Hans.md @@ -18,10 +18,11 @@ Nextcloud lets you access and synchronize data, files, contacts and calendars between different devices (PCs or mobiles), or share them with other people (with or without accounts), and also offers advanced communication and collaborative working features. Nextcloud features its own application mechanism (see also [Nextcloud's app store](https://apps.nextcloud.com/)) for specific functionalities. -In the context of YunoHost, Nextcloud integrates with the SSO / user portal (YunoHost accounts are automatically connected to Nextcloud). +In the context of YunoHost, Nextcloud integrates with the SSO/User Portal (YunoHost accounts are automatically connected to Nextcloud). The `/.well-known` address will be automatically configured for CalDAV and CardDAV synchronization if no other service such as Baïkal is already using it. +The Yunohost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. **分发版本:** 29.0.8~ynh1 From f235e0dc26fa3789100108b49426e0837139a41f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Mon, 4 Nov 2024 13:58:21 +0100 Subject: [PATCH 26/74] Update DESCRIPTION.md --- doc/DESCRIPTION.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/DESCRIPTION.md b/doc/DESCRIPTION.md index 9565b929..4c681db5 100644 --- a/doc/DESCRIPTION.md +++ b/doc/DESCRIPTION.md @@ -4,4 +4,4 @@ In the context of YunoHost, Nextcloud integrates with the SSO/User Portal (YunoH The `/.well-known` address will be automatically configured for CalDAV and CardDAV synchronization if no other service such as Baïkal is already using it. -The Yunohost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. \ No newline at end of file +The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. \ No newline at end of file From b48322e45024ee9b681f706051938c0d8784b303 Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Mon, 4 Nov 2024 13:58:38 +0100 Subject: [PATCH 27/74] Auto-update READMEs --- README.md | 2 +- README_es.md | 2 +- README_eu.md | 2 +- README_gl.md | 2 +- README_id.md | 2 +- README_nl.md | 2 +- README_ru.md | 2 +- README_zh_Hans.md | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index bc402ccc..d608f468 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ In the context of YunoHost, Nextcloud integrates with the SSO/User Portal (YunoH The `/.well-known` address will be automatically configured for CalDAV and CardDAV synchronization if no other service such as Baïkal is already using it. -The Yunohost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. +The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. **Shipped version:** 29.0.8~ynh1 diff --git a/README_es.md b/README_es.md index 9318cc2b..2cd59a4e 100644 --- a/README_es.md +++ b/README_es.md @@ -22,7 +22,7 @@ In the context of YunoHost, Nextcloud integrates with the SSO/User Portal (YunoH The `/.well-known` address will be automatically configured for CalDAV and CardDAV synchronization if no other service such as Baïkal is already using it. -The Yunohost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. +The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. **Versión actual:** 29.0.8~ynh1 diff --git a/README_eu.md b/README_eu.md index 75e33e05..4f8f9c6e 100644 --- a/README_eu.md +++ b/README_eu.md @@ -22,7 +22,7 @@ In the context of YunoHost, Nextcloud integrates with the SSO/User Portal (YunoH The `/.well-known` address will be automatically configured for CalDAV and CardDAV synchronization if no other service such as Baïkal is already using it. -The Yunohost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. +The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. **Paketatutako bertsioa:** 29.0.8~ynh1 diff --git a/README_gl.md b/README_gl.md index 34ebbd96..ab48ea3f 100644 --- a/README_gl.md +++ b/README_gl.md @@ -22,7 +22,7 @@ In the context of YunoHost, Nextcloud integrates with the SSO/User Portal (YunoH The `/.well-known` address will be automatically configured for CalDAV and CardDAV synchronization if no other service such as Baïkal is already using it. -The Yunohost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. +The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. **Versión proporcionada:** 29.0.8~ynh1 diff --git a/README_id.md b/README_id.md index c46f5fe2..f06ecd5c 100644 --- a/README_id.md +++ b/README_id.md @@ -22,7 +22,7 @@ In the context of YunoHost, Nextcloud integrates with the SSO/User Portal (YunoH The `/.well-known` address will be automatically configured for CalDAV and CardDAV synchronization if no other service such as Baïkal is already using it. -The Yunohost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. +The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. **Versi terkirim:** 29.0.8~ynh1 diff --git a/README_nl.md b/README_nl.md index de8dc8d6..dace8128 100644 --- a/README_nl.md +++ b/README_nl.md @@ -22,7 +22,7 @@ In the context of YunoHost, Nextcloud integrates with the SSO/User Portal (YunoH The `/.well-known` address will be automatically configured for CalDAV and CardDAV synchronization if no other service such as Baïkal is already using it. -The Yunohost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. +The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. **Geleverde versie:** 29.0.8~ynh1 diff --git a/README_ru.md b/README_ru.md index 6593d6c9..f0d9f773 100644 --- a/README_ru.md +++ b/README_ru.md @@ -22,7 +22,7 @@ In the context of YunoHost, Nextcloud integrates with the SSO/User Portal (YunoH The `/.well-known` address will be automatically configured for CalDAV and CardDAV synchronization if no other service such as Baïkal is already using it. -The Yunohost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. +The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. **Поставляемая версия:** 29.0.8~ynh1 diff --git a/README_zh_Hans.md b/README_zh_Hans.md index 4c5759bf..17ecba4e 100644 --- a/README_zh_Hans.md +++ b/README_zh_Hans.md @@ -22,7 +22,7 @@ In the context of YunoHost, Nextcloud integrates with the SSO/User Portal (YunoH The `/.well-known` address will be automatically configured for CalDAV and CardDAV synchronization if no other service such as Baïkal is already using it. -The Yunohost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. +The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. **分发版本:** 29.0.8~ynh1 From 6fdae3408f3d801f085eb1e6c17a2fdffd346875 Mon Sep 17 00:00:00 2001 From: eric_G <46165813+ericgaspar@users.noreply.github.com> Date: Mon, 4 Nov 2024 18:01:57 +0100 Subject: [PATCH 28/74] cleaning options (#744) --- manifest.toml | 16 ---------------- scripts/install | 11 ++++++++++- 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/manifest.toml b/manifest.toml index fa7717ce..0d380960 100644 --- a/manifest.toml +++ b/manifest.toml @@ -54,22 +54,6 @@ ram.runtime = "512M" type = "boolean" default = false - [install.system_addressbook_exposed] - ask.en = "Enable address book" - ask.fr = "Activer le carnet d’adresses" - type = "boolean" - default = true - help.en = "Should there be a system address book listing all users, accessible by all users?" - help.fr = "Devrait-il y avoir un carnet d’adresses système répertoriant tous les utilisateurs, accessible par tous les utilisateurs ?" - - [install.enable_notify_push] - ask.en = "Enable Notify Push" - ask.fr = "Activer la Notification Push" - type = "boolean" - default = false - help.en = "Notify Push is a mechanism allowing more instantaneous notifications and reduce server load. (However, it is still a bit new)" - help.fr = "Notify Push est un mécanisme qui permet d'avoir des notifications plus rapides et de réduire la charge du serveur. (Cependant, cette fonctionnalité reste relativement nouvelle)" - [resources] [resources.sources] diff --git a/scripts/install b/scripts/install index 26020d18..8af39aee 100755 --- a/scripts/install +++ b/scripts/install @@ -4,10 +4,19 @@ source _common.sh source /usr/share/yunohost/helpers source _ynh_mysql_connect_as.sh -phpflags="--define apc.enable_cli=1" +#================================================= +# INITIALIZE AND STORE SETTINGS +#================================================= +phpflags="--define apc.enable_cli=1" ynh_app_setting_set --app=$app --key=phpflags --value="$phpflags" +enable_notify_push="0" +ynh_app_setting_set --app=$app --key=enable_notify_push --value=0 + +system_addressbook_exposed="0" +ynh_app_setting_set --app=$app --key=system_addressbook_exposed --value=0 + #================================================= # CREATE A MYSQL DATABASE #================================================= From 6adab0f22dd085aa1945aae9772b31418c02e353 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Mon, 4 Nov 2024 22:07:19 +0100 Subject: [PATCH 29/74] Update remove --- scripts/remove | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/scripts/remove b/scripts/remove index 20a29598..93a0e5f7 100755 --- a/scripts/remove +++ b/scripts/remove @@ -22,10 +22,12 @@ ynh_remove_logrotate ynh_remove_fail2ban_config # Remove notify push -ynh_remove_systemd_config --service="${app}-notify-push" -systemctl disable --now --quiet ${app}-notify-push-watcher.path -ynh_secure_remove --file="/etc/systemd/system/${app}-notify-push-watcher.path" -ynh_remove_systemd_config --service="${app}-notify-push-watcher" +if [ $enable_notify_push -eq 1 ]; then + ynh_remove_systemd_config --service="${app}-notify-push" + systemctl disable --now --quiet ${app}-notify-push-watcher.path + ynh_secure_remove --file="/etc/systemd/system/${app}-notify-push-watcher.path" + ynh_remove_systemd_config --service="${app}-notify-push-watcher" +fi # Remove a cron file # TODO: Ensure that cron job is not running (How !?) From f8300384b7308a0f04f6960dd63cbba0ed62000c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Tue, 5 Nov 2024 15:32:14 +0100 Subject: [PATCH 30/74] Update tests.toml --- tests.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests.toml b/tests.toml index edbf2ab4..57ee4846 100644 --- a/tests.toml +++ b/tests.toml @@ -9,8 +9,8 @@ test_format = 1.0 # ------------------------------- #test_upgrade_from.c5cf91ad.name = "Upgrade from 25.0.2" - test_upgrade_from.caf917f3.name = "Upgrade from 26.0.2" - test_upgrade_from.9c6d1eea.name = "Upgrade from 27.1.4" + #test_upgrade_from.caf917f3.name = "Upgrade from 26.0.2" + #test_upgrade_from.9c6d1eea.name = "Upgrade from 27.1.4" #test_upgrade_from.e9f82ab7.name = "Upgrade from 28.0.6" #test_upgrade_from.e9f82ab7.args.system_addressbook_exposed = "yes" From 0b374b1151851b606bbb8c5afd56ebbb2530eec5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Wed, 6 Nov 2024 09:11:42 +0100 Subject: [PATCH 31/74] Update tests.toml --- tests.toml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests.toml b/tests.toml index 57ee4846..bd538ce0 100644 --- a/tests.toml +++ b/tests.toml @@ -8,11 +8,11 @@ test_format = 1.0 # Commits to test upgrade from # ------------------------------- - #test_upgrade_from.c5cf91ad.name = "Upgrade from 25.0.2" - #test_upgrade_from.caf917f3.name = "Upgrade from 26.0.2" - #test_upgrade_from.9c6d1eea.name = "Upgrade from 27.1.4" - #test_upgrade_from.e9f82ab7.name = "Upgrade from 28.0.6" - #test_upgrade_from.e9f82ab7.args.system_addressbook_exposed = "yes" + test_upgrade_from.c5cf91ad.name = "Upgrade from 25.0.2" + test_upgrade_from.caf917f3.name = "Upgrade from 26.0.2" + test_upgrade_from.9c6d1eea.name = "Upgrade from 27.1.4" + test_upgrade_from.e9f82ab7.name = "Upgrade from 28.0.6" + test_upgrade_from.e9f82ab7.args.system_addressbook_exposed = "yes" [default.curl_tests] #home.path = "/" From 47fe09a5c2bb0cd8b051b7ffc7df185368b7fc4b Mon Sep 17 00:00:00 2001 From: eric_G <46165813+ericgaspar@users.noreply.github.com> Date: Thu, 7 Nov 2024 10:18:51 +0100 Subject: [PATCH 32/74] 29.0.9 (#747) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Testing (#735) * Update ADMIN.md (#734) J'ai sorti High Performance Backend, qui était dans la section Onlyoffice, alors que c'est indépendant. * Add experimental curl tests * 29.0.8 * Auto-update READMEs * fix linter * Update remove * Update tests.toml * Add fr translation * remove duplicate extension "js" (#742) * Update config_panel.toml * Update manifest.toml * fix translations * Update config_panel.toml * Update config_panel.toml * Update manifest.toml * Update manifest.toml * Update manifest.toml * Update manifest.toml * Update install * cleaning * cleaning * add link to the help menu * remove onlyoffice doc (#743) * cleaning * Auto-update READMEs * Update DESCRIPTION.md * Auto-update READMEs * cleaning options (#744) * Update remove * Update tests.toml * Update tests.toml --------- Co-authored-by: tomdereub Co-authored-by: Alexandre Aubin Co-authored-by: yunohost-bot * Update manifest.toml * Auto-update READMEs --------- Co-authored-by: tomdereub Co-authored-by: Alexandre Aubin Co-authored-by: yunohost-bot --- README.md | 2 +- README_es.md | 2 +- README_eu.md | 2 +- README_fr.md | 2 +- README_gl.md | 2 +- README_id.md | 2 +- README_nl.md | 2 +- README_ru.md | 2 +- README_zh_Hans.md | 2 +- manifest.toml | 6 +++--- 10 files changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index d608f468..4a80eb97 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Shipped version:** 29.0.8~ynh1 +**Shipped version:** 29.0.9~ynh1 **Demo:** diff --git a/README_es.md b/README_es.md index 2cd59a4e..7f5d29a1 100644 --- a/README_es.md +++ b/README_es.md @@ -24,7 +24,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Versión actual:** 29.0.8~ynh1 +**Versión actual:** 29.0.9~ynh1 **Demo:** diff --git a/README_eu.md b/README_eu.md index 4f8f9c6e..952bf791 100644 --- a/README_eu.md +++ b/README_eu.md @@ -24,7 +24,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Paketatutako bertsioa:** 29.0.8~ynh1 +**Paketatutako bertsioa:** 29.0.9~ynh1 **Demoa:** diff --git a/README_fr.md b/README_fr.md index 0f754fee..962b45f2 100644 --- a/README_fr.md +++ b/README_fr.md @@ -25,7 +25,7 @@ L'adresse `/.well-known` sera automatiquement configuré pour la synchronisatio Le catalogue YunoHost dispose de deux suites bureautiques collaboratives, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) et [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), qui peuvent être intégrées à Nextcloud. -**Version incluse :** 29.0.8~ynh1 +**Version incluse :** 29.0.9~ynh1 **Démo :** diff --git a/README_gl.md b/README_gl.md index ab48ea3f..8aabca61 100644 --- a/README_gl.md +++ b/README_gl.md @@ -24,7 +24,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Versión proporcionada:** 29.0.8~ynh1 +**Versión proporcionada:** 29.0.9~ynh1 **Demo:** diff --git a/README_id.md b/README_id.md index f06ecd5c..6d62855e 100644 --- a/README_id.md +++ b/README_id.md @@ -24,7 +24,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Versi terkirim:** 29.0.8~ynh1 +**Versi terkirim:** 29.0.9~ynh1 **Demo:** diff --git a/README_nl.md b/README_nl.md index dace8128..28216f3d 100644 --- a/README_nl.md +++ b/README_nl.md @@ -24,7 +24,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Geleverde versie:** 29.0.8~ynh1 +**Geleverde versie:** 29.0.9~ynh1 **Demo:** diff --git a/README_ru.md b/README_ru.md index f0d9f773..7a76178e 100644 --- a/README_ru.md +++ b/README_ru.md @@ -24,7 +24,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Поставляемая версия:** 29.0.8~ynh1 +**Поставляемая версия:** 29.0.9~ynh1 **Демо-версия:** diff --git a/README_zh_Hans.md b/README_zh_Hans.md index 17ecba4e..6b1dc244 100644 --- a/README_zh_Hans.md +++ b/README_zh_Hans.md @@ -24,7 +24,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**分发版本:** 29.0.8~ynh1 +**分发版本:** 29.0.9~ynh1 **演示:** diff --git a/manifest.toml b/manifest.toml index 0d380960..cefe1995 100644 --- a/manifest.toml +++ b/manifest.toml @@ -5,7 +5,7 @@ name = "Nextcloud" description.en = "Online storage, file sharing platform and various other applications" description.fr = "Stockage en ligne, plateforme de partage de fichiers et diverses autres applications" -version = "29.0.8~ynh1" +version = "29.0.9~ynh1" maintainers = ["kay0u"] @@ -59,8 +59,8 @@ ram.runtime = "512M" [resources.sources] [resources.sources.main] - url = 'https://download.nextcloud.com/server/releases/nextcloud-29.0.8.tar.bz2' - sha256 = '0ab54b517f76cd26f2bd38b6fe184b9fbaed32f734246c58c1acf83473c0a4b9' + url = 'https://download.nextcloud.com/server/releases/nextcloud-29.0.9.tar.bz2' + sha256 = 'f14e8f497c6d6b2b0da5cd0ad116f0c99f720c4eb05e64432fbd86e09cfb4141' [resources.sources.28] url = 'https://download.nextcloud.com/server/releases/nextcloud-28.0.8.tar.bz2' From 8e9d4a16ceb4bbf4972749fce00004932c964eb9 Mon Sep 17 00:00:00 2001 From: grenagit <46225780+grenagit@users.noreply.github.com> Date: Mon, 11 Nov 2024 17:03:31 +0100 Subject: [PATCH 33/74] Update restore --- scripts/restore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/restore b/scripts/restore index 90c74d5a..6b9db07c 100755 --- a/scripts/restore +++ b/scripts/restore @@ -61,7 +61,7 @@ ynh_restore_file --origin_path="/etc/cron.d/$app" ynh_restore_file --origin_path="/var/log/$app" #================================================= -# BACKUP THE LOGROTATE CONFIGURATION +# RESTORE THE LOGROTATE CONFIGURATION #================================================= ynh_script_progression --message="Restoring the logrotate configuration..." --weight=1 From be0378ec16f0ee438ba6d1808b4428f978146ca8 Mon Sep 17 00:00:00 2001 From: eric_G <46165813+ericgaspar@users.noreply.github.com> Date: Sun, 17 Nov 2024 08:59:31 +0100 Subject: [PATCH 34/74] 30.0.2 (#729) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update manifest.toml * Auto-update READMEs * add pre upgrade warning for NC 29 * update to PHP8.3 * Auto-update READMEs * Update manifest.toml * Auto-update READMEs * Fix space splitting in phpflags on install (#690) * Auto-update READMEs * Update upgrade * Update manifest.toml * Auto-update READMEs * Fix phpflags (#691) * Fix upgrade: php version is 8.3 starting from 29.x ? (#692) * Update manifest.toml * Auto-update READMEs * Update tests.toml * [autopatch] Do not delete logs on app removal (#697) * [autopatch] Do not delete logs on app removal (#698) Co-authored-by: Yunohost-Bot <> * 29.0.3 * Auto-update READMEs * Update remove * Indent * Fix again upgrade ending with Nextcloud being in PHP 8.2 ? * Auto-update READMEs * Update nginx.conf * Update manifest.toml * Auto-update READMEs * Rework DESCRIPTION.md (#707) * Update DESCRIPTION_fr.md * Auto-update READMEs * Update DESCRIPTION.md * Auto-update READMEs * Update DESCRIPTION_fr.md * Auto-update READMEs --------- Co-authored-by: yunohost-bot * bump all old versions * oupsie * Auto-update READMEs * system_addressbook_exposed is a boolean * Auto-update READMEs * migrate system_addressbook_exposed to boolean, fix upgrade test * another fix for system_addressbook_exposed, update the dav conf accordingly * zblerg, do not modify system_addressbook_exposed config value in the upgrade script * add redis-server as deps * find files before chown them * chown the root folder too * fix find condition * find ... chmod is not faster, at least avoid to chown -R the data_dir in the upgrade script * add a button in the config panel to run chown/chmod on data_dir * we can avoid this chmod too i guess? * only nextcloud is allowed to read the config file * zblerg, the config file doesn't exist before install * wait until nginx has actually remove the nextcloud conf during upgrade before checking the url_handled * create a function for that * fix change-url dav detection * only if domain has changed... * Update scripts/_common.sh * moar sleep * oups * minor typos * Update backup * minor typos * Fix removing ACL permissions on uninstall According to `man setfacl`, for the `--remove` option "[o]nly ACL entries without the perms field are accepted as parameters". * Fix: Add missing `file` argument to `setfacl` * Fix: Use absolute path for removing ACL permissions * Update manifest.toml * Auto-update READMEs * Add notify push option (#417) * add notify_push option * self-test notify_push * fix notify_app * new permission hpb, some fixes * fix the restore script * fix restore² * fix upgrade * fix socket path * Update doc/DISCLAIMER_fr.md * split nginx conf * use official helpers with modified args * Auto-update READMEs * update nginx conf, add new services * add tests * add arch var * tests: enable_notify_push is false by default * fix upgrade * final_path -> install_dir * fix socket nginx path * add notify_push nginx conf before, so the reload in ynh_add_nginx_config load it * fully functional version * readd a removed fix * run cron task after notify push setup * Auto-update READMEs * remove systemd files * add notify push in config panel * add cron again because to make notify push happy * fix indent * enable/disable the notify push path * fix path unit * exec only for nextcloud user * move sock file to /var/run * start notify-push after the watcher * ² * remove warning * cron can sometimes fail when the database is not fully initialized, retries the cron job several times and catch catch the error on failure * oupsie * Apply suggestions from code review Co-authored-by: eric_G <46165813+ericgaspar@users.noreply.github.com> --------- Co-authored-by: Éric Gaspar <46165813+ericgaspar@users.noreply.github.com> Co-authored-by: yunohost-bot * Remove ~duplicate pre-upgrade message (#723) * Fix notify_push after reboot/restart the service, create the folder /var/run/nextcloud via systemd * Update manifest.toml * Auto-update READMEs * Update backup * 29.0.7 * Auto-update READMEs * 30.0.0 * Auto-update READMEs * Update manifest.toml * Auto-update READMEs * Update tests.toml * Update manifest.toml * Update screenshot.png * cleaning * cleaning * Update tests.toml * Update manifest.toml * Auto-update READMEs * Auto-update READMEs * Update manifest.toml --------- Co-authored-by: yunohost-bot Co-authored-by: OniriCorpe Co-authored-by: lyyn <79758863+lyynd@users.noreply.github.com> Co-authored-by: tituspijean Co-authored-by: Alexandre Aubin <4533074+alexAubin@users.noreply.github.com> Co-authored-by: YunoHost Bot Co-authored-by: Alexandre Aubin Co-authored-by: Kayou Co-authored-by: Björn Richter <2268851+x3rAx@users.noreply.github.com> Co-authored-by: ^x3ro --- README.md | 2 +- README_es.md | 2 +- README_eu.md | 2 +- README_fr.md | 2 +- README_gl.md | 2 +- README_id.md | 2 +- README_nl.md | 2 +- README_ru.md | 2 +- README_zh_Hans.md | 2 +- config_panel.toml | 5 ++--- doc/screenshots/screenshot.png | Bin 79212 -> 303067 bytes manifest.toml | 11 +++++++---- scripts/backup | 7 +++++++ scripts/change_url | 5 ----- scripts/config | 1 - scripts/install | 1 - scripts/restore | 5 ----- scripts/upgrade | 3 --- tests.toml | 10 +++++----- 19 files changed, 30 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index 4a80eb97..a3362adb 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Shipped version:** 29.0.9~ynh1 +**Shipped version:** 30.0.2~ynh1 **Demo:** diff --git a/README_es.md b/README_es.md index 7f5d29a1..2ad07b4c 100644 --- a/README_es.md +++ b/README_es.md @@ -24,7 +24,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Versión actual:** 29.0.9~ynh1 +**Versión actual:** 30.0.2~ynh1 **Demo:** diff --git a/README_eu.md b/README_eu.md index 952bf791..3497e0f5 100644 --- a/README_eu.md +++ b/README_eu.md @@ -24,7 +24,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Paketatutako bertsioa:** 29.0.9~ynh1 +**Paketatutako bertsioa:** 30.0.2~ynh1 **Demoa:** diff --git a/README_fr.md b/README_fr.md index 962b45f2..961b66d7 100644 --- a/README_fr.md +++ b/README_fr.md @@ -25,7 +25,7 @@ L'adresse `/.well-known` sera automatiquement configuré pour la synchronisatio Le catalogue YunoHost dispose de deux suites bureautiques collaboratives, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) et [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), qui peuvent être intégrées à Nextcloud. -**Version incluse :** 29.0.9~ynh1 +**Version incluse :** 30.0.2~ynh1 **Démo :** diff --git a/README_gl.md b/README_gl.md index 8aabca61..3df812e9 100644 --- a/README_gl.md +++ b/README_gl.md @@ -24,7 +24,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Versión proporcionada:** 29.0.9~ynh1 +**Versión proporcionada:** 30.0.2~ynh1 **Demo:** diff --git a/README_id.md b/README_id.md index 6d62855e..1ab90c21 100644 --- a/README_id.md +++ b/README_id.md @@ -24,7 +24,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Versi terkirim:** 29.0.9~ynh1 +**Versi terkirim:** 30.0.2~ynh1 **Demo:** diff --git a/README_nl.md b/README_nl.md index 28216f3d..3b30af19 100644 --- a/README_nl.md +++ b/README_nl.md @@ -24,7 +24,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Geleverde versie:** 29.0.9~ynh1 +**Geleverde versie:** 30.0.2~ynh1 **Demo:** diff --git a/README_ru.md b/README_ru.md index 7a76178e..ad911990 100644 --- a/README_ru.md +++ b/README_ru.md @@ -24,7 +24,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Поставляемая версия:** 29.0.9~ynh1 +**Поставляемая версия:** 30.0.2~ynh1 **Демо-версия:** diff --git a/README_zh_Hans.md b/README_zh_Hans.md index 6b1dc244..66d266c6 100644 --- a/README_zh_Hans.md +++ b/README_zh_Hans.md @@ -24,7 +24,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**分发版本:** 29.0.9~ynh1 +**分发版本:** 30.0.2~ynh1 **演示:** diff --git a/config_panel.toml b/config_panel.toml index a22d2cb1..dfbf1c41 100644 --- a/config_panel.toml +++ b/config_panel.toml @@ -44,9 +44,8 @@ name.fr = "Configuration de Nextcloud" ask.en = "Enable Notify Push" ask.fr = "Activer la Notification Push" type = "boolean" - help.en = "Mechanism allowing more instantaneous notifications and reduce server load." - help.fr = "Mécanisme qui permet d'avoir des notifications plus rapides et de réduire la charge du serveur." - + help.en = "Notify Push is a mechanism allowing more instantaneous notifications and reduce server load." + help.fr = "Notify Push est un mécanisme qui permet d'avoir des notifications plus rapides et de réduire la charge du serveur." [main.php_fpm_config] name.en = "PHP-FPM configuration" diff --git a/doc/screenshots/screenshot.png b/doc/screenshots/screenshot.png index 1cce4ec675b6b27d7fbb03a87d6f2bddde50ba59..1e0e871764ecc5369c744bafac62149413189cba 100644 GIT binary patch literal 303067 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

UVB*fq{dnRe1YEJ} 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%0D4Gj=Z}%WtLC~`=M+U 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

`Bp@c}*NXq7rbquk@u=Lj;(ESLRq@JSb1O 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 diff --git a/manifest.toml b/manifest.toml index cefe1995..f5aaa418 100644 --- a/manifest.toml +++ b/manifest.toml @@ -5,7 +5,7 @@ name = "Nextcloud" description.en = "Online storage, file sharing platform and various other applications" description.fr = "Stockage en ligne, plateforme de partage de fichiers et diverses autres applications" -version = "29.0.9~ynh1" +version = "30.0.2~ynh1" maintainers = ["kay0u"] @@ -24,7 +24,6 @@ architectures = ["amd64", "arm64", "armhf"] multi_instance = true ldap = true - sso = true disk = "650M" @@ -59,8 +58,12 @@ ram.runtime = "512M" [resources.sources] [resources.sources.main] - url = 'https://download.nextcloud.com/server/releases/nextcloud-29.0.9.tar.bz2' - sha256 = 'f14e8f497c6d6b2b0da5cd0ad116f0c99f720c4eb05e64432fbd86e09cfb4141' + url = 'https://download.nextcloud.com/server/releases/nextcloud-30.0.2.tar.bz2' + sha256 = '929bb8045e96216fe22a65dcd66279e5bd7ba1abb29d99bf401d423b646a445f' + + [resources.sources.29] + url = 'https://download.nextcloud.com/server/releases/nextcloud-29.0.8.tar.bz2' + sha256 = '0ab54b517f76cd26f2bd38b6fe184b9fbaed32f734246c58c1acf83473c0a4b9' [resources.sources.28] url = 'https://download.nextcloud.com/server/releases/nextcloud-28.0.8.tar.bz2' diff --git a/scripts/backup b/scripts/backup index 96d5808b..1407a99c 100755 --- a/scripts/backup +++ b/scripts/backup @@ -21,6 +21,13 @@ ynh_backup --src_path="$install_dir" ynh_backup --src_path="$data_dir" --is_big +#================================================= +# BACKUP THE NGINX CONFIGURATION +#================================================= + +ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" +ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.d" + #================================================= # SYSTEM CONFIGURATION #================================================= diff --git a/scripts/change_url b/scripts/change_url index 15eaee94..ae966b1e 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -1,7 +1,5 @@ #!/bin/bash -#================================================= -# GENERIC STARTING #================================================= # IMPORT GENERIC HELPERS #================================================= @@ -79,7 +77,6 @@ then ynh_add_systemd_config --service="${app}-notify-push" count=0 - # cron can sometimes fail when the database is not fully initialized, hence it's retried several times, see https://github.com/YunoHost-Apps/nextcloud_ynh/pull/720 while ! ynh_exec_as "$app" php${phpversion} --define apc.enable_cli=1 $install_dir/cron.php && [[ $count -lt 30 ]] do sleep 1 @@ -95,8 +92,6 @@ then fi fi -#================================================= -# GENERIC FINALISATION #================================================= # RELOAD NGINX #================================================= diff --git a/scripts/config b/scripts/config index d9ae635b..d756fa9f 100644 --- a/scripts/config +++ b/scripts/config @@ -139,7 +139,6 @@ set__enable_notify_push() { ynh_add_systemd_config --service="${app}-notify-push" count=0 - # cron can sometimes fail when the database is not fully initialized, hence it's retried several times, see https://github.com/YunoHost-Apps/nextcloud_ynh/pull/720 while ! ynh_exec_as "$app" php${phpversion} --define apc.enable_cli=1 $install_dir/cron.php && [[ $count -lt 30 ]] do sleep 1 diff --git a/scripts/install b/scripts/install index 8af39aee..4229e7a8 100755 --- a/scripts/install +++ b/scripts/install @@ -306,7 +306,6 @@ ynh_add_fail2ban_config --logpath="/var/log/$app/nextcloud.log" --failregex="^.* if [ $enable_notify_push -eq 1 ] then count=0 - # cron can sometimes fail when the database is not fully initialized, hence it's retried several times, see https://github.com/YunoHost-Apps/nextcloud_ynh/pull/720 while ! ynh_exec_as "$app" php${phpversion} --define apc.enable_cli=1 $install_dir/cron.php && [[ $count -lt 30 ]] do sleep 1 diff --git a/scripts/restore b/scripts/restore index 6b9db07c..6a0bf604 100755 --- a/scripts/restore +++ b/scripts/restore @@ -4,8 +4,6 @@ source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers source ../settings/scripts/_ynh_mysql_connect_as.sh -#================================================= -# STANDARD RESTORATION STEPS #================================================= # RESTORE THE APP MAIN DIR #================================================= @@ -139,8 +137,6 @@ then systemctl enable --now "${app}-notify-push.service" --quiet fi -#================================================= -# GENERIC FINALIZATION #================================================= # RELOAD NGINX #================================================= @@ -160,7 +156,6 @@ exec_occ() { if [ $enable_notify_push -eq 1 ] then count=0 - # cron can sometimes fail when the database is not fully initialized, hence it's retried several times, see https://github.com/YunoHost-Apps/nextcloud_ynh/pull/720 while ! ynh_exec_as "$app" php${phpversion} --define apc.enable_cli=1 $install_dir/cron.php && [[ $count -lt 30 ]] do sleep 1 diff --git a/scripts/upgrade b/scripts/upgrade index ab9b0309..1871d924 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -40,8 +40,6 @@ then ynh_die --message="Upgrading from Nextcloud < 22.2 is not supported anymore. You should first upgrade to 22.2 using: yunohost app upgrade nextcloud -u https://github.com/YunoHost-Apps/nextcloud_ynh/tree/41f5f902e7c7cd3c30a6793020562ba98b9bf3e9" fi -#================================================= -# SPECIFIC UPGRADE #================================================= # MAKE SEQUENTIAL UPGRADES FROM EACH MAJOR # VERSION TO THE NEXT ONE @@ -441,7 +439,6 @@ ynh_add_fail2ban_config --logpath="/var/log/$app/nextcloud.log" --failregex="^.* if [ $enable_notify_push -eq 1 ] then count=0 - # cron can sometimes fail when the database is not fully initialized, hence it's retried several times, see https://github.com/YunoHost-Apps/nextcloud_ynh/pull/720 while ! ynh_exec_as "$app" php${phpversion} --define apc.enable_cli=1 $install_dir/cron.php && [[ $count -lt 30 ]] do sleep 1 diff --git a/tests.toml b/tests.toml index bd538ce0..3b5943a1 100644 --- a/tests.toml +++ b/tests.toml @@ -12,7 +12,7 @@ test_format = 1.0 test_upgrade_from.caf917f3.name = "Upgrade from 26.0.2" test_upgrade_from.9c6d1eea.name = "Upgrade from 27.1.4" test_upgrade_from.e9f82ab7.name = "Upgrade from 28.0.6" - test_upgrade_from.e9f82ab7.args.system_addressbook_exposed = "yes" + test_upgrade_from.541f5fde.name = "Upgrade from 29.0.8" [default.curl_tests] #home.path = "/" @@ -38,8 +38,8 @@ test_format = 1.0 caldav.logged_on_sso = true caldav.expect_content = "This is the WebDAV interface." -[notify_push_test] +#[notify_push_test] - args.enable_notify_push = "1" - test_upgrade_from.e9f82ab7.name = "Upgrade from 28.0.6" - test_upgrade_from.e9f82ab7.args.system_addressbook_exposed = "yes" +# args.enable_notify_push = "1" +# test_upgrade_from.e9f82ab7.name = "Upgrade from 28.0.6" +# test_upgrade_from.e9f82ab7.args.system_addressbook_exposed = "yes" From 2b41e99db9faf188e7202fedabd73ce1e24b9d30 Mon Sep 17 00:00:00 2001 From: Thatoo Date: Sun, 17 Nov 2024 12:47:12 +0100 Subject: [PATCH 35/74] [comit] Forward Email? --- config_panel.toml | 11 +++++++++++ scripts/config | 24 +++++++++++++++++++++++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/config_panel.toml b/config_panel.toml index dfbf1c41..1beca79e 100644 --- a/config_panel.toml +++ b/config_panel.toml @@ -47,6 +47,17 @@ name.fr = "Configuration de Nextcloud" help.en = "Notify Push is a mechanism allowing more instantaneous notifications and reduce server load." help.fr = "Notify Push est un mécanisme qui permet d'avoir des notifications plus rapides et de réduire la charge du serveur." + [main.forward_email] + name.en = "Forward Email?" + name.fr = "Emails de transfert?" + + [main.forward_email.enable_forward_email] + ask.en = "Set yunohost user's forward email instead of yunohost user's main email?" + ask.fr = "Utiliser les emails de transfert des utilisateurs de yunohost plutôt que les emails principaux ?" + type = "boolean" + help.en = "If all your users have set a forward email and aren't using yunohost emails, you may choose to set their forward email as their nextcloud email setting." + help.fr = "Si tous vos utilisateurs ont paramétré un email de transfert et n'utilise pas du tout les emails de leur compte yunohost, vous pouvez paramétrer nextcloud d'utiliser les emails de transfert." + [main.php_fpm_config] name.en = "PHP-FPM configuration" name.fr = "Configuration de PHP-FPM" diff --git a/scripts/config b/scripts/config index d756fa9f..1038e7af 100644 --- a/scripts/config +++ b/scripts/config @@ -47,6 +47,16 @@ get__system_addressbook_exposed() { echo $(exec_occ config:app:get dav system_addressbook_exposed) } +get__enable_forward_email() { + ldapEmail=$(exec_occ ldap:show-config | grep ldapEmailAttribute) + if [ $(echo $ldapEmail | grep -Po "maildrop") = "maildrop" ] + then + echo "1" + else + echo "0" + fi +} + get__fpm_footprint() { # Free footprint value for php-fpm # Check if current_fpm_footprint is an integer @@ -92,7 +102,6 @@ set__system_addressbook_exposed() { ynh_print_info "System addressbook is exposed: $system_addressbook_exposed" } - set__enable_notify_push() { if [ "$enable_notify_push" -eq "0" ]; then nginx_extra_conf_dir="/etc/nginx/conf.d/$domain.d/$app.d" @@ -156,6 +165,19 @@ set__enable_notify_push() { ynh_app_setting_set --app=$app --key=enable_notify_push --value="$enable_notify_push" } +set__enable_forward_email() { + if [ "$enable_forward_email" -eq "0" ]; then + exec_occ ldap:set-config "" ldapEmailAttribute "mail" + ynh_replace_string --match_string="\$this->updateEmail(\$ldapEntry\[\$attr\]\[1\]);" --replace_string="\$this->updateEmail(\$ldapEntry\[\$attr\]\[0\]);" --target_file="$install_dir/apps/user_ldap/lib/User/User.php" + ynh_store_file_checksum --file="$install_dir/apps/user_ldap/lib/User/User.php" + elif [ "$enable_forward_email" -eq "1" ]; then + exec_occ ldap:set-config "" ldapEmailAttribute "maildrop" + ynh_replace_string --match_string="\$this->updateEmail(\$ldapEntry\[\$attr\]\[0\]);" --replace_string="\$this->updateEmail(\$ldapEntry\[\$attr\]\[1\]);" --target_file="$install_dir/apps/user_ldap/lib/User/User.php" + ynh_store_file_checksum --file="$install_dir/apps/user_ldap/lib/User/User.php" + fi + ynh_app_setting_set --app=$app --key=enable_forward_email --value="$enable_forward_email" +} + set__fpm_footprint() { if [ "$fpm_footprint" != "specific" ] then From 383f3b706a3acb82335613fe8c3815867d7b5665 Mon Sep 17 00:00:00 2001 From: Thatoo Date: Sun, 17 Nov 2024 13:54:59 +0100 Subject: [PATCH 36/74] Update config_panel.toml Co-authored-by: eric_G <46165813+ericgaspar@users.noreply.github.com> --- config_panel.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config_panel.toml b/config_panel.toml index 1beca79e..1745278d 100644 --- a/config_panel.toml +++ b/config_panel.toml @@ -49,7 +49,7 @@ name.fr = "Configuration de Nextcloud" [main.forward_email] name.en = "Forward Email?" - name.fr = "Emails de transfert?" + name.fr = "E-mails de transfert?" [main.forward_email.enable_forward_email] ask.en = "Set yunohost user's forward email instead of yunohost user's main email?" From c7f704348e4e2e33a5a9edf432d5137ef20f567e Mon Sep 17 00:00:00 2001 From: Thatoo Date: Sun, 17 Nov 2024 13:55:12 +0100 Subject: [PATCH 37/74] Update config_panel.toml Co-authored-by: eric_G <46165813+ericgaspar@users.noreply.github.com> --- config_panel.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config_panel.toml b/config_panel.toml index 1745278d..b58d90e1 100644 --- a/config_panel.toml +++ b/config_panel.toml @@ -52,7 +52,7 @@ name.fr = "Configuration de Nextcloud" name.fr = "E-mails de transfert?" [main.forward_email.enable_forward_email] - ask.en = "Set yunohost user's forward email instead of yunohost user's main email?" + ask.en = "Set YunoHost user's forward email instead of YunoHost user's main email?" ask.fr = "Utiliser les emails de transfert des utilisateurs de yunohost plutôt que les emails principaux ?" type = "boolean" help.en = "If all your users have set a forward email and aren't using yunohost emails, you may choose to set their forward email as their nextcloud email setting." From 16b503064f7da91125f2123655497eee1fde9dd8 Mon Sep 17 00:00:00 2001 From: Thatoo Date: Sun, 17 Nov 2024 13:55:21 +0100 Subject: [PATCH 38/74] Update config_panel.toml Co-authored-by: eric_G <46165813+ericgaspar@users.noreply.github.com> --- config_panel.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config_panel.toml b/config_panel.toml index b58d90e1..9578acd4 100644 --- a/config_panel.toml +++ b/config_panel.toml @@ -53,7 +53,7 @@ name.fr = "Configuration de Nextcloud" [main.forward_email.enable_forward_email] ask.en = "Set YunoHost user's forward email instead of YunoHost user's main email?" - ask.fr = "Utiliser les emails de transfert des utilisateurs de yunohost plutôt que les emails principaux ?" + ask.fr = "Utiliser les e-mails de transfert des utilisateurs de YunoHost plutôt que les e-mails principaux ?" type = "boolean" help.en = "If all your users have set a forward email and aren't using yunohost emails, you may choose to set their forward email as their nextcloud email setting." help.fr = "Si tous vos utilisateurs ont paramétré un email de transfert et n'utilise pas du tout les emails de leur compte yunohost, vous pouvez paramétrer nextcloud d'utiliser les emails de transfert." From e9082239914cb7f30c048316fc8cea4b79567a2c Mon Sep 17 00:00:00 2001 From: Thatoo Date: Sun, 17 Nov 2024 13:55:30 +0100 Subject: [PATCH 39/74] Update config_panel.toml Co-authored-by: eric_G <46165813+ericgaspar@users.noreply.github.com> --- config_panel.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config_panel.toml b/config_panel.toml index 9578acd4..e76eafb5 100644 --- a/config_panel.toml +++ b/config_panel.toml @@ -55,7 +55,7 @@ name.fr = "Configuration de Nextcloud" ask.en = "Set YunoHost user's forward email instead of YunoHost user's main email?" ask.fr = "Utiliser les e-mails de transfert des utilisateurs de YunoHost plutôt que les e-mails principaux ?" type = "boolean" - help.en = "If all your users have set a forward email and aren't using yunohost emails, you may choose to set their forward email as their nextcloud email setting." + help.en = "If all your users have set a forward email and aren't using YunoHost emails, you may choose to set their forward email as their Nextcloud email setting." help.fr = "Si tous vos utilisateurs ont paramétré un email de transfert et n'utilise pas du tout les emails de leur compte yunohost, vous pouvez paramétrer nextcloud d'utiliser les emails de transfert." [main.php_fpm_config] From 9790ea9ab35df702b3a46ca072860311ce58ec17 Mon Sep 17 00:00:00 2001 From: Thatoo Date: Sun, 17 Nov 2024 13:55:38 +0100 Subject: [PATCH 40/74] Update config_panel.toml Co-authored-by: eric_G <46165813+ericgaspar@users.noreply.github.com> --- config_panel.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config_panel.toml b/config_panel.toml index e76eafb5..90a43dd8 100644 --- a/config_panel.toml +++ b/config_panel.toml @@ -56,7 +56,7 @@ name.fr = "Configuration de Nextcloud" ask.fr = "Utiliser les e-mails de transfert des utilisateurs de YunoHost plutôt que les e-mails principaux ?" type = "boolean" help.en = "If all your users have set a forward email and aren't using YunoHost emails, you may choose to set their forward email as their Nextcloud email setting." - help.fr = "Si tous vos utilisateurs ont paramétré un email de transfert et n'utilise pas du tout les emails de leur compte yunohost, vous pouvez paramétrer nextcloud d'utiliser les emails de transfert." + help.fr = "Si tous vos utilisateurs ont paramétré un e-mail de transfert et n'utilise pas du tout les e-mails de leur compte YunoHost, vous pouvez paramétrer Nextcloud d'utiliser les e-mails de transfert." [main.php_fpm_config] name.en = "PHP-FPM configuration" From 866fb3c53e835c523476c4d3e6aa9436e9a52054 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Wed, 27 Nov 2024 15:22:51 +0100 Subject: [PATCH 41/74] Update tests.toml --- tests.toml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests.toml b/tests.toml index 3b5943a1..2b893c03 100644 --- a/tests.toml +++ b/tests.toml @@ -8,10 +8,10 @@ test_format = 1.0 # Commits to test upgrade from # ------------------------------- - test_upgrade_from.c5cf91ad.name = "Upgrade from 25.0.2" - test_upgrade_from.caf917f3.name = "Upgrade from 26.0.2" - test_upgrade_from.9c6d1eea.name = "Upgrade from 27.1.4" - test_upgrade_from.e9f82ab7.name = "Upgrade from 28.0.6" + #test_upgrade_from.c5cf91ad.name = "Upgrade from 25.0.2" + #test_upgrade_from.caf917f3.name = "Upgrade from 26.0.2" + #test_upgrade_from.9c6d1eea.name = "Upgrade from 27.1.4" + #test_upgrade_from.e9f82ab7.name = "Upgrade from 28.0.6" test_upgrade_from.541f5fde.name = "Upgrade from 29.0.8" [default.curl_tests] From cbc06de0f155726f499b94c6d4952480a1e1afd9 Mon Sep 17 00:00:00 2001 From: Thatoo Date: Mon, 2 Dec 2024 00:08:08 +0100 Subject: [PATCH 42/74] add name nextcloud LDAP config to get__enable_forward_email --- scripts/config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/config b/scripts/config index 1038e7af..0eb4d671 100644 --- a/scripts/config +++ b/scripts/config @@ -48,7 +48,7 @@ get__system_addressbook_exposed() { } get__enable_forward_email() { - ldapEmail=$(exec_occ ldap:show-config | grep ldapEmailAttribute) + ldapEmail=$(exec_occ ldap:show-config "" | grep ldapEmailAttribute) if [ $(echo $ldapEmail | grep -Po "maildrop") = "maildrop" ] then echo "1" From 9e5bcc19d8c9aec2ba44f5c9e1b5b11ee8d55e87 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin <4533074+alexAubin@users.noreply.github.com> Date: Tue, 3 Dec 2024 21:55:40 +0100 Subject: [PATCH 43/74] Add quote in if [ $(cmd) = value ] because i'm paranoid about [ syntax ... --- scripts/config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/config b/scripts/config index 0eb4d671..ed7b10f5 100644 --- a/scripts/config +++ b/scripts/config @@ -49,7 +49,7 @@ get__system_addressbook_exposed() { get__enable_forward_email() { ldapEmail=$(exec_occ ldap:show-config "" | grep ldapEmailAttribute) - if [ $(echo $ldapEmail | grep -Po "maildrop") = "maildrop" ] + if [ "$(echo $ldapEmail | grep -Po "maildrop")" = "maildrop" ] then echo "1" else From b9354d0386001c23269ac295c01334b44c0c9ad9 Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Tue, 3 Dec 2024 22:03:04 +0100 Subject: [PATCH 44/74] Auto-update READMEs --- ALL_README.md | 1 + README.md | 4 +++- README_es.md | 4 +++- README_eu.md | 4 +++- README_fr.md | 4 +++- README_gl.md | 4 +++- README_id.md | 4 +++- README_nl.md | 4 +++- README_pl.md | 58 +++++++++++++++++++++++++++++++++++++++++++++++ README_ru.md | 4 +++- README_zh_Hans.md | 4 +++- 11 files changed, 86 insertions(+), 9 deletions(-) create mode 100644 README_pl.md diff --git a/ALL_README.md b/ALL_README.md index df3708bc..c93d6202 100644 --- a/ALL_README.md +++ b/ALL_README.md @@ -7,5 +7,6 @@ - [Le o README en galego](README_gl.md) - [Baca README dalam bahasa bahasa Indonesia](README_id.md) - [Lees de README in het Nederlands](README_nl.md) +- [Przeczytaj README w języku polski](README_pl.md) - [Прочитать README на русский](README_ru.md) - [阅读中文(简体)的 README](README_zh_Hans.md) diff --git a/README.md b/README.md index a3362adb..f645d760 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,9 @@ It shall NOT be edited by hand. # Nextcloud for YunoHost -[![Integration level](https://dash.yunohost.org/integration/nextcloud.svg)](https://ci-apps.yunohost.org/ci/apps/nextcloud/) ![Working status](https://ci-apps.yunohost.org/ci/badges/nextcloud.status.svg) ![Maintenance status](https://ci-apps.yunohost.org/ci/badges/nextcloud.maintain.svg) +[![Integration level](https://apps.yunohost.org/badge/integration/nextcloud)](https://ci-apps.yunohost.org/ci/apps/nextcloud/) +![Working status](https://apps.yunohost.org/badge/state/nextcloud) +![Maintenance status](https://apps.yunohost.org/badge/maintained/nextcloud) [![Install Nextcloud with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=nextcloud) diff --git a/README_es.md b/README_es.md index 2ad07b4c..7dd382f9 100644 --- a/README_es.md +++ b/README_es.md @@ -5,7 +5,9 @@ No se debe editar a mano. # Nextcloud para Yunohost -[![Nivel de integración](https://dash.yunohost.org/integration/nextcloud.svg)](https://ci-apps.yunohost.org/ci/apps/nextcloud/) ![Estado funcional](https://ci-apps.yunohost.org/ci/badges/nextcloud.status.svg) ![Estado En Mantención](https://ci-apps.yunohost.org/ci/badges/nextcloud.maintain.svg) +[![Nivel de integración](https://apps.yunohost.org/badge/integration/nextcloud)](https://ci-apps.yunohost.org/ci/apps/nextcloud/) +![Estado funcional](https://apps.yunohost.org/badge/state/nextcloud) +![Estado En Mantención](https://apps.yunohost.org/badge/maintained/nextcloud) [![Instalar Nextcloud con Yunhost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=nextcloud) diff --git a/README_eu.md b/README_eu.md index 3497e0f5..dfce54f4 100644 --- a/README_eu.md +++ b/README_eu.md @@ -5,7 +5,9 @@ EZ editatu eskuz. # Nextcloud YunoHost-erako -[![Integrazio maila](https://dash.yunohost.org/integration/nextcloud.svg)](https://ci-apps.yunohost.org/ci/apps/nextcloud/) ![Funtzionamendu egoera](https://ci-apps.yunohost.org/ci/badges/nextcloud.status.svg) ![Mantentze egoera](https://ci-apps.yunohost.org/ci/badges/nextcloud.maintain.svg) +[![Integrazio maila](https://apps.yunohost.org/badge/integration/nextcloud)](https://ci-apps.yunohost.org/ci/apps/nextcloud/) +![Funtzionamendu egoera](https://apps.yunohost.org/badge/state/nextcloud) +![Mantentze egoera](https://apps.yunohost.org/badge/maintained/nextcloud) [![Instalatu Nextcloud YunoHost-ekin](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=nextcloud) diff --git a/README_fr.md b/README_fr.md index 961b66d7..d211d8c2 100644 --- a/README_fr.md +++ b/README_fr.md @@ -5,7 +5,9 @@ Il NE doit PAS être modifié à la main. # Nextcloud pour YunoHost -[![Niveau d’intégration](https://dash.yunohost.org/integration/nextcloud.svg)](https://ci-apps.yunohost.org/ci/apps/nextcloud/) ![Statut du fonctionnement](https://ci-apps.yunohost.org/ci/badges/nextcloud.status.svg) ![Statut de maintenance](https://ci-apps.yunohost.org/ci/badges/nextcloud.maintain.svg) +[![Niveau d’intégration](https://apps.yunohost.org/badge/integration/nextcloud)](https://ci-apps.yunohost.org/ci/apps/nextcloud/) +![Statut du fonctionnement](https://apps.yunohost.org/badge/state/nextcloud) +![Statut de maintenance](https://apps.yunohost.org/badge/maintained/nextcloud) [![Installer Nextcloud avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=nextcloud) diff --git a/README_gl.md b/README_gl.md index 3df812e9..6ac9c635 100644 --- a/README_gl.md +++ b/README_gl.md @@ -5,7 +5,9 @@ NON debe editarse manualmente. # Nextcloud para YunoHost -[![Nivel de integración](https://dash.yunohost.org/integration/nextcloud.svg)](https://ci-apps.yunohost.org/ci/apps/nextcloud/) ![Estado de funcionamento](https://ci-apps.yunohost.org/ci/badges/nextcloud.status.svg) ![Estado de mantemento](https://ci-apps.yunohost.org/ci/badges/nextcloud.maintain.svg) +[![Nivel de integración](https://apps.yunohost.org/badge/integration/nextcloud)](https://ci-apps.yunohost.org/ci/apps/nextcloud/) +![Estado de funcionamento](https://apps.yunohost.org/badge/state/nextcloud) +![Estado de mantemento](https://apps.yunohost.org/badge/maintained/nextcloud) [![Instalar Nextcloud con YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=nextcloud) diff --git a/README_id.md b/README_id.md index 1ab90c21..17f53464 100644 --- a/README_id.md +++ b/README_id.md @@ -5,7 +5,9 @@ Ini TIDAK boleh diedit dengan tangan. # Nextcloud untuk YunoHost -[![Tingkat integrasi](https://dash.yunohost.org/integration/nextcloud.svg)](https://ci-apps.yunohost.org/ci/apps/nextcloud/) ![Status kerja](https://ci-apps.yunohost.org/ci/badges/nextcloud.status.svg) ![Status pemeliharaan](https://ci-apps.yunohost.org/ci/badges/nextcloud.maintain.svg) +[![Tingkat integrasi](https://apps.yunohost.org/badge/integration/nextcloud)](https://ci-apps.yunohost.org/ci/apps/nextcloud/) +![Status kerja](https://apps.yunohost.org/badge/state/nextcloud) +![Status pemeliharaan](https://apps.yunohost.org/badge/maintained/nextcloud) [![Pasang Nextcloud dengan YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=nextcloud) diff --git a/README_nl.md b/README_nl.md index 3b30af19..a74b7899 100644 --- a/README_nl.md +++ b/README_nl.md @@ -5,7 +5,9 @@ Hij mag NIET handmatig aangepast worden. # Nextcloud voor Yunohost -[![Integratieniveau](https://dash.yunohost.org/integration/nextcloud.svg)](https://ci-apps.yunohost.org/ci/apps/nextcloud/) ![Mate van functioneren](https://ci-apps.yunohost.org/ci/badges/nextcloud.status.svg) ![Onderhoudsstatus](https://ci-apps.yunohost.org/ci/badges/nextcloud.maintain.svg) +[![Integratieniveau](https://apps.yunohost.org/badge/integration/nextcloud)](https://ci-apps.yunohost.org/ci/apps/nextcloud/) +![Mate van functioneren](https://apps.yunohost.org/badge/state/nextcloud) +![Onderhoudsstatus](https://apps.yunohost.org/badge/maintained/nextcloud) [![Nextcloud met Yunohost installeren](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=nextcloud) diff --git a/README_pl.md b/README_pl.md new file mode 100644 index 00000000..d2ffb069 --- /dev/null +++ b/README_pl.md @@ -0,0 +1,58 @@ + + +# Nextcloud dla YunoHost + +[![Poziom integracji](https://apps.yunohost.org/badge/integration/nextcloud)](https://ci-apps.yunohost.org/ci/apps/nextcloud/) +![Status działania](https://apps.yunohost.org/badge/state/nextcloud) +![Status utrzymania](https://apps.yunohost.org/badge/maintained/nextcloud) + +[![Zainstaluj Nextcloud z YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=nextcloud) + +*[Przeczytaj plik README w innym języku.](./ALL_README.md)* + +> *Ta aplikacja pozwala na szybką i prostą instalację Nextcloud na serwerze YunoHost.* +> *Jeżeli nie masz YunoHost zapoznaj się z [poradnikiem](https://yunohost.org/install) instalacji.* + +## Przegląd + +Nextcloud lets you access and synchronize data, files, contacts and calendars between different devices (PCs or mobiles), or share them with other people (with or without accounts), and also offers advanced communication and collaborative working features. Nextcloud features its own application mechanism (see also [Nextcloud's app store](https://apps.nextcloud.com/)) for specific functionalities. + +In the context of YunoHost, Nextcloud integrates with the SSO/User Portal (YunoHost accounts are automatically connected to Nextcloud). + +The `/.well-known` address will be automatically configured for CalDAV and CardDAV synchronization if no other service such as Baïkal is already using it. + +The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. + +**Dostarczona wersja:** 30.0.2~ynh1 + +**Demo:** + +## Zrzuty ekranu + +![Zrzut ekranu z Nextcloud](./doc/screenshots/screenshot.png) + +## Dokumentacja i zasoby + +- Oficjalna strona aplikacji: +- Oficjalna dokumentacja: +- Oficjalna dokumentacja dla administratora: +- Repozytorium z kodem źródłowym: +- Sklep YunoHost: +- Zgłaszanie błędów: + +## Informacje od twórców + +Wyślij swój pull request do [gałęzi `testing`](https://github.com/YunoHost-Apps/nextcloud_ynh/tree/testing). + +Aby wypróbować gałąź `testing` postępuj zgodnie z instrukcjami: + +```bash +sudo yunohost app install https://github.com/YunoHost-Apps/nextcloud_ynh/tree/testing --debug +lub +sudo yunohost app upgrade nextcloud -u https://github.com/YunoHost-Apps/nextcloud_ynh/tree/testing --debug +``` + +**Więcej informacji o tworzeniu paczek aplikacji:** diff --git a/README_ru.md b/README_ru.md index ad911990..4c845b78 100644 --- a/README_ru.md +++ b/README_ru.md @@ -5,7 +5,9 @@ # Nextcloud для YunoHost -[![Уровень интеграции](https://dash.yunohost.org/integration/nextcloud.svg)](https://ci-apps.yunohost.org/ci/apps/nextcloud/) ![Состояние работы](https://ci-apps.yunohost.org/ci/badges/nextcloud.status.svg) ![Состояние сопровождения](https://ci-apps.yunohost.org/ci/badges/nextcloud.maintain.svg) +[![Уровень интеграции](https://apps.yunohost.org/badge/integration/nextcloud)](https://ci-apps.yunohost.org/ci/apps/nextcloud/) +![Состояние работы](https://apps.yunohost.org/badge/state/nextcloud) +![Состояние сопровождения](https://apps.yunohost.org/badge/maintained/nextcloud) [![Установите Nextcloud с YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=nextcloud) diff --git a/README_zh_Hans.md b/README_zh_Hans.md index 66d266c6..6c07a52f 100644 --- a/README_zh_Hans.md +++ b/README_zh_Hans.md @@ -5,7 +5,9 @@ # YunoHost 上的 Nextcloud -[![集成程度](https://dash.yunohost.org/integration/nextcloud.svg)](https://ci-apps.yunohost.org/ci/apps/nextcloud/) ![工作状态](https://ci-apps.yunohost.org/ci/badges/nextcloud.status.svg) ![维护状态](https://ci-apps.yunohost.org/ci/badges/nextcloud.maintain.svg) +[![集成程度](https://apps.yunohost.org/badge/integration/nextcloud)](https://ci-apps.yunohost.org/ci/apps/nextcloud/) +![工作状态](https://apps.yunohost.org/badge/state/nextcloud) +![维护状态](https://apps.yunohost.org/badge/maintained/nextcloud) [![使用 YunoHost 安装 Nextcloud](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=nextcloud) From f4624019075f92a3b8f03fbae162b7fa77827188 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin <4533074+alexAubin@users.noreply.github.com> Date: Tue, 3 Dec 2024 22:05:35 +0100 Subject: [PATCH 45/74] Update manifest.toml: revert to 29.0.8 with prefetch = false to fix tests --- manifest.toml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/manifest.toml b/manifest.toml index c467335d..629802bf 100644 --- a/manifest.toml +++ b/manifest.toml @@ -62,8 +62,9 @@ ram.runtime = "512M" sha256 = '929bb8045e96216fe22a65dcd66279e5bd7ba1abb29d99bf401d423b646a445f' [resources.sources.29] - url = 'https://download.nextcloud.com/server/releases/nextcloud-29.0.9.tar.bz2' - sha256 = 'f14e8f497c6d6b2b0da5cd0ad116f0c99f720c4eb05e64432fbd86e09cfb4141' + url = 'https://download.nextcloud.com/server/releases/nextcloud-29.0.8.tar.bz2' + sha256 = '0ab54b517f76cd26f2bd38b6fe184b9fbaed32f734246c58c1acf83473c0a4b9' + prefetch = false [resources.sources.28] url = 'https://download.nextcloud.com/server/releases/nextcloud-28.0.8.tar.bz2' From b7b5f3422a4328f1cf00bdb388ed6582a147f934 Mon Sep 17 00:00:00 2001 From: tituspijean Date: Tue, 3 Dec 2024 22:19:10 +0100 Subject: [PATCH 46/74] Disable output buffering (#758) --- conf/extra_php-fpm.conf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/conf/extra_php-fpm.conf b/conf/extra_php-fpm.conf index fd92447d..798265ba 100644 --- a/conf/extra_php-fpm.conf +++ b/conf/extra_php-fpm.conf @@ -15,6 +15,8 @@ php_value[opcache.max_accelerated_files]=10000 php_value[opcache.memory_consumption]=128 php_value[opcache.save_comments]=1 php_value[opcache.revalidate_freq]=60 +; https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/big_file_upload_configuration.html#configuring-php +php_value[output_buffering]=0 ; https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/caching_configuration.html#id1 php_value[apc.enabled]=1 php_value[apc.enable_cli]=1 From aea6a8de9e770b6becdbc4b3f47c1c3c1c1aca13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Tue, 3 Dec 2024 22:49:57 +0100 Subject: [PATCH 47/74] Update backup --- scripts/backup | 7 ------- 1 file changed, 7 deletions(-) diff --git a/scripts/backup b/scripts/backup index 1407a99c..96d5808b 100755 --- a/scripts/backup +++ b/scripts/backup @@ -21,13 +21,6 @@ ynh_backup --src_path="$install_dir" ynh_backup --src_path="$data_dir" --is_big -#================================================= -# BACKUP THE NGINX CONFIGURATION -#================================================= - -ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" -ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.d" - #================================================= # SYSTEM CONFIGURATION #================================================= From 4ec797a604638d3a4e18336689779ce96458f95b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Thu, 5 Dec 2024 20:02:37 +0100 Subject: [PATCH 48/74] Update manifest.toml --- manifest.toml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/manifest.toml b/manifest.toml index 629802bf..9aaa619e 100644 --- a/manifest.toml +++ b/manifest.toml @@ -5,7 +5,7 @@ name = "Nextcloud" description.en = "Online storage, file sharing platform and various other applications" description.fr = "Stockage en ligne, plateforme de partage de fichiers et diverses autres applications" -version = "30.0.2~ynh1" +version = "30.0.3~ynh1" maintainers = ["kay0u"] @@ -58,12 +58,12 @@ ram.runtime = "512M" [resources.sources] [resources.sources.main] - url = 'https://download.nextcloud.com/server/releases/nextcloud-30.0.2.tar.bz2' - sha256 = '929bb8045e96216fe22a65dcd66279e5bd7ba1abb29d99bf401d423b646a445f' + url = 'https://download.nextcloud.com/server/releases/nextcloud-30.0.3.tar.bz2' + sha256 = 'e3daa583a8c139a4781ff71dd20d4b98f90c7d881c2a49c2d236e785a0bd08d5' [resources.sources.29] - url = 'https://download.nextcloud.com/server/releases/nextcloud-29.0.8.tar.bz2' - sha256 = '0ab54b517f76cd26f2bd38b6fe184b9fbaed32f734246c58c1acf83473c0a4b9' + url = 'https://download.nextcloud.com/server/releases/nextcloud-29.0.10.tar.bz2' + sha256 = 'a5863d9f13af177f27d883317f96c3d176e7b1ca70b0ddd7958494582b494577' prefetch = false [resources.sources.28] From e4b820d271d301f1640b8223f1e22a631a038677 Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Thu, 5 Dec 2024 20:02:42 +0100 Subject: [PATCH 49/74] Auto-update READMEs --- README.md | 2 +- README_es.md | 2 +- README_eu.md | 2 +- README_fr.md | 2 +- README_gl.md | 2 +- README_id.md | 2 +- README_nl.md | 2 +- README_pl.md | 2 +- README_ru.md | 2 +- README_zh_Hans.md | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index f645d760..c48a61d0 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Shipped version:** 30.0.2~ynh1 +**Shipped version:** 30.0.3~ynh1 **Demo:** diff --git a/README_es.md b/README_es.md index 7dd382f9..0d0fc133 100644 --- a/README_es.md +++ b/README_es.md @@ -26,7 +26,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Versión actual:** 30.0.2~ynh1 +**Versión actual:** 30.0.3~ynh1 **Demo:** diff --git a/README_eu.md b/README_eu.md index dfce54f4..fcaf24a0 100644 --- a/README_eu.md +++ b/README_eu.md @@ -26,7 +26,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Paketatutako bertsioa:** 30.0.2~ynh1 +**Paketatutako bertsioa:** 30.0.3~ynh1 **Demoa:** diff --git a/README_fr.md b/README_fr.md index d211d8c2..1ef173bd 100644 --- a/README_fr.md +++ b/README_fr.md @@ -27,7 +27,7 @@ L'adresse `/.well-known` sera automatiquement configuré pour la synchronisatio Le catalogue YunoHost dispose de deux suites bureautiques collaboratives, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) et [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), qui peuvent être intégrées à Nextcloud. -**Version incluse :** 30.0.2~ynh1 +**Version incluse :** 30.0.3~ynh1 **Démo :** diff --git a/README_gl.md b/README_gl.md index 6ac9c635..5d1caf92 100644 --- a/README_gl.md +++ b/README_gl.md @@ -26,7 +26,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Versión proporcionada:** 30.0.2~ynh1 +**Versión proporcionada:** 30.0.3~ynh1 **Demo:** diff --git a/README_id.md b/README_id.md index 17f53464..3d193b94 100644 --- a/README_id.md +++ b/README_id.md @@ -26,7 +26,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Versi terkirim:** 30.0.2~ynh1 +**Versi terkirim:** 30.0.3~ynh1 **Demo:** diff --git a/README_nl.md b/README_nl.md index a74b7899..aaace92f 100644 --- a/README_nl.md +++ b/README_nl.md @@ -26,7 +26,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Geleverde versie:** 30.0.2~ynh1 +**Geleverde versie:** 30.0.3~ynh1 **Demo:** diff --git a/README_pl.md b/README_pl.md index d2ffb069..e741bf8b 100644 --- a/README_pl.md +++ b/README_pl.md @@ -26,7 +26,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Dostarczona wersja:** 30.0.2~ynh1 +**Dostarczona wersja:** 30.0.3~ynh1 **Demo:** diff --git a/README_ru.md b/README_ru.md index 4c845b78..70963663 100644 --- a/README_ru.md +++ b/README_ru.md @@ -26,7 +26,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Поставляемая версия:** 30.0.2~ynh1 +**Поставляемая версия:** 30.0.3~ynh1 **Демо-версия:** diff --git a/README_zh_Hans.md b/README_zh_Hans.md index 6c07a52f..7b6c6328 100644 --- a/README_zh_Hans.md +++ b/README_zh_Hans.md @@ -26,7 +26,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**分发版本:** 30.0.2~ynh1 +**分发版本:** 30.0.3~ynh1 **演示:** From f7b29ecb9f075dced1bf922bfddbfec586d5dc70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Thu, 5 Dec 2024 20:18:43 +0100 Subject: [PATCH 50/74] Update manifest.toml --- manifest.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manifest.toml b/manifest.toml index 9aaa619e..086012f7 100644 --- a/manifest.toml +++ b/manifest.toml @@ -67,8 +67,8 @@ ram.runtime = "512M" prefetch = false [resources.sources.28] - url = 'https://download.nextcloud.com/server/releases/nextcloud-28.0.8.tar.bz2' - sha256 = '55a2f745fcc8f01b5816b23333f1e3014d2040a66794e132ddd0d219a37be53a' + url = 'https://download.nextcloud.com/server/releases/nextcloud-28.0.13.tar.bz2' + sha256 = '989130cac091c1adb9696f97956e69e5cdd07176d292c3fb086db9c62cf71db5' prefetch = false [resources.sources.27] From a40c87d40301ece82a7f3594461d8ab2064c392c Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Thu, 5 Dec 2024 22:40:14 +0100 Subject: [PATCH 51/74] Auto-update READMEs --- README_es.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README_es.md b/README_es.md index 74f68078..0d0fc133 100644 --- a/README_es.md +++ b/README_es.md @@ -26,7 +26,6 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. - **Versión actual:** 30.0.3~ynh1 **Demo:** From c8bf2fa2fd33c6a82417b1be6bf63e08adac85d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Fri, 6 Dec 2024 12:22:56 +0100 Subject: [PATCH 52/74] Update tests.toml --- tests.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests.toml b/tests.toml index 2b893c03..3af71181 100644 --- a/tests.toml +++ b/tests.toml @@ -10,8 +10,8 @@ test_format = 1.0 #test_upgrade_from.c5cf91ad.name = "Upgrade from 25.0.2" #test_upgrade_from.caf917f3.name = "Upgrade from 26.0.2" - #test_upgrade_from.9c6d1eea.name = "Upgrade from 27.1.4" - #test_upgrade_from.e9f82ab7.name = "Upgrade from 28.0.6" + test_upgrade_from.9c6d1eea.name = "Upgrade from 27.1.4" + test_upgrade_from.e9f82ab7.name = "Upgrade from 28.0.6" test_upgrade_from.541f5fde.name = "Upgrade from 29.0.8" [default.curl_tests] From 53e1dac0a0d52932f01c0671712040d55b3402f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Sat, 7 Dec 2024 16:24:22 +0100 Subject: [PATCH 53/74] Update upgrade --- scripts/upgrade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/upgrade b/scripts/upgrade index 62001c83..97bbdc6c 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -124,7 +124,7 @@ function list_installed_apps_not_compatible_with_future_version() current_version=$(grep OC_VersionString "$install_dir/version.php" | cut -d\' -f2) current_major_version=${current_version%%.*} -last_version=$(ynh_read_manifest --manifest_key="resources.sources.main.url" | grep -o '[0-9][0-9]\.[0-9]\.[0-9][0-9]') +last_version=$(ynh_read_manifest --manifest_key="resources.sources.main.url" | grep -o '[0-9][0-9]\.[0-9]\.[0-9]+') last_major_version=${last_version%%.*} if [[ "$last_major_version" != "$current_major_version" ]] From daae8417cb2cc5e1875104e7adedf700a11b16b1 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin <4533074+alexAubin@users.noreply.github.com> Date: Tue, 10 Dec 2024 19:52:37 +0100 Subject: [PATCH 54/74] Update scripts/upgrade: gotta use -E for grep to recognize the + quantifier --- scripts/upgrade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/upgrade b/scripts/upgrade index 97bbdc6c..b28f0e94 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -124,7 +124,7 @@ function list_installed_apps_not_compatible_with_future_version() current_version=$(grep OC_VersionString "$install_dir/version.php" | cut -d\' -f2) current_major_version=${current_version%%.*} -last_version=$(ynh_read_manifest --manifest_key="resources.sources.main.url" | grep -o '[0-9][0-9]\.[0-9]\.[0-9]+') +last_version=$(ynh_read_manifest --manifest_key="resources.sources.main.url" | grep -Eo '[0-9][0-9]\.[0-9]\.[0-9]+') last_major_version=${last_version%%.*} if [[ "$last_major_version" != "$current_major_version" ]] From a29f99583371f568e65165b5f10ae8b649b81bd7 Mon Sep 17 00:00:00 2001 From: eric_G <46165813+ericgaspar@users.noreply.github.com> Date: Tue, 10 Dec 2024 22:46:45 +0100 Subject: [PATCH 55/74] Helpers 2.1 (v30.0.3) (#746) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update manifest.toml * Auto-update READMEs * add pre upgrade warning for NC 29 * update to PHP8.3 * Auto-update READMEs * Update manifest.toml * Auto-update READMEs * Fix space splitting in phpflags on install (#690) * Auto-update READMEs * Update upgrade * Update manifest.toml * Auto-update READMEs * Fix phpflags (#691) * Fix upgrade: php version is 8.3 starting from 29.x ? (#692) * Update manifest.toml * Auto-update READMEs * Update tests.toml * [autopatch] Do not delete logs on app removal (#697) * [autopatch] Do not delete logs on app removal (#698) Co-authored-by: Yunohost-Bot <> * 29.0.3 * Auto-update READMEs * Update remove * Indent * Fix again upgrade ending with Nextcloud being in PHP 8.2 ? * Auto-update READMEs * Update nginx.conf * Update manifest.toml * Auto-update READMEs * Rework DESCRIPTION.md (#707) * Update DESCRIPTION_fr.md * Auto-update READMEs * Update DESCRIPTION.md * Auto-update READMEs * Update DESCRIPTION_fr.md * Auto-update READMEs --------- Co-authored-by: yunohost-bot * bump all old versions * oupsie * Auto-update READMEs * system_addressbook_exposed is a boolean * Auto-update READMEs * migrate system_addressbook_exposed to boolean, fix upgrade test * another fix for system_addressbook_exposed, update the dav conf accordingly * zblerg, do not modify system_addressbook_exposed config value in the upgrade script * add redis-server as deps * find files before chown them * chown the root folder too * fix find condition * find ... chmod is not faster, at least avoid to chown -R the data_dir in the upgrade script * add a button in the config panel to run chown/chmod on data_dir * we can avoid this chmod too i guess? * only nextcloud is allowed to read the config file * zblerg, the config file doesn't exist before install * wait until nginx has actually remove the nextcloud conf during upgrade before checking the url_handled * create a function for that * fix change-url dav detection * only if domain has changed... * Update scripts/_common.sh * moar sleep * oups * minor typos * Update backup * minor typos * Fix removing ACL permissions on uninstall According to `man setfacl`, for the `--remove` option "[o]nly ACL entries without the perms field are accepted as parameters". * Fix: Add missing `file` argument to `setfacl` * Fix: Use absolute path for removing ACL permissions * Update manifest.toml * Auto-update READMEs * Add notify push option (#417) * add notify_push option * self-test notify_push * fix notify_app * new permission hpb, some fixes * fix the restore script * fix restore² * fix upgrade * fix socket path * Update doc/DISCLAIMER_fr.md * split nginx conf * use official helpers with modified args * Auto-update READMEs * update nginx conf, add new services * add tests * add arch var * tests: enable_notify_push is false by default * fix upgrade * final_path -> install_dir * fix socket nginx path * add notify_push nginx conf before, so the reload in ynh_add_nginx_config load it * fully functional version * readd a removed fix * run cron task after notify push setup * Auto-update READMEs * remove systemd files * add notify push in config panel * add cron again because to make notify push happy * fix indent * enable/disable the notify push path * fix path unit * exec only for nextcloud user * move sock file to /var/run * start notify-push after the watcher * ² * remove warning * cron can sometimes fail when the database is not fully initialized, retries the cron job several times and catch catch the error on failure * oupsie * Apply suggestions from code review Co-authored-by: eric_G <46165813+ericgaspar@users.noreply.github.com> --------- Co-authored-by: Éric Gaspar <46165813+ericgaspar@users.noreply.github.com> Co-authored-by: yunohost-bot * Remove ~duplicate pre-upgrade message (#723) * Fix notify_push after reboot/restart the service, create the folder /var/run/nextcloud via systemd * Update manifest.toml * Auto-update READMEs * Update backup * 29.0.7 * Auto-update READMEs * 30.0.0 * Auto-update READMEs * Update manifest.toml * Auto-update READMEs * Update tests.toml * Update manifest.toml * Update screenshot.png * cleaning * cleaning * Update tests.toml * helpers * cleaning * Update config * Update config * fix * Create .gitignore * Update install * Update upgrade * Update install * Update _common.sh * cleaning * Update backup * Update upgrade * Auto-update READMEs * Update config * Update config_panel.toml * Update tests.toml * Update backup * Update scripts/config Co-authored-by: Alexandre Aubin <4533074+alexAubin@users.noreply.github.com> * Update scripts/change_url Co-authored-by: Alexandre Aubin <4533074+alexAubin@users.noreply.github.com> * Fix patch handling, no more trick required because patches are now well identified as being meant for the 'main' (=latest) source * Update scripts/restore Co-authored-by: Alexandre Aubin <4533074+alexAubin@users.noreply.github.com> * Update upgrade * Remove the need for custom mysql helper (requires yunohost 12.0. ... 8 ?) * fix * Update install * Update upgrade * Update upgrade * Update upgrade * Update manifest.toml * Update manifest.toml: bump again yunohost requirement to 12.0.8.2 * Update upgrade * Update manifest.toml: sources for 30.0.3 disappeared again so we have to fucking revert to 30.0.2 zzzzzz * Auto-update READMEs * Update 00-add-logout_url-conf.patch * Update 01-disable-CSPv3-nonce_and_allow-YNH-fonts.patch * Update 01-disable-CSPv3-nonce_and_allow-YNH-fonts.patch * Delete sources/patches/.gitignore * Update upgrade * Update scripts/upgrade: gotta use -E for grep to recognize the + quantifier * Update manifest.toml --------- Co-authored-by: yunohost-bot Co-authored-by: OniriCorpe Co-authored-by: lyyn <79758863+lyynd@users.noreply.github.com> Co-authored-by: tituspijean Co-authored-by: Alexandre Aubin <4533074+alexAubin@users.noreply.github.com> Co-authored-by: YunoHost Bot Co-authored-by: Alexandre Aubin Co-authored-by: Kayou Co-authored-by: Björn Richter <2268851+x3rAx@users.noreply.github.com> Co-authored-by: ^x3ro --- .gitignore | 1 + README.md | 2 +- README_es.md | 2 +- README_eu.md | 2 +- README_fr.md | 2 +- README_gl.md | 2 +- README_id.md | 2 +- README_nl.md | 2 +- README_pl.md | 2 +- README_ru.md | 2 +- README_zh_Hans.md | 2 +- conf/config.json | 126 +++++++++--------- conf/extra_php-fpm.conf | 3 - conf/nextcloud.cron | 2 +- conf/nginx.conf | 2 +- config_panel.toml | 31 ----- doc/ADMIN.md | 2 +- doc/ADMIN_fr.md | 2 +- hooks/post_user_delete | 6 +- manifest.toml | 15 ++- .../main/00-add-logout_url-conf.patch | 22 ++- ...able-CSPv3-nonce_and_allow-YNH-fonts.patch | 28 ++-- ...eval-in-JS-scripts-for-YunoHost-tile.patch | 0 scripts/_common.sh | 15 +-- scripts/_ynh_mysql_connect_as.sh | 36 ----- scripts/_ynh_mysql_dump_db.sh | 37 ----- scripts/backup | 38 +++--- scripts/change_url | 38 +++--- scripts/config | 120 ++++------------- scripts/install | 101 +++++++------- scripts/remove | 27 ++-- scripts/restore | 72 +++++----- scripts/upgrade | 125 +++++++++-------- sources/patches/.gitignore | 0 34 files changed, 333 insertions(+), 536 deletions(-) rename sources/patches_last_version/app-00-add-logout_url-conf.patch => patches/main/00-add-logout_url-conf.patch (67%) rename sources/patches_last_version/app-01-disable-CSPv3-nonce_and_allow-YNH-fonts.patch => patches/main/01-disable-CSPv3-nonce_and_allow-YNH-fonts.patch (63%) rename sources/patches_last_version/app-02-Allow-for-eval-in-JS-scripts-for-YunoHost-tile.patch => patches/main/02-Allow-for-eval-in-JS-scripts-for-YunoHost-tile.patch (100%) delete mode 100644 scripts/_ynh_mysql_connect_as.sh delete mode 100644 scripts/_ynh_mysql_dump_db.sh delete mode 100644 sources/patches/.gitignore diff --git a/.gitignore b/.gitignore index 783a4aee..8f144f36 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ *~ *.sw[op] +.DS_Store diff --git a/README.md b/README.md index c48a61d0..f645d760 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Shipped version:** 30.0.3~ynh1 +**Shipped version:** 30.0.2~ynh1 **Demo:** diff --git a/README_es.md b/README_es.md index 0d0fc133..7dd382f9 100644 --- a/README_es.md +++ b/README_es.md @@ -26,7 +26,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Versión actual:** 30.0.3~ynh1 +**Versión actual:** 30.0.2~ynh1 **Demo:** diff --git a/README_eu.md b/README_eu.md index fcaf24a0..dfce54f4 100644 --- a/README_eu.md +++ b/README_eu.md @@ -26,7 +26,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Paketatutako bertsioa:** 30.0.3~ynh1 +**Paketatutako bertsioa:** 30.0.2~ynh1 **Demoa:** diff --git a/README_fr.md b/README_fr.md index 1ef173bd..d211d8c2 100644 --- a/README_fr.md +++ b/README_fr.md @@ -27,7 +27,7 @@ L'adresse `/.well-known` sera automatiquement configuré pour la synchronisatio Le catalogue YunoHost dispose de deux suites bureautiques collaboratives, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) et [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), qui peuvent être intégrées à Nextcloud. -**Version incluse :** 30.0.3~ynh1 +**Version incluse :** 30.0.2~ynh1 **Démo :** diff --git a/README_gl.md b/README_gl.md index 5d1caf92..6ac9c635 100644 --- a/README_gl.md +++ b/README_gl.md @@ -26,7 +26,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Versión proporcionada:** 30.0.3~ynh1 +**Versión proporcionada:** 30.0.2~ynh1 **Demo:** diff --git a/README_id.md b/README_id.md index 3d193b94..17f53464 100644 --- a/README_id.md +++ b/README_id.md @@ -26,7 +26,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Versi terkirim:** 30.0.3~ynh1 +**Versi terkirim:** 30.0.2~ynh1 **Demo:** diff --git a/README_nl.md b/README_nl.md index aaace92f..a74b7899 100644 --- a/README_nl.md +++ b/README_nl.md @@ -26,7 +26,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Geleverde versie:** 30.0.3~ynh1 +**Geleverde versie:** 30.0.2~ynh1 **Demo:** diff --git a/README_pl.md b/README_pl.md index e741bf8b..d2ffb069 100644 --- a/README_pl.md +++ b/README_pl.md @@ -26,7 +26,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Dostarczona wersja:** 30.0.3~ynh1 +**Dostarczona wersja:** 30.0.2~ynh1 **Demo:** diff --git a/README_ru.md b/README_ru.md index 70963663..4c845b78 100644 --- a/README_ru.md +++ b/README_ru.md @@ -26,7 +26,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Поставляемая версия:** 30.0.3~ynh1 +**Поставляемая версия:** 30.0.2~ynh1 **Демо-версия:** diff --git a/README_zh_Hans.md b/README_zh_Hans.md index 7b6c6328..6c07a52f 100644 --- a/README_zh_Hans.md +++ b/README_zh_Hans.md @@ -26,7 +26,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**分发版本:** 30.0.3~ynh1 +**分发版本:** 30.0.2~ynh1 **演示:** diff --git a/conf/config.json b/conf/config.json index 02d85721..bb800325 100644 --- a/conf/config.json +++ b/conf/config.json @@ -1,63 +1,63 @@ -{ - "system": { - "updatechecker": false, - "memcache.local": "\\OC\\Memcache\\APCu", - "integrity.check.disabled": true, - "filelocking.enabled": true, - "memcache.locking": "\\OC\\Memcache\\Redis", - "redis": { - "host": "localhost", - "port": "6379", - "timeout": "0.0", - "password": "" - }, - "hashing_default_password": true, - "localstorage.allowsymlinks": true, - "simpleSignUpLink.shown": false, - "maintenance_window_start": 1, - "mail_smtpmode": "smtp", - "mail_smtpport": "25", - "mail_smtpauth": 1, - "mail_smtpname": "__APP__", - "mail_smtppassword": "__MAIL_PWD__", - "mail_sendmailmode": "smtp", - "mail_from_address": "__APP__", - "mail_domain": "__DOMAIN__", - "mail_smtphost": "localhost", - "mail_smtpstreamoptions": { - "ssl": { - "allow_self_signed": true, - "verify_peer": false, - "verify_peer_name": false - } - }, - "trusted_proxies": [ "127.0.0.1", "::1" ] - }, - "apps": { - "user_ldap": { - "ldap_base": "dc=yunohost,dc=org", - "ldap_base_groups": "ou=groups,dc=yunohost,dc=org", - "ldap_base_users": "ou=users,dc=yunohost,dc=org", - "ldap_cache_ttl": "600", - "ldap_configuration_active": "1", - "ldap_display_name": "displayname", - "ldap_email_attr": "mail", - "ldap_expert_username_attr": "uid", - "ldap_group_display_name": "cn", - "ldap_group_filter": "(&(objectclass=top)(memberUid=*))", - "ldap_group_filter_mode": "0", - "ldap_groupfilter_objectclass": "posixGroup", - "ldap_group_member_assoc_attribute": "memberUid", - "ldap_host": "localhost", - "ldap_login_filter": "(&(|(objectclass=posixAccount))(uid=%uid)(permission=cn=__APP__.main,ou=permission,dc=yunohost,dc=org))", - "ldap_login_filter_mode": "0", - "ldap_port": "389", - "ldap_quota_attr": "userquota", - "ldap_tls": "0", - "ldap_user_display_name": "cn", - "ldap_user_filter_mode": "0", - "ldap_userfilter_objectclass": "posixAccount", - "ldap_userlist_filter": "objectclass=posixAccount" - } - } -} +{ + "system": { + "updatechecker": false, + "memcache.local": "\\OC\\Memcache\\APCu", + "integrity.check.disabled": true, + "filelocking.enabled": true, + "memcache.locking": "\\OC\\Memcache\\Redis", + "redis": { + "host": "localhost", + "port": "6379", + "timeout": "0.0", + "password": "" + }, + "hashing_default_password": true, + "localstorage.allowsymlinks": true, + "simpleSignUpLink.shown": false, + "maintenance_window_start": 1, + "mail_smtpmode": "smtp", + "mail_smtpport": "25", + "mail_smtpauth": 1, + "mail_smtpname": "__APP__", + "mail_smtppassword": "__MAIL_PWD__", + "mail_sendmailmode": "smtp", + "mail_from_address": "__APP__", + "mail_domain": "__DOMAIN__", + "mail_smtphost": "localhost", + "mail_smtpstreamoptions": { + "ssl": { + "allow_self_signed": true, + "verify_peer": false, + "verify_peer_name": false + } + }, + "trusted_proxies": [ "127.0.0.1", "::1" ] + }, + "apps": { + "user_ldap": { + "ldap_base": "dc=yunohost,dc=org", + "ldap_base_groups": "ou=groups,dc=yunohost,dc=org", + "ldap_base_users": "ou=users,dc=yunohost,dc=org", + "ldap_cache_ttl": "600", + "ldap_configuration_active": "1", + "ldap_display_name": "displayname", + "ldap_email_attr": "mail", + "ldap_expert_username_attr": "uid", + "ldap_group_display_name": "cn", + "ldap_group_filter": "(&(objectclass=top)(memberUid=*))", + "ldap_group_filter_mode": "0", + "ldap_groupfilter_objectclass": "posixGroup", + "ldap_group_member_assoc_attribute": "memberUid", + "ldap_host": "localhost", + "ldap_login_filter": "(&(|(objectclass=posixAccount))(uid=%uid)(permission=cn=__APP__.main,ou=permission,dc=yunohost,dc=org))", + "ldap_login_filter_mode": "0", + "ldap_port": "389", + "ldap_quota_attr": "userquota", + "ldap_tls": "0", + "ldap_user_display_name": "cn", + "ldap_user_filter_mode": "0", + "ldap_userfilter_objectclass": "posixAccount", + "ldap_userlist_filter": "objectclass=posixAccount" + } + } +} diff --git a/conf/extra_php-fpm.conf b/conf/extra_php-fpm.conf index 798265ba..a762cd02 100644 --- a/conf/extra_php-fpm.conf +++ b/conf/extra_php-fpm.conf @@ -1,9 +1,6 @@ ; Additional php.ini defines, specific to this pool of workers. env[PATH] = $PATH -php_admin_value[memory_limit] = 512M -php_value[upload_max_filesize] = 10G -php_value[post_max_size] = 10G php_value[default_charset] = UTF-8 ; OPcache is already activated by default ; php_value[opcache.enable]=1 diff --git a/conf/nextcloud.cron b/conf/nextcloud.cron index 31bfe2f0..29c313cc 100644 --- a/conf/nextcloud.cron +++ b/conf/nextcloud.cron @@ -1 +1 @@ -*/5 * * * * __APP__ /usr/bin/php__PHPVERSION__ --define apc.enable_cli=1 -f __INSTALL_DIR__/cron.php +*/5 * * * * __APP__ /usr/bin/php__PHP_VERSION__ --define apc.enable_cli=1 -f __INSTALL_DIR__/cron.php diff --git a/conf/nginx.conf b/conf/nginx.conf index 6b01ab59..b8bf1772 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -117,7 +117,7 @@ location ^~ __PATH__/ { fastcgi_param modHeadersAvailable true; # Avoid sending the security headers twice fastcgi_param front_controller_active true; # Enable pretty urls fastcgi_param HTTP_ACCEPT_ENCODING ""; # Disable encoding of Nextcloud response to inject ynh scripts - fastcgi_pass unix:/var/run/php/php__PHPVERSION__-fpm-__NAME__.sock; + fastcgi_pass unix:/var/run/php/php__PHP_VERSION__-fpm-__APP__.sock; fastcgi_intercept_errors on; fastcgi_request_buffering off; diff --git a/config_panel.toml b/config_panel.toml index 90a43dd8..0d4f160d 100644 --- a/config_panel.toml +++ b/config_panel.toml @@ -57,34 +57,3 @@ name.fr = "Configuration de Nextcloud" type = "boolean" help.en = "If all your users have set a forward email and aren't using YunoHost emails, you may choose to set their forward email as their Nextcloud email setting." help.fr = "Si tous vos utilisateurs ont paramétré un e-mail de transfert et n'utilise pas du tout les e-mails de leur compte YunoHost, vous pouvez paramétrer Nextcloud d'utiliser les e-mails de transfert." - - [main.php_fpm_config] - name.en = "PHP-FPM configuration" - name.fr = "Configuration de PHP-FPM" - - [main.php_fpm_config.fpm_footprint] - ask.en = "Memory footprint" - ask.fr = "Empreinte mémoire" - type = "select" - choices.low = "Low, <= 20Mb per pool" - choices.medium = "Medium, between 20Mb and 40Mb per pool" - choices.high = "High, > 40Mb per pool" - choices.specific = "Use specific value" - default = "low" - - [main.php_fpm_config.fpm_free_footprint] - visible = "fpm_footprint == 'specific'" - ask = "Memory footprint of the service?" - type = "number" - default = "0" - help = "Free field to specify exactly the footprint in Mb if you don't want to use one of the three previous values." - - [main.php_fpm_config.fpm_usage] - ask.en = "Expected usage" - ask.fr = "Utilisation prévue" - type = "select" - choices = ["low", "medium", "high"] - default = "low" - help.en = "low: Personal usage, behind the SSO. No RAM footprint when not used, but the impact on the processor can be high if many users are using the service.
medium: Low usage, few people or/and publicly accessible. Low RAM footprint, medium processor footprint when used.
high: High usage, frequently visited website. High RAM footprint, but lower on processor usage and quickly responding." - help.fr = "low : utilisation personnelle, derrière le SSO. Pas d'empreinte RAM lorsqu'il n'est pas utilisé, mais l'impact sur le processeur peut être élevé si de nombreux utilisateurs utilisent le service.
medium : faible utilisation, peu de personnes ou/et accessible au public. Faible empreinte RAM, empreinte processeur moyenne lorsqu'il est utilisé.
high : utilisation élevée, site Web fréquemment visité. Empreinte RAM élevée, mais utilisation du processeur plus faible et réponse rapide." - diff --git a/doc/ADMIN.md b/doc/ADMIN.md index a48d167d..7e04712d 100644 --- a/doc/ADMIN.md +++ b/doc/ADMIN.md @@ -3,7 +3,7 @@ You can run Nextcloud commands from the command line using: ``` -sudo -u __APP__ php__PHPVERSION__ --define apc.enable_cli=1 __INSTALL_DIR__/occ ... +sudo -u __APP__ php__PHP_VERSION__ --define apc.enable_cli=1 __INSTALL_DIR__/occ ... ``` Alternatively, you may open a 'Nextcloud shell' with `sudo yunohost app shell __APP__`, then run `php occ ...` diff --git a/doc/ADMIN_fr.md b/doc/ADMIN_fr.md index ada48ad9..4a9e8789 100644 --- a/doc/ADMIN_fr.md +++ b/doc/ADMIN_fr.md @@ -3,7 +3,7 @@ Vous pouvez lancer des commandes Nextcloud depuis la ligne de commande avec: ``` -sudo -u __APP__ php__PHPVERSION__ --define apc.enable_cli=1 __INSTALL_DIR__/occ ... +sudo -u __APP__ php__PHP_VERSION__ --define apc.enable_cli=1 __INSTALL_DIR__/occ ... ``` Ou bien, vous pouvez ouvrir un "shell Nextcloud" avec `sudo yunohost app shell __APP__`, puis lancer `php occ ...` diff --git a/hooks/post_user_delete b/hooks/post_user_delete index d824c122..7d49d24b 100644 --- a/hooks/post_user_delete +++ b/hooks/post_user_delete @@ -5,12 +5,12 @@ source /usr/share/yunohost/helpers user="$1" app="$(basename $0 | cut -d- -f 2-)" # Extract the app name from the script name, which is supposed to be something like "50-app_id" install_dir=$(ynh_app_setting_get --app=$app --key=install_dir) -phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) +php_version=$(ynh_app_setting_get --app=$app --key=php_version) # Define a function to execute commands with `occ` exec_occ() { - (cd "$install_dir" && ynh_exec_as "$app" \ - php${phpversion} --define apc.enable_cli=1 occ --no-interaction --no-ansi "$@") + (cd "$install_dir" && ynh_exec_as_app \ + php${php_version} --define apc.enable_cli=1 occ --no-interaction --no-ansi "$@") } exec_occ user:delete $user diff --git a/manifest.toml b/manifest.toml index 086012f7..7a796b21 100644 --- a/manifest.toml +++ b/manifest.toml @@ -5,7 +5,7 @@ name = "Nextcloud" description.en = "Online storage, file sharing platform and various other applications" description.fr = "Stockage en ligne, plateforme de partage de fichiers et diverses autres applications" -version = "30.0.3~ynh1" +version = "30.0.2~ynh1" maintainers = ["kay0u"] @@ -19,7 +19,8 @@ code = "https://github.com/nextcloud/server" cpe = "cpe:2.3:a:nextcloud:nextcloud" [integration] -yunohost = ">= 11.2.30" +yunohost = ">= 12.0.8.2" +helpers_version = "2.1" architectures = ["amd64", "arm64", "armhf"] multi_instance = true @@ -58,8 +59,8 @@ ram.runtime = "512M" [resources.sources] [resources.sources.main] - url = 'https://download.nextcloud.com/server/releases/nextcloud-30.0.3.tar.bz2' - sha256 = 'e3daa583a8c139a4781ff71dd20d4b98f90c7d881c2a49c2d236e785a0bd08d5' + url = 'https://download.nextcloud.com/server/releases/nextcloud-30.0.2.tar.bz2' + sha256 = '929bb8045e96216fe22a65dcd66279e5bd7ba1abb29d99bf401d423b646a445f' [resources.sources.29] url = 'https://download.nextcloud.com/server/releases/nextcloud-29.0.10.tar.bz2' @@ -67,8 +68,8 @@ ram.runtime = "512M" prefetch = false [resources.sources.28] - url = 'https://download.nextcloud.com/server/releases/nextcloud-28.0.13.tar.bz2' - sha256 = '989130cac091c1adb9696f97956e69e5cdd07176d292c3fb086db9c62cf71db5' + url = 'https://download.nextcloud.com/server/releases/nextcloud-28.0.12.tar.bz2' + sha256 = '2a00ca4f799360f0987fcbc85d99b2c258f7d2ccf7e6f7e0c4ccf17a127f0105' prefetch = false [resources.sources.27] @@ -100,6 +101,7 @@ ram.runtime = "512M" allow_email = true [resources.install_dir] + group = "www-data:r-x" [resources.data_dir] subdirs = ["data"] @@ -118,4 +120,3 @@ ram.runtime = "512M" [resources.database] type = "mysql" - diff --git a/sources/patches_last_version/app-00-add-logout_url-conf.patch b/patches/main/00-add-logout_url-conf.patch similarity index 67% rename from sources/patches_last_version/app-00-add-logout_url-conf.patch rename to patches/main/00-add-logout_url-conf.patch index 03f7fc29..8628b783 100644 --- a/sources/patches_last_version/app-00-add-logout_url-conf.patch +++ b/patches/main/00-add-logout_url-conf.patch @@ -1,32 +1,30 @@ diff --git a/core/Controller/LoginController.php b/core/Controller/LoginController.php -index aa6617c..eb47b80 100644 +index d4d6a17db79..f587f805683 100644 --- a/core/Controller/LoginController.php +++ b/core/Controller/LoginController.php -@@ -111,16 +111,20 @@ class LoginController extends Controller { - #[UseSession] +@@ -75,15 +75,21 @@ class LoginController extends Controller { + #[FrontpageRoute(verb: 'GET', url: '/logout')] public function logout() { $loginToken = $this->request->getCookie('nc_token'); + $uuidUser = $this->userSession->getUser()->getUID(); -+ $isLdapUser = $this->config->getUserValue($uuidUser, 'user_ldap', 'uid'); ++ $isLdapUser = $this->config->getUserValue($uuidUser, 'user_ldap', 'uid'); if (!is_null($loginToken)) { - $this->config->deleteUserValue($this->userSession->getUser()->getUID(), 'login_token', $loginToken); + $this->config->deleteUserValue($uuidUser, 'login_token', $loginToken); } $this->userSession->logout(); -- + - $response = new RedirectResponse($this->urlGenerator->linkToRouteAbsolute( -- 'core.login.showLoginForm', ++ $redirectUrl = $this->urlGenerator->linkToRouteAbsolute( + 'core.login.showLoginForm', - ['clear' => true] // this param the code in login.js may be removed when the "Clear-Site-Data" is working in the browsers - )); -- -+ $redirectUrl = $this->urlGenerator->linkToRouteAbsolute( -+ 'core.login.showLoginForm', -+ ['clear' => true] // this param the code in login.js may be removed when the "Clear-Site-Data" is working in the browsers) ++ ['clear' => true] // this param the code in login.js may be removed when the "Clear-Site-Data" is working in the browsers) + ); + if (!is_null($isLdapUser)) { -+ $redirectUrl = $this->config->getSystemValue('logout_url', $redirectUrl); ++ $redirectUrl = $this->config->getSystemValue('logout_url', $redirectUrl); + } + $response = new RedirectResponse($redirectUrl); + $this->session->set('clearingExecutionContexts', '1'); $this->session->close(); - diff --git a/sources/patches_last_version/app-01-disable-CSPv3-nonce_and_allow-YNH-fonts.patch b/patches/main/01-disable-CSPv3-nonce_and_allow-YNH-fonts.patch similarity index 63% rename from sources/patches_last_version/app-01-disable-CSPv3-nonce_and_allow-YNH-fonts.patch rename to patches/main/01-disable-CSPv3-nonce_and_allow-YNH-fonts.patch index d5a609a7..1cbbd31a 100644 --- a/sources/patches_last_version/app-01-disable-CSPv3-nonce_and_allow-YNH-fonts.patch +++ b/patches/main/01-disable-CSPv3-nonce_and_allow-YNH-fonts.patch @@ -1,33 +1,29 @@ - .../Security/CSP/ContentSecurityPolicyNonceManager.php | 4 ++++ - lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php | 3 ++- - 2 files changed, 6 insertions(+), 1 deletion(-) - diff --git a/lib/private/Security/CSP/ContentSecurityPolicyNonceManager.php b/lib/private/Security/CSP/ContentSecurityPolicyNonceManager.php -index 795d8cc864..5f3c961445 100644 +index 993f74ae0e4..c85aadc49db 100644 --- a/lib/private/Security/CSP/ContentSecurityPolicyNonceManager.php +++ b/lib/private/Security/CSP/ContentSecurityPolicyNonceManager.php -@@ -70,6 +70,10 @@ class ContentSecurityPolicyNonceManager { - * @return bool +@@ -47,6 +47,10 @@ class ContentSecurityPolicyNonceManager { + * Check if the browser supports CSP v3 */ public function browserSupportsCspV3(): bool { + // YunoHost patch: disable CSPv3 nonces to: + // - avoid white page on first login from YunoHost portal + // - allow YunoHost tile display + return false; - $browserWhitelist = [ - Request::USER_AGENT_CHROME, - // Firefox 45+ + $browserBlocklist = [ + Request::USER_AGENT_IE, + ]; diff --git a/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php b/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php -index 3fcef1d0ef..7ce01a68fc 100644 +index b8bbfdb7d67..a51a15ca0e6 100644 --- a/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php +++ b/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php -@@ -449,7 +449,8 @@ class EmptyContentSecurityPolicy { - - if(!empty($this->allowedFontDomains)) { +@@ -493,7 +493,8 @@ class EmptyContentSecurityPolicy { + + if (!empty($this->allowedFontDomains)) { $policy .= 'font-src ' . implode(' ', $this->allowedFontDomains); - $policy .= ';'; + // YunoHost patch: extend font-src to load data fonts embedded in YunoHost tile script + $policy .= ' data:;'; } - - if(!empty($this->allowedConnectDomains)) { + + if (!empty($this->allowedConnectDomains)) { diff --git a/sources/patches_last_version/app-02-Allow-for-eval-in-JS-scripts-for-YunoHost-tile.patch b/patches/main/02-Allow-for-eval-in-JS-scripts-for-YunoHost-tile.patch similarity index 100% rename from sources/patches_last_version/app-02-Allow-for-eval-in-JS-scripts-for-YunoHost-tile.patch rename to patches/main/02-Allow-for-eval-in-JS-scripts-for-YunoHost-tile.patch diff --git a/scripts/_common.sh b/scripts/_common.sh index 4cdc0189..33c1736a 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -1,11 +1,7 @@ #!/bin/bash #================================================= -# COMMON VARIABLES -#================================================= - -#================================================= -# EXPERIMENTAL HELPERS +# COMMON VARIABLES AND CUSTOM HELPERS #================================================= wait_nginx_reload() { @@ -13,12 +9,13 @@ wait_nginx_reload() { # wait for the Nextcloud configuration file to disappear from NGINX before checking the CalDAV/CardDAV URL. timeout=30 for i in $(seq 1 $timeout); do - if ! ynh_exec_warn_less nginx -T | grep --quiet "# configuration file /etc/nginx/conf.d/$domain.d/$app.conf:"; then + if ! ynh_hide_warnings nginx -T | grep --quiet "# configuration file /etc/nginx/conf.d/$domain.d/$app.conf:"; then break fi sleep 1 done - # Wait untils NGINX has fully reloaded (avoid cURL fail with http2) + # Wait untils NGINX has fully reloaded (avoid cURL fail with http2) + sleep 2 } @@ -53,7 +50,3 @@ is_url_handled() { return 1 fi } - -#================================================= -# FUTURE OFFICIAL HELPERS -#================================================= diff --git a/scripts/_ynh_mysql_connect_as.sh b/scripts/_ynh_mysql_connect_as.sh deleted file mode 100644 index a22963e8..00000000 --- a/scripts/_ynh_mysql_connect_as.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash - -# Open a connection as a user -# -# example: ynh_mysql_connect_as --user="user" --password="pass" <<< "UPDATE ...;" -# example: ynh_mysql_connect_as --user="user" --password="pass" --default_character_set="utf8mb4" < /path/to/file.sql -# -# usage: ynh_mysql_connect_as --user=user --password=password [--database=database] [--default_character_set=character-set] -# | arg: -u, --user= - the user name to connect as -# | arg: -p, --password= - the user password -# | arg: -d, --database= - the database to connect to -# | arg: -c, --default_character_set= - the charset to use -# -# Requires YunoHost version 2.2.4 or higher. -ynh_mysql_connect_as() { - # Declare an array to define the options of this helper. - local legacy_args=updc - local -A args_array=( [u]=user= [p]=password= [d]=database= [c]=default_character_set= ) - local user - local password - local database - local default_character_set - # Manage arguments with getopts - ynh_handle_getopts_args "$@" - database="${database:-}" - default_character_set="${default_character_set:-}" - - if [ -n "$default_character_set" ] - then - default_character_set="--default-character-set=$default_character_set" - else - default_character_set="--default-character-set=latin1" - fi - - mysql --user="$user" --password="$password" "$default_character_set" --batch "$database" -} \ No newline at end of file diff --git a/scripts/_ynh_mysql_dump_db.sh b/scripts/_ynh_mysql_dump_db.sh deleted file mode 100644 index 3b922bb8..00000000 --- a/scripts/_ynh_mysql_dump_db.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash - -# Dump a database -# -# example: ynh_mysql_dump_db --database=roundcube --default_character_set="utf8mb4" > ./dump.sql -# -# usage: ynh_mysql_dump_db --database=database -# | arg: -d, --database= - the database name to dump -# | arg: -c, --default_character_set= - the charset to use -# | ret: the mysqldump output -# -# Requires YunoHost version 2.2.4 or higher. -ynh_mysql_dump_db() { - # Declare an array to define the options of this helper. - local legacy_args=dc - local -A args_array=( [d]=database= [c]=default_character_set= ) - local database - local default_character_set - # Manage arguments with getopts - ynh_handle_getopts_args "$@" - default_character_set="${default_character_set:-}" - MYSQL_ROOT_PWD_FILE=/etc/yunohost/mysql - - if [ -n "$default_character_set" ] - then - default_character_set="--default-character-set=$default_character_set" - else - # By default, default character set is "latin1" - default_character_set="--default-character-set=latin1" - fi - - if [ -f "$MYSQL_ROOT_PWD_FILE" ]; then - mysqldump --user="root" --password="$(cat $MYSQL_ROOT_PWD_FILE)" --single-transaction --skip-dump-date "$default_character_set" "$database" - else - mysqldump --single-transaction --skip-dump-date "$default_character_set" "$database" - fi -} \ No newline at end of file diff --git a/scripts/backup b/scripts/backup index 96d5808b..33c0c7f1 100755 --- a/scripts/backup +++ b/scripts/backup @@ -2,53 +2,49 @@ source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers -source ../settings/scripts/_ynh_mysql_dump_db.sh -#================================================= -# DECLARE DATA AND CONF FILES TO BACKUP -#================================================= -ynh_print_info --message="Declaring files to be backed up..." +ynh_print_info "Declaring files to be backed up..." #================================================= # BACKUP THE APP MAIN DIR #================================================= -ynh_backup --src_path="$install_dir" +ynh_backup "$install_dir" #================================================= # BACKUP THE DATA DIRECTORY #================================================= -ynh_backup --src_path="$data_dir" --is_big +ynh_backup "$data_dir" #================================================= # SYSTEM CONFIGURATION #================================================= -ynh_backup --src_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" +ynh_backup "/etc/php/$php_version/fpm/pool.d/$app.conf" -ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" -ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.d" +ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf" +ynh_backup "/etc/nginx/conf.d/$domain.d/$app.d" -ynh_backup --src_path="/etc/logrotate.d/$app" +ynh_backup "/etc/logrotate.d/$app" -ynh_backup --src_path="/etc/fail2ban/jail.d/$app.conf" -ynh_backup --src_path="/etc/fail2ban/filter.d/$app.conf" +ynh_backup "/etc/fail2ban/jail.d/$app.conf" +ynh_backup "/etc/fail2ban/filter.d/$app.conf" #================================================= # BACKUP VARIOUS FILES #================================================= -ynh_backup --src_path="/etc/cron.d/$app" +ynh_backup "/etc/cron.d/$app" -ynh_backup --src_path="/var/log/$app" +ynh_backup "/var/log/$app" #================================================= # BACKUP THE MYSQL DATABASE #================================================= -ynh_print_info --message="Backing up the MySQL database..." +ynh_print_info "Backing up the MySQL database..." -ynh_mysql_dump_db --database="$db_name" --default_character_set="utf8mb4" > db.sql +ynh_mysql_dump_db > db.sql #================================================= # BACKUP THE NOTIFY_PUSH APP @@ -56,13 +52,13 @@ ynh_mysql_dump_db --database="$db_name" --default_character_set="utf8mb4" > db.s if [ $enable_notify_push -eq 1 ] then - ynh_backup --src_path="/etc/systemd/system/${app}-notify-push.service" - ynh_backup --src_path="/etc/systemd/system/${app}-notify-push-watcher.service" - ynh_backup --src_path="/etc/systemd/system/${app}-notify-push-watcher.path" + ynh_backup "/etc/systemd/system/${app}-notify-push.service" + ynh_backup "/etc/systemd/system/${app}-notify-push-watcher.service" + ynh_backup "/etc/systemd/system/${app}-notify-push-watcher.path" fi #================================================= # END OF SCRIPT #================================================= -ynh_print_info --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." +ynh_print_info "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 ae966b1e..6b1208ef 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -10,32 +10,32 @@ source /usr/share/yunohost/helpers #================================================= # MODIFY URL IN NGINX CONF #================================================= -ynh_script_progression --message="Updating NGINX web server configuration..." --weight=2 +ynh_script_progression "Updating NGINX web server configuration..." if [ $change_domain -eq 1 ] then # Check if .well-known is available for this domain if is_url_handled --domain="$new_domain" --path="/.well-known/caldav" || is_url_handled --domain="$new_domain" --path="/.well-known/carddav" then - ynh_print_warn --message="Another app already uses the domain $new_domain to serve a CalDAV/CardDAV feature. You may encounter issues when dealing with your calendar or address book." + ynh_print_warn "Another app already uses the domain $new_domain to serve a CalDAV/CardDAV feature. You may encounter issues when dealing with your calendar or address book." # Remove lines about .well-known/carddav and caldav with sed. sed --in-place --regexp-extended '/location = \/\.well\-known\/(caldav|carddav)/d' "/etc/nginx/conf.d/$domain.d/$app.conf" - ynh_store_file_checksum --file="/etc/nginx/conf.d/$domain.d/$app.conf" + ynh_store_file_checksum "/etc/nginx/conf.d/$domain.d/$app.conf" fi fi -ynh_change_url_nginx_config +ynh_config_change_url_nginx #================================================= # SPECIFIC MODIFICATIONS #================================================= -ynh_script_progression --message="Applying $app specific modifications..." --weight=2 +ynh_script_progression "Applying $app specific modifications..." # Define a function to execute commands with `occ` exec_occ() { - (cd "$install_dir" && ynh_exec_as "$app" \ - php${phpversion} --define apc.enable_cli=1 occ --no-interaction --no-ansi "$@") + (cd "$install_dir" && ynh_exec_as_app \ + php${php_version} --define apc.enable_cli=1 occ --no-interaction --no-ansi "$@") } if [ $change_domain -eq 1 ] @@ -47,7 +47,7 @@ then exec_occ config:system:set overwrite.cli.url --value="https://${new_domain}${new_path}" # Reload PHP-FPM, necessary for force Nextcloud to re-read config.php, cf opcache.revalidate_freq - ynh_systemd_action --service_name=php${phpversion}-fpm --action=reload + ynh_systemctl --service=php${php_version}-fpm --action=reload mv /etc/nginx/conf.d/$old_domain.d/$app.d /etc/nginx/conf.d/$new_domain.d/$app.d fi @@ -61,9 +61,9 @@ then domain="$new_domain" path_url="$new_path" - ynh_add_config --template="notify_push.conf" --destination="/etc/nginx/conf.d/$domain.d/$app.d/notify_push.conf" + ynh_config_add --template="notify_push.conf" --destination="/etc/nginx/conf.d/$domain.d/$app.d/notify_push.conf" - ynh_systemd_action --service_name=nginx --action=reload + ynh_systemctl --service=nginx --action=reload case $YNH_ARCH in amd64) arch="x86_64";; @@ -71,39 +71,39 @@ then armel|armhf) arch="armv7";; esac - ynh_add_config --template="watcher.path" --destination="/etc/systemd/system/${app}-notify-push-watcher.path" - ynh_add_systemd_config --service="${app}-notify-push-watcher" --template="watcher.service" + ynh_config_add --template="watcher.path" --destination="/etc/systemd/system/${app}-notify-push-watcher.path" + ynh_config_add_systemd --service="${app}-notify-push-watcher" --template="watcher.service" systemctl enable --now ${app}-notify-push-watcher.path - ynh_add_systemd_config --service="${app}-notify-push" + ynh_config_add_systemd --service="${app}-notify-push" count=0 - while ! ynh_exec_as "$app" php${phpversion} --define apc.enable_cli=1 $install_dir/cron.php && [[ $count -lt 30 ]] + while ! ynh_exec_as_app php${php_version} --define apc.enable_cli=1 $install_dir/cron.php && [[ $count -lt 30 ]] do sleep 1 count=$((count + 1)) done - ynh_systemd_action --service_name="${app}-notify-push" --action=restart --line_match="Push daemon for Nextcloud clients." --log_path="systemd" --action=restart + ynh_systemctl --service="${app}-notify-push" --action=restart --wait_until="Push daemon for Nextcloud clients." --log_path="systemd" --action=restart exec_occ config:app:set notify_push base_endpoint --value https://$domain${path_url%/}/push if ! exec_occ notify_push:self-test; then - ynh_print_warn --message="The High Performance Backend service is still not working properly. Please log in with a user to your NextCloud instance, restart the High Performance Backend service with \"systemctl restart ${app}-notify-push.service\", and run \"sudo -u $app php${phpversion} $install_dir/occ notify_push:self-test\" to verify that everything is green." + ynh_print_warn "The High Performance Backend service is still not working properly. Please log in with a user to your NextCloud instance, restart the High Performance Backend service with \"systemctl restart ${app}-notify-push.service\", and run \"sudo -u $app php${php_version} $install_dir/occ notify_push:self-test\" to verify that everything is green." fi fi #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading NGINX web server..." +ynh_script_progression "Reloading NGINX web server..." # Temporary fix for the API permission (workaround for https://github.com/YunoHost/issues/issues/2294 ) ynh_permission_url --permission="api" --url="re:$new_domain\/.well-known\/.*" --auth_header="false" --clear_urls -ynh_systemd_action --service_name=nginx --action=reload +ynh_systemctl --service=nginx --action=reload #================================================= # END OF SCRIPT #================================================= -ynh_script_progression --message="Change of URL completed for $app" --last +ynh_script_progression "Change of URL completed for $app" diff --git a/scripts/config b/scripts/config index ed7b10f5..fc45c353 100644 --- a/scripts/config +++ b/scripts/config @@ -1,26 +1,18 @@ #!/bin/bash -#================================================= -# GENERIC STARTING -#================================================= -# IMPORT GENERIC HELPERS -#================================================= - source _common.sh source /usr/share/yunohost/helpers -ynh_abort_if_errors - #================================================= # RETRIEVE ARGUMENTS #================================================= -phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) -current_fpm_footprint=$(ynh_app_setting_get --app=$app --key=fpm_footprint) +php_version=$(ynh_app_setting_get --key=php_version) +current_fpm_footprint=$(ynh_app_setting_get --key=fpm_footprint) exec_occ() { - (cd "$install_dir" && ynh_exec_as "$app" \ - php${phpversion} --define apc.enable_cli=1 occ --no-interaction --no-ansi "$@") + (cd "$install_dir" && ynh_exec_as_app \ + php${php_version} --define apc.enable_cli=1 occ --no-interaction --no-ansi "$@") } #================================================= @@ -29,8 +21,8 @@ exec_occ() { get__maintenance_mode() { # Maintenance mode status - maintenance_mode_status="$(cd "$install_dir" && ynh_exec_as "$app" \ - php${phpversion} --define apc.enable_cli=1 occ --no-interaction --no-ansi maintenance:mode)" 2> /dev/null + maintenance_mode_status="$(cd "$install_dir" && ynh_exec_as_app \ + php${php_version} --define apc.enable_cli=1 occ --no-interaction --no-ansi maintenance:mode)" 2> /dev/null if echo $maintenance_mode_status | grep -q "disabled" then echo "0" @@ -38,7 +30,7 @@ get__maintenance_mode() { then echo "1" else - ynh_print_err --message="Unexpected output from maintenance status check command." + ynh_print_warn "Unexpected output from maintenance status check command." exit 0 fi } @@ -57,29 +49,6 @@ get__enable_forward_email() { fi } -get__fpm_footprint() { - # Free footprint value for php-fpm - # Check if current_fpm_footprint is an integer - if [ "$current_fpm_footprint" -eq "$current_fpm_footprint" ] 2> /dev/null - then - echo "specific" - else - echo "$current_fpm_footprint" - fi -} - -get__fpm_free_footprint() { - # Free footprint value for php-fpm - # Check if current_fpm_footprint is an integer - if [ "$current_fpm_footprint" -eq "$current_fpm_footprint" ] 2> /dev/null - then - # If current_fpm_footprint is an integer, that's a numeric value for the footprint - echo "$current_fpm_footprint" - else - echo "0" - fi -} - #================================================= # SPECIFIC SETTERS FOR TOML SHORT KEYS #================================================= @@ -94,7 +63,7 @@ set__maintenance_mode() { exec_occ maintenance:mode --on ynh_print_info "Maintenance mode enabled" fi - ynh_app_setting_set --app=$app --key=maintenance_mode --value="$maintenance_mode" + ynh_app_setting_set --key=maintenance_mode --value="$maintenance_mode" } set__system_addressbook_exposed() { @@ -105,27 +74,27 @@ set__system_addressbook_exposed() { set__enable_notify_push() { if [ "$enable_notify_push" -eq "0" ]; then nginx_extra_conf_dir="/etc/nginx/conf.d/$domain.d/$app.d" - ynh_secure_remove --file="$nginx_extra_conf_dir/notify_push.conf" - ynh_systemd_action --service_name="nginx" --action=reload + ynh_safe_rm "$nginx_extra_conf_dir/notify_push.conf" + ynh_systemctl --service="nginx" --action=reload # If notify_push is enabled, disable it if exec_occ app:list | awk '/Enabled/{f=1;next} f' | grep -q -w notify_push; then exec_occ app:disable notify_push fi - ynh_remove_systemd_config --service="${app}-notify-push" + ynh_config_remove_systemd"${app}-notify-push" systemctl disable --now "${app}-notify-push-watcher.path" - ynh_secure_remove --file="/etc/systemd/system/${app}-notify-push-watcher.path" - ynh_remove_systemd_config --service="${app}-notify-push-watcher" + ynh_safe_rm "/etc/systemd/system/${app}-notify-push-watcher.path" + ynh_config_remove_systemd"${app}-notify-push-watcher" ynh_print_info "Notify push disabled" elif [ "$enable_notify_push" -eq "1" ]; then nginx_extra_conf_dir="/etc/nginx/conf.d/$domain.d/$app.d" mkdir -p "$nginx_extra_conf_dir" - ynh_add_config --template="notify_push.conf" --destination="$nginx_extra_conf_dir/notify_push.conf" + ynh_config_add --template="notify_push.conf" --destination="$nginx_extra_conf_dir/notify_push.conf" - ynh_systemd_action --service_name="nginx" --action=reload + ynh_systemctl --service="nginx" --action=reload # If notify_push is disabled, reenable it if exec_occ app:list | awk '/Disabled/{f=1;next} f' | grep -q -w notify_push; then @@ -142,27 +111,27 @@ set__enable_notify_push() { armel|armhf) arch="armv7";; esac - ynh_add_config --template="watcher.path" --destination="/etc/systemd/system/${app}-notify-push-watcher.path" - ynh_add_systemd_config --service="${app}-notify-push-watcher" --template="watcher.service" + ynh_config_add --template="watcher.path" --destination="/etc/systemd/system/${app}-notify-push-watcher.path" + ynh_config_add_systemd --service="${app}-notify-push-watcher" --template="watcher.service" systemctl enable --now ${app}-notify-push-watcher.path - ynh_add_systemd_config --service="${app}-notify-push" - + ynh_config_add_systemd --service="${app}-notify-push" + count=0 - while ! ynh_exec_as "$app" php${phpversion} --define apc.enable_cli=1 $install_dir/cron.php && [[ $count -lt 30 ]] + while ! ynh_exec_as_app php${php_version} --define apc.enable_cli=1 $install_dir/cron.php && [[ $count -lt 30 ]] do sleep 1 count=$((count + 1)) done - ynh_systemd_action --service_name="${app}-notify-push-watcher" --action=restart - ynh_systemd_action --service_name="${app}-notify-push" --action=restart --line_match="Push daemon for Nextcloud clients." --log_path="systemd" - + ynh_systemctl --service="${app}-notify-push-watcher" --action=restart + ynh_systemctl --service="${app}-notify-push" --action=restart --wait_until="Push daemon for Nextcloud clients." --log_path="systemd" + if ! exec_occ notify_push:self-test; then - ynh_print_warn --message="The High Performance Backend service is still not working properly. Please log in with a user to your NextCloud instance, restart the High Performance Backend service with \"systemctl restart ${app}-notify-push.service\", and run \"sudo -u $app php${phpversion} $install_dir/occ notify_push:self-test\" to verify that everything is green." + ynh_print_warn "The High Performance Backend service is still not working properly. Please log in with a user to your NextCloud instance, restart the High Performance Backend service with \"systemctl restart ${app}-notify-push.service\", and run \"sudo -u $app php${php_version} $install_dir/occ notify_push:self-test\" to verify that everything is green." fi ynh_print_info "Notify push enabled" fi - ynh_app_setting_set --app=$app --key=enable_notify_push --value="$enable_notify_push" + ynh_app_setting_set --key=enable_notify_push --value="$enable_notify_push" } set__enable_forward_email() { @@ -178,26 +147,12 @@ set__enable_forward_email() { ynh_app_setting_set --app=$app --key=enable_forward_email --value="$enable_forward_email" } -set__fpm_footprint() { - if [ "$fpm_footprint" != "specific" ] - then - ynh_app_setting_set --app=$app --key=fpm_footprint --value="$fpm_footprint" - fi -} - -set__fpm_free_footprint() { - if [ "$fpm_footprint" = "specific" ] - then - ynh_app_setting_set --app=$app --key=fpm_footprint --value="$fpm_free_footprint" - fi -} - #================================================= # SPECIFIC RUNNERS FOR TOML SHORT KEYS #================================================= function run__set_permissions_button() { - local data_dir=$(ynh_app_setting_get --app=$app --key=data_dir) + local data_dir=$(ynh_app_setting_get --key=data_dir) ynh_print_info "Set permissions, it may take some time..." chown -R $app:www-data "$install_dir" chown -R $app: "$data_dir" @@ -211,32 +166,11 @@ function run__set_permissions_button() { } #================================================= -# GENERIC FINALIZATION -#================================================= - -ynh_app_config_validate() { - _ynh_app_config_validate - - if [ "${changed[fpm_usage]}" == "true" ] || [ "${changed[fpm_footprint]}" == "true" ] || [ "${changed[fpm_free_footprint]}" == "true" ]; then - # If fpm_footprint is set to 'specific', use $fpm_free_footprint value. - if [ "$fpm_footprint" = "specific" ] - then - fpm_footprint=$fpm_free_footprint - fi - - if [ "$fpm_footprint" == "0" ] - then - ynh_print_err --message="When selecting 'specific', you have to set a footprint value into the field below." - - exit 0 - fi - fi -} ynh_app_config_apply() { _ynh_app_config_apply - ynh_add_fpm_config + ynh_config_add_phpfpm } ynh_app_config_run $1 diff --git a/scripts/install b/scripts/install index 4229e7a8..47ec0e1b 100755 --- a/scripts/install +++ b/scripts/install @@ -2,57 +2,56 @@ source _common.sh source /usr/share/yunohost/helpers -source _ynh_mysql_connect_as.sh + +ynh_app_setting_set --key=php_upload_max_filesize --value=10G +ynh_app_setting_set --key=php_memory_limit --value=512M #================================================= # INITIALIZE AND STORE SETTINGS #================================================= phpflags="--define apc.enable_cli=1" -ynh_app_setting_set --app=$app --key=phpflags --value="$phpflags" +ynh_app_setting_set --key=phpflags --value="$phpflags" enable_notify_push="0" -ynh_app_setting_set --app=$app --key=enable_notify_push --value=0 +ynh_app_setting_set --key=enable_notify_push --value=0 system_addressbook_exposed="0" -ynh_app_setting_set --app=$app --key=system_addressbook_exposed --value=0 +ynh_app_setting_set --key=system_addressbook_exposed --value=0 #================================================= # CREATE A MYSQL DATABASE #================================================= -ynh_script_progression --message="Migrate MySQL database to utf8..." --weight=2 +ynh_script_progression "Migrate MySQL database to utf8..." -ynh_mysql_connect_as --user=$db_user --password="$db_pwd" --database=$db_name \ - <<< "ALTER DATABASE $db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;" +ynh_mysql_db_shell <<< "ALTER DATABASE $db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;" #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= -ynh_script_progression --message="Setting up source files..." --weight=5 +ynh_script_progression "Setting up source files..." -# Enable YunoHost patches on Nextcloud sources -cp -a ../sources/patches_last_version/* ../sources/patches # Download, check integrity, uncompress and patch the source from app.src ynh_setup_source --dest_dir="$install_dir" #================================================= # PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Configuring PHP-FPM..." --weight=5 +ynh_script_progression "Configuring PHP-FPM..." -ynh_app_setting_set --app=$app --key=fpm_footprint --value=high -ynh_app_setting_set --app=$app --key=fpm_usage --value=medium -ynh_add_fpm_config +ynh_app_setting_set --key=fpm_footprint --value=high +ynh_app_setting_set --key=fpm_usage --value=medium +ynh_config_add_phpfpm #================================================= # NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Configuring NGINX web server..." --weight=2 +ynh_script_progression "Configuring NGINX web server..." # Check if .well-known is available for this domain if is_url_handled --domain="$domain" --path="/.well-known/caldav" || is_url_handled --domain="$domain" --path="/.well-known/carddav" then - ynh_print_warn --message="Another app already uses the domain $domain to serve a CalDAV/CardDAV feature. You may encounter issues when dealing with your calendar or address book." + ynh_print_warn "Another app already uses the domain $domain to serve a CalDAV/CardDAV feature. You may encounter issues when dealing with your calendar or address book." # Remove lines about .well-known/carddav and caldav with sed. sed --in-place --regexp-extended '/location = \/\.well\-known\/(caldav|carddav)/d' "../conf/nginx.conf" @@ -63,21 +62,21 @@ mkdir -p "$nginx_extra_conf_dir" if [ $enable_notify_push -eq 1 ] then - ynh_add_config --template="notify_push.conf" --destination="$nginx_extra_conf_dir/notify_push.conf" + ynh_config_add --template="notify_push.conf" --destination="$nginx_extra_conf_dir/notify_push.conf" fi # Create a dedicated NGINX config -ynh_add_nginx_config +ynh_config_add_nginx #================================================= # INSTALL NEXTCLOUD #================================================= -ynh_script_progression --message="Installing $app..." --weight=30 +ynh_script_progression "Installing $app..." # Define a function to execute commands with `occ` exec_occ() { - (cd "$install_dir" && ynh_exec_as "$app" \ - php${phpversion} --define apc.enable_cli=1 occ --no-interaction --no-ansi "$@") + (cd "$install_dir" && ynh_exec_as_app \ + php${php_version} --define apc.enable_cli=1 occ --no-interaction --no-ansi "$@") } # Set write access for the following commands @@ -95,12 +94,12 @@ exec_occ maintenance:install \ --database-user $db_user --database-pass "$db_pwd" \ --admin-user "admin" --admin-pass "$admin_password" \ --data-dir "$data_dir/data" \ - || ynh_die --message="Unable to install $app" + || ynh_die "Unable to install $app" #================================================= # CONFIGURE NEXTCLOUD #================================================= -ynh_script_progression --message="Configuring $app..." --weight=8 +ynh_script_progression "Configuring $app..." # Set the mysql.utf8mb4 config to true in config.php exec_occ config:system:set mysql.utf8mb4 --type boolean --value="true" @@ -117,29 +116,28 @@ exec_occ ldap:create-empty-config # Load the installation config file in Nextcloud nc_conf="$install_dir/config_install.json" -ynh_add_config --template="config_install.json" --destination="$nc_conf" +ynh_config_add --template="config_install.json" --destination="$nc_conf" exec_occ config:import "$nc_conf" # Then remove the config file -ynh_secure_remove --file="$nc_conf" +ynh_safe_rm "$nc_conf" # Load the additional config file (used also for upgrade) nc_conf="$install_dir/config.json" -ynh_add_config --template="config.json" --destination="$nc_conf" +ynh_config_add --template="config.json" --destination="$nc_conf" exec_occ config:import "$nc_conf" # Then remove the config file -ynh_secure_remove --file="$nc_conf" +ynh_safe_rm "$nc_conf" #================================================= # CHECK THE LDAP CONFIG #================================================= # Check LDAP configuration to see if everything worked well -exec_occ ldap:test-config '' \ - || ynh_die --message="An error occured during LDAP configuration" +exec_occ ldap:test-config '' || ynh_die "An error occured during LDAP configuration" #================================================= # MOUNT HOME FOLDERS AS EXTERNAL STORAGE @@ -153,7 +151,7 @@ create_external_storage() { local mount_id=`exec_occ files_external:create --output=json \ "$mount_name" 'local' 'null::null' -c "datadir=$mount_dir" || true` ! [[ $mount_id =~ ^[0-9]+$ ]] \ - && ynh_print_warn --message="Unable to create external storage" \ + && ynh_print_warn "Unable to create external storage" \ || exec_occ files_external:option "$mount_id" enable_sharing true } @@ -194,8 +192,8 @@ exec_occ config:system:set overwrite.cli.url --value="https://${domain}${path}" #================================================= # Set the user as admin -ynh_mysql_connect_as --user=$db_name --password="$db_pwd" --database=$db_name --default_character_set="utf8mb4" \ - <<< "INSERT INTO oc_group_user VALUES ('admin','$admin');" +ynh_mysql_db_shell <<< "INSERT INTO oc_group_user VALUES ('admin','$admin');" + # And delete admin user exec_occ user:delete admin @@ -210,7 +208,7 @@ exec_occ config:app:set dav system_addressbook_exposed --value="$system_addressb #================================================= # Calculate and store the config file checksum into the app settings -ynh_store_file_checksum --file="$install_dir/config/config.php" +ynh_store_file_checksum "$install_dir/config/config.php" #================================================= # CONFIGURE NOTIFY_PUSH APP @@ -227,20 +225,19 @@ then armel|armhf) arch="armv7";; esac - ynh_add_config --template="watcher.path" --destination="/etc/systemd/system/${app}-notify-push-watcher.path" - ynh_add_systemd_config --service="${app}-notify-push-watcher" --template="watcher.service" + ynh_config_add --template="watcher.path" --destination="/etc/systemd/system/${app}-notify-push-watcher.path" + ynh_config_add_systemd --service="${app}-notify-push-watcher" --template="watcher.service" systemctl enable --now --quiet ${app}-notify-push-watcher.path - ynh_add_systemd_config --service="${app}-notify-push" + ynh_config_add_systemd --service="${app}-notify-push" fi #================================================= # ADD A CRON JOB #================================================= -cron_path="/etc/cron.d/$app" -ynh_add_config --template="nextcloud.cron" --destination="$cron_path" -chown root: "$cron_path" -chmod 644 "$cron_path" +ynh_config_add --template="nextcloud.cron" --destination="/etc/cron.d/$app" +chown root: "/etc/cron.d/$app" +chmod 644 "/etc/cron.d/$app" exec_occ background:cron @@ -255,7 +252,7 @@ exec_occ db:convert-filecache-bigint -n #================================================= # YUNOHOST MULTIMEDIA INTEGRATION #================================================= -ynh_script_progression --message="Adding multimedia directories..." --weight=6 +ynh_script_progression "Adding multimedia directories..." # Build YunoHost multimedia directories ynh_multimedia_build_main_dir @@ -266,8 +263,6 @@ create_external_storage "/home/yunohost.multimedia/share" "Shared multimedia" # Allow nextcloud to write into these directories ynh_multimedia_addaccess $app -#================================================= -# GENERIC FINALIZATION #================================================= # SECURE FILES AND DIRECTORIES #================================================= @@ -286,18 +281,18 @@ chmod 750 $install_dir #================================================= # SETUP LOGROTATE #================================================= -ynh_script_progression --message="Configuring log rotation..." --weight=1 +ynh_script_progression "Configuring log rotation..." # Use logrotate to manage application logfile(s) -ynh_use_logrotate +ynh_config_add_logrotate #================================================= # SETUP FAIL2BAN #================================================= -ynh_script_progression --message="Configuring Fail2Ban..." --weight=8 +ynh_script_progression "Configuring Fail2Ban..." # Create a dedicated Fail2Ban config -ynh_add_fail2ban_config --logpath="/var/log/$app/nextcloud.log" --failregex="^.*Login failed: '.*' \(Remote IP: ''.*$" --max_retry=5 +ynh_config_add_fail2ban --logpath="/var/log/$app/nextcloud.log" --failregex="^.*Login failed: '.*' \(Remote IP: ''.*$" #================================================= # CHECK IF NOTIFY_PUSH WORKS @@ -306,17 +301,17 @@ ynh_add_fail2ban_config --logpath="/var/log/$app/nextcloud.log" --failregex="^.* if [ $enable_notify_push -eq 1 ] then count=0 - while ! ynh_exec_as "$app" php${phpversion} --define apc.enable_cli=1 $install_dir/cron.php && [[ $count -lt 30 ]] + while ! ynh_exec_as_app php${php_version} --define apc.enable_cli=1 $install_dir/cron.php && [[ $count -lt 30 ]] do sleep 1 count=$((count + 1)) done - ynh_systemd_action --service_name="${app}-notify-push-watcher" --action=restart - ynh_systemd_action --service_name="${app}-notify-push" --action=restart --line_match="Push daemon for Nextcloud clients." --log_path="systemd" - + ynh_systemctl --service="${app}-notify-push-watcher" --action=restart + ynh_systemctl --service="${app}-notify-push" --action=restart --wait_until="Push daemon for Nextcloud clients." --log_path="systemd" + if ! exec_occ notify_push:self-test; then - ynh_print_warn --message="The Notify Push service is still not working properly. Please log in with a user to your NextCloud instance, restart the Notify Push service with \"systemctl restart ${app}-notify-push.service\", and run \"sudo -u $app php${phpversion} $install_dir/occ notify_push:self-test\" to verify that everything is green." + ynh_print_warn "The Notify Push service is still not working properly. Please log in with a user to your NextCloud instance, restart the Notify Push service with \"systemctl restart ${app}-notify-push.service\", and run \"ynh_exec_as_app php${php_version} $install_dir/occ notify_push:self-test\" to verify that everything is green." fi fi @@ -324,4 +319,4 @@ fi # END OF SCRIPT #================================================= -ynh_script_progression --message="Installation of $app completed" --last +ynh_script_progression "Installation of $app completed" diff --git a/scripts/remove b/scripts/remove index 93a0e5f7..f7bb7cb2 100755 --- a/scripts/remove +++ b/scripts/remove @@ -6,32 +6,29 @@ source /usr/share/yunohost/helpers #================================================= # REMOVE SYSTEM CONFIGURATIONS #================================================= -ynh_script_progression --message="Removing system configurations related to $app..." --weight=5 +ynh_script_progression "Removing system configurations related to $app..." -# Remove the dedicated NGINX config -ynh_remove_nginx_config -ynh_secure_remove --file="/etc/nginx/conf.d/$domain.d/$app.d" +ynh_config_remove_nginx +ynh_safe_rm "/etc/nginx/conf.d/$domain.d/$app.d" -# Remove the dedicated PHP-FPM config -ynh_remove_fpm_config +ynh_config_remove_phpfpm -# Remove the app-specific logrotate config -ynh_remove_logrotate +ynh_config_remove_logrotate -# Remove the dedicated Fail2Ban config -ynh_remove_fail2ban_config +ynh_config_remove_fail2ban # Remove notify push if [ $enable_notify_push -eq 1 ]; then - ynh_remove_systemd_config --service="${app}-notify-push" + ynh_config_remove_systemd"${app}-notify-push" systemctl disable --now --quiet ${app}-notify-push-watcher.path - ynh_secure_remove --file="/etc/systemd/system/${app}-notify-push-watcher.path" - ynh_remove_systemd_config --service="${app}-notify-push-watcher" + ynh_safe_rm "/etc/systemd/system/${app}-notify-push-watcher.path" + ynh_config_remove_systemd"${app}-notify-push-watcher" + fi # Remove a cron file # TODO: Ensure that cron job is not running (How !?) -ynh_secure_remove --file="/etc/cron.d/$app" +ynh_safe_rm "/etc/cron.d/$app" # Cleaning ACL in home directories for path in /home/*; do @@ -44,4 +41,4 @@ done # END OF SCRIPT #================================================= -ynh_script_progression --message="Removal of $app completed" --last +ynh_script_progression "Removal of $app completed" diff --git a/scripts/restore b/scripts/restore index 6a0bf604..9be6e2b8 100755 --- a/scripts/restore +++ b/scripts/restore @@ -2,44 +2,43 @@ source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers -source ../settings/scripts/_ynh_mysql_connect_as.sh #================================================= # RESTORE THE APP MAIN DIR #================================================= -ynh_script_progression --message="Restoring the app main directory..." +ynh_script_progression "Restoring the app main directory..." -ynh_restore_file --origin_path="$install_dir" +ynh_restore "$install_dir" #================================================= # RESTORE THE MYSQL DATABASE #================================================= -ynh_script_progression --message="Restoring the MySQL database..." --weight=9 +ynh_script_progression "Restoring the MySQL database..." -ynh_mysql_connect_as --user=$db_name --password=$db_pwd --database=$db_name --default_character_set="utf8mb4" < ./db.sql +ynh_mysql_db_shell < ./db.sql #================================================= # RESTORE THE PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Reconfiguring PHP-FPM..." --weight=50 +ynh_script_progression "Reconfiguring PHP-FPM..." # Restore the file first, so it can have a backup if different -ynh_restore_file --origin_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" +ynh_restore "/etc/php/$php_version/fpm/pool.d/$app.conf" # Recreate a dedicated PHP-FPM config -ynh_add_fpm_config +ynh_config_add_phpfpm #================================================= # RESTORE THE NGINX CONFIGURATION #================================================= -ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" -ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.d" +ynh_restore "/etc/nginx/conf.d/$domain.d/$app.conf" +ynh_restore "/etc/nginx/conf.d/$domain.d/$app.d" # Check if .well-known is available for this domain if is_url_handled --domain="$domain" --path="/.well-known/caldav" || is_url_handled --domain="$domain" --path="/.well-known/carddav" then - ynh_print_warn --message="Another app already uses the domain $domain to serve a CalDAV/CardDAV feature. You may encounter issues when dealing with your calendar or address book." + ynh_print_warn "Another app already uses the domain $domain to serve a CalDAV/CardDAV feature. You may encounter issues when dealing with your calendar or address book." # Remove lines about .well-known/CardDAV and CalDAV with sed. sed --in-place --regexp-extended '/location = \/\.well\-known\/(caldav|carddav)/d' "/etc/nginx/conf.d/$domain.d/$app.conf" @@ -48,30 +47,29 @@ fi #================================================= # RESTORE THE CRON FILE #================================================= -ynh_script_progression --message="Restoring cron job..." --weight=1 +ynh_script_progression "Restoring cron job..." -ynh_restore_file --origin_path="/etc/cron.d/$app" +ynh_restore "/etc/cron.d/$app" #================================================= # RESTORE LOGS #================================================= -ynh_restore_file --origin_path="/var/log/$app" +ynh_restore "/var/log/$app" #================================================= # RESTORE THE LOGROTATE CONFIGURATION #================================================= -ynh_script_progression --message="Restoring the logrotate configuration..." --weight=1 +ynh_script_progression "Restoring the logrotate configuration..." -ynh_restore_file --origin_path="/etc/logrotate.d/$app" +ynh_restore "/etc/logrotate.d/$app" #================================================= # RESTORE THE DATA DIRECTORY #================================================= -ynh_script_progression --message="Restoring data directory..." --weight=2 +ynh_script_progression "Restoring data directory..." -# Use --not_mandatory for the data directory, because if the backup has been made with BACKUP_CORE_ONLY, there's no data into the backup. -ynh_restore_file --origin_path="$data_dir" --not_mandatory +ynh_restore "$data_dir" #================================================= # RESTORE USER RIGHTS @@ -98,7 +96,7 @@ done #================================================= # YUNOHOST MULTIMEDIA INTEGRATION #================================================= -ynh_script_progression --message="Adding multimedia directories..." --weight=4 +ynh_script_progression "Adding multimedia directories..." # Build YunoHost multimedia directories ynh_multimedia_build_main_dir @@ -108,10 +106,10 @@ ynh_multimedia_addaccess $app #================================================= # RESTORE THE FAIL2BAN CONFIGURATION #================================================= -ynh_script_progression --message="Restoring the Fail2Ban configuration..." --weight=7 +ynh_script_progression "Restoring the Fail2Ban configuration..." -ynh_restore_file --origin_path="/etc/fail2ban/jail.d/$app.conf" -ynh_restore_file --origin_path="/etc/fail2ban/filter.d/$app.conf" +ynh_restore "/etc/fail2ban/jail.d/$app.conf" +ynh_restore "/etc/fail2ban/filter.d/$app.conf" # Make sure a log file exists (mostly for CI tests) logfile="/var/log/$app/nextcloud.log" @@ -120,7 +118,7 @@ if [ ! -f "$logfile" ]; then chown "$app:" "$logfile" fi -ynh_systemd_action --action=restart --service_name=fail2ban +ynh_systemctl --action=restart --service=fail2ban #================================================= # RESTORE THE NOTIFY_PUSH APP @@ -128,9 +126,9 @@ ynh_systemd_action --action=restart --service_name=fail2ban if [ $enable_notify_push -eq 1 ] then - ynh_restore_file --origin_path="/etc/systemd/system/${app}-notify-push.service" - ynh_restore_file --origin_path="/etc/systemd/system/${app}-notify-push-watcher.service" - ynh_restore_file --origin_path="/etc/systemd/system/${app}-notify-push-watcher.path" + ynh_restore "/etc/systemd/system/${app}-notify-push.service" + ynh_restore "/etc/systemd/system/${app}-notify-push-watcher.service" + ynh_restore "/etc/systemd/system/${app}-notify-push-watcher.path" systemctl enable --now "${app}-notify-push-watcher.service" --quiet systemctl enable --now "${app}-notify-push-watcher.path" --quiet @@ -140,33 +138,33 @@ fi #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading NGINX web server..." --weight=3 +ynh_script_progression "Reloading NGINX web server..." -ynh_systemd_action --service_name=nginx --action=reload +ynh_systemctl --service=nginx --action=reload #================================================= # CHECK IF NOTIFY_PUSH WORKS #================================================= exec_occ() { - (cd "$install_dir" && ynh_exec_as "$app" \ - php${phpversion} --define apc.enable_cli=1 occ --no-interaction --no-ansi "$@") + (cd "$install_dir" && ynh_exec_as_app \ + php${php_version} --define apc.enable_cli=1 occ --no-interaction --no-ansi "$@") } if [ $enable_notify_push -eq 1 ] then count=0 - while ! ynh_exec_as "$app" php${phpversion} --define apc.enable_cli=1 $install_dir/cron.php && [[ $count -lt 30 ]] + while ! ynh_exec_as_app php${php_version} --define apc.enable_cli=1 $install_dir/cron.php && [[ $count -lt 30 ]] do sleep 1 count=$((count + 1)) done - ynh_systemd_action --service_name="${app}-notify-push-watcher" --action=restart - ynh_systemd_action --service_name="${app}-notify-push" --action=restart --line_match="Push daemon for Nextcloud clients." --log_path="systemd" --action=restart - + ynh_systemctl --service="${app}-notify-push-watcher" --action=restart + ynh_systemctl --service="${app}-notify-push" --action=restart --wait_until="Push daemon for Nextcloud clients." --log_path="systemd" --action=restart + if ! exec_occ notify_push:self-test; then - ynh_print_warn --message="The Notify Push service is still not working properly. Please log in with a user to your NextCloud instance, restart the Notify Push service with \"systemctl restart ${app}-notify-push.service\", and run \"sudo -u $app php${phpversion} $install_dir/occ notify_push:self-test\" to verify that everything is green." + ynh_print_warn "The Notify Push service is still not working properly. Please log in with a user to your NextCloud instance, restart the Notify Push service with \"systemctl restart ${app}-notify-push.service\", and run \"ynh_exec_as_app php${php_version} $install_dir/occ notify_push:self-test\" to verify that everything is green." fi fi @@ -174,4 +172,4 @@ fi # END OF SCRIPT #================================================= -ynh_script_progression --message="Restoration completed for $app" --last +ynh_script_progression "Restoration completed for $app" diff --git a/scripts/upgrade b/scripts/upgrade index b28f0e94..dcab5362 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -3,41 +3,42 @@ source _common.sh source /usr/share/yunohost/helpers -upgrade_type=$(ynh_check_app_version_changed) +ynh_app_setting_set_default --key=php_upload_max_filesize --value=10G +ynh_app_setting_set_default --key=php_memory_limit --value=512M #================================================= # ENSURE DOWNWARD COMPATIBILITY #================================================= -ynh_script_progression --message="Ensuring downward compatibility..." +ynh_script_progression "Ensuring downward compatibility..." if [ -z ${system_addressbook_exposed:-} ]; then - ynh_app_setting_set --app=$app --key=system_addressbook_exposed --value=0 + ynh_app_setting_set --key=system_addressbook_exposed --value=0 system_addressbook_exposed=0 fi # Fix system_addressbook_exposed as a boolean if [ "${system_addressbook_exposed,,}" = "yes" ]; then - ynh_app_setting_set --app=$app --key=system_addressbook_exposed --value=1 + ynh_app_setting_set --key=system_addressbook_exposed --value=1 system_addressbook_exposed=1 elif [ "${system_addressbook_exposed,,}" = "no" ]; then - ynh_app_setting_set --app=$app --key=system_addressbook_exposed --value=0 + ynh_app_setting_set --key=system_addressbook_exposed --value=0 system_addressbook_exposed=0 fi if [ -z ${enable_notify_push:-} ]; then - ynh_app_setting_set --app=$app --key=enable_notify_push --value=0 + ynh_app_setting_set --key=enable_notify_push --value=0 enable_notify_push=0 fi # Remove the option backup_core_only if it's in the settings.yml file -ynh_app_setting_delete --app=$app --key=backup_core_only +ynh_app_setting_delete --key=backup_core_only phpflags="--define apc.enable_cli=1" -ynh_app_setting_set --app=$app --key=phpflags --value="$phpflags" +ynh_app_setting_set --key=phpflags --value="$phpflags" -if ynh_compare_current_package_version --comparison lt --version 22.2~ynh1 +if ynh_app_upgrading_from_version_before 22.2~ynh1 then - ynh_die --message="Upgrading from Nextcloud < 22.2 is not supported anymore. You should first upgrade to 22.2 using: yunohost app upgrade nextcloud -u https://github.com/YunoHost-Apps/nextcloud_ynh/tree/41f5f902e7c7cd3c30a6793020562ba98b9bf3e9" + ynh_die "Upgrading from Nextcloud < 22.2 is not supported anymore. You should first upgrade to 22.2 using: yunohost app upgrade nextcloud -u https://github.com/YunoHost-Apps/nextcloud_ynh/tree/41f5f902e7c7cd3c30a6793020562ba98b9bf3e9" fi #================================================= @@ -69,19 +70,20 @@ exec_occ() { NEXTCLOUD_PHP_VERSION="7.4" fi - # NB : be super careful when designing this part of the code, because calling ynh_install_app_dependencies - # will do magic regarding php configuration and $phpversion when the php version of the dependencies changes ... - phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) - if [[ "$NEXTCLOUD_PHP_VERSION" != "$phpversion" ]]; then + # NB: be super careful when designing this part of the code, because calling ynh_apt_install_dependencies + # will do magic regarding php configuration and $php_version when the php version of the dependencies changes ... + php_version=$(ynh_app_setting_get --key=php_version) + if [[ "$NEXTCLOUD_PHP_VERSION" != "$php_version" ]]; then local pkg_dependencies="$(dpkg-query --show --showformat='${Depends}' ${app}-ynh-deps)" - pkg_dependencies="${pkg_dependencies//$phpversion/$NEXTCLOUD_PHP_VERSION}" - # Packaging v1 ~legacy : ynh_install_app_dependencies is designed to be called several times + pkg_dependencies="${pkg_dependencies//$php_version/$NEXTCLOUD_PHP_VERSION}" + # Packaging v1 ~legacy : ynh_apt_install_dependencies is designed to be called several times # but the second time it will *append* the list of dependencies rather than replace the existing dependencies # resulting in a crash when parsing what's the php version the app uses, hence we need to force the full-replacement YNH_INSTALL_APP_DEPENDENCIES_REPLACE=true - ynh_install_app_dependencies "$pkg_dependencies" + ynh_apt_install_dependencies "$pkg_dependencies" fi -(cd "$install_dir" && ynh_exec_as "$app" \ + +(cd "$install_dir" && ynh_exec_as_app \ php$NEXTCLOUD_PHP_VERSION --define apc.enable_cli=1 occ --no-interaction --no-ansi "$@") 2> >(filter_boring_occ_warnings >&2) } @@ -93,7 +95,7 @@ create_external_storage() { local mount_id=$(exec_occ files_external:create --output=json \ "$mount_name" 'local' 'null::null' -c "datadir=$mount_dir" || true) ! [[ $mount_id =~ ^[0-9]+$ ]] \ - && ynh_print_warn --message="Unable to create external storage" \ + && ynh_print_warn "Unable to create external storage" \ || exec_occ files_external:option "$mount_id" enable_sharing true } @@ -120,11 +122,10 @@ function list_installed_apps_not_compatible_with_future_version() comm -23 <(comm -23 $installed_apps $core_apps_in_current_version) $nextcloud_destination_appcatalog } - current_version=$(grep OC_VersionString "$install_dir/version.php" | cut -d\' -f2) current_major_version=${current_version%%.*} -last_version=$(ynh_read_manifest --manifest_key="resources.sources.main.url" | grep -Eo '[0-9][0-9]\.[0-9]\.[0-9]+') +last_version=$(ynh_read_manifest "resources.sources.main.url" | grep -Eo '[0-9][0-9]\.[0-9]\.[0-9]+') last_major_version=${last_version%%.*} if [[ "$last_major_version" != "$current_major_version" ]] @@ -132,25 +133,24 @@ then installed_apps_not_compatible_with_future_version="$(list_installed_apps_not_compatible_with_future_version $last_major_version)" if [[ -n "$installed_apps_not_compatible_with_future_version" ]] then - ynh_die --message="The following apps are not (yet?) compatible with Nextcloud $last_major_version. You should make sure to upgrade the app, or disable it, or wait for it to become compatible before running this upgrade : $installed_apps_not_compatible_with_future_version" + ynh_die "The following apps are not (yet?) compatible with Nextcloud $last_major_version. You should make sure to upgrade the app, or disable it, or wait for it to become compatible before running this upgrade : $installed_apps_not_compatible_with_future_version" fi fi -if [ "$upgrade_type" == "UPGRADE_APP" ] +# FIXME: this is still supported but the recommendation is now to *always* re-setup the app sources wether or not the upstream sources changed +if ynh_app_upstream_version_changed then - ynh_script_progression --message="Upgrading $app..." --weight=3 + ynh_script_progression "Upgrading $app..." # Set write access for the following commands chown -R $app:www-data "$install_dir" - # Print the current version number of Nextcloud exec_occ -V if [ "$(exec_occ config:system:get mysql.utf8mb4)" != "true" ]; then - db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd) + db_pwd=$(ynh_app_setting_get --key=db_pwd) # Change your databases character set and collation - ynh_mysql_connect_as --user=$db_user --password="$db_pwd" --database=$db_name \ - <<< "ALTER DATABASE $db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;" + ynh_mysql_db_shell <<< "ALTER DATABASE $db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;" # Set the mysql.utf8mb4 config to true in config.php exec_occ config:system:set mysql.utf8mb4 --type boolean --value="true" exec_occ maintenance:repair @@ -172,11 +172,10 @@ then next_major_version="$(( $current_major_version + 1 ))" if [[ "$next_major_version" -ge "$last_major_version" ]]; then - ynh_print_info --message="Upgrading to Nextcloud $last_version" - cp -a ../sources/patches_last_version/* ../sources/patches + ynh_print_info "Upgrading to Nextcloud $last_version" source_id="main" else - ynh_print_info --message="Upgrading to Nextcloud $next_major_version" + ynh_print_info "Upgrading to Nextcloud $next_major_version" source_id="$next_major_version" fi @@ -206,16 +205,14 @@ then ) # Replace the old Nextcloud by the new one - ynh_secure_remove --file="$install_dir" + ynh_safe_rm "$install_dir" mv "$tmpdir" "$install_dir" # Set write access for the following commands chown -R $app:www-data "$install_dir" - # Upgrade Nextcloud (SUCCESS = 0, UP_TO_DATE = 3) exec_occ maintenance:mode --off - exec_occ upgrade \ - || [ $? -eq 3 ] || ynh_die --message="Unable to upgrade $app" + exec_occ upgrade || [ $? -eq 3 ] || ynh_die "Unable to upgrade $app" # Get the new current version number current_version=$(grep OC_VersionString "$install_dir/version.php" | cut -d\' -f2) @@ -233,13 +230,13 @@ then #================================================= # CONFIGURE NEXTCLOUD #================================================= - ynh_script_progression --message="Reconfiguring $app..." --weight=9 + ynh_script_progression "Reconfiguring $app..." # Verify the checksum and backup the file if it's different - ynh_backup_if_checksum_is_different --file="$install_dir/config/config.php" + ynh_backup_if_checksum_is_different "$install_dir/config/config.php" nc_conf="${install_dir}/config.json" - ynh_add_config --template="config.json" --destination="$nc_conf" + ynh_config_add --template="config.json" --destination="$nc_conf" # Reneable the mail app if [ $mail_app_must_be_reactived -eq 1 ]; then @@ -270,7 +267,7 @@ then exec_occ config:import "$nc_conf" # Then remove the config file - ynh_secure_remove --file="$nc_conf" + ynh_safe_rm "$nc_conf" #================================================= # ALLOW USERS TO DISCONNECT FROM NEXTCLOUD @@ -318,13 +315,13 @@ then #================================================= # Calculate and store the config file checksum into the app settings - ynh_store_file_checksum --file="${install_dir}/config/config.php" + ynh_store_file_checksum "${install_dir}/config/config.php" fi #================================================= # REGEN PERMISSIONS #================================================= -ynh_script_progression --message="Reapplying file permissions..." --weight=2 +ynh_script_progression "Reapplying file permissions..." # Fix app ownerships & permissions chown -R $app:www-data "$install_dir" @@ -337,32 +334,32 @@ chmod 750 $install_dir #================================================= # REGEN SYSTEM CONFIGURATIONS #================================================= -ynh_script_progression --message="Regenerating system configurations for $app..." --weight=2 +ynh_script_progression "Regenerating system configurations for $app..." #------------------------------------------------- # PHP-FPM #------------------------------------------------- -ynh_add_fpm_config +ynh_config_add_phpfpm #------------------------------------------------- # NGINX #------------------------------------------------- # Delete current NGINX configuration to be able to check if .well-known is already served. -ynh_backup_if_checksum_is_different --file="/etc/nginx/conf.d/$domain.d/$app.conf" -ynh_remove_nginx_config -ynh_app_setting_delete --app=$app --key="checksum__etc_nginx_conf.d_$domain.d_$app.conf" +ynh_backup_if_checksum_is_different "/etc/nginx/conf.d/$domain.d/$app.conf" +ynh_config_remove_nginx +ynh_app_setting_delete --key="checksum__etc_nginx_conf.d_$domain.d_$app.conf" # Wait untils NGINX has fully reloaded -ynh_systemd_action --service_name=nginx --action=reload --line_match="Reloaded" --log_path="systemd" +ynh_systemctl --service=nginx --action=reload --wait_until="Reloaded" --log_path="systemd" wait_nginx_reload # Check if .well-known is available for this domain if is_url_handled --domain="$domain" --path="/.well-known/caldav" || is_url_handled --domain="$domain" --path="/.well-known/carddav" then - ynh_print_warn --message="Another app already uses the domain $domain to serve a CalDAV/CardDAV feature. You may encounter issues when dealing with your calendar or address book." + ynh_print_warn "Another app already uses the domain $domain to serve a CalDAV/CardDAV feature. You may encounter issues when dealing with your calendar or address book." # Remove lines about .well-known/carddav and caldav with sed. sed --in-place --regexp-extended '/location = \/\.well\-known\/(caldav|carddav)/d' "../conf/nginx.conf" @@ -374,11 +371,11 @@ mkdir -p "$nginx_extra_conf_dir" if [ $enable_notify_push -eq 1 ] then - ynh_add_config --template="notify_push.conf" --destination="$nginx_extra_conf_dir/notify_push.conf" + ynh_config_add --template="notify_push.conf" --destination="$nginx_extra_conf_dir/notify_push.conf" fi # Create a dedicated NGINX config -ynh_add_nginx_config +ynh_config_add_nginx #================================================= # CONFIGURE NOTIFY_PUSH APP @@ -401,21 +398,19 @@ then armel|armhf) arch="armv7";; esac - ynh_add_config --template="watcher.path" --destination="/etc/systemd/system/${app}-notify-push-watcher.path" - ynh_add_systemd_config --service="${app}-notify-push-watcher" --template="watcher.service" + ynh_config_add --template="watcher.path" --destination="/etc/systemd/system/${app}-notify-push-watcher.path" + ynh_config_add_systemd --service="${app}-notify-push-watcher" --template="watcher.service" systemctl enable --now --quiet ${app}-notify-push-watcher.path - ynh_add_systemd_config --service="${app}-notify-push" + ynh_config_add_systemd --service="${app}-notify-push" fi - #================================================= # CRON JOB #================================================= -cron_path="/etc/cron.d/$app" -ynh_add_config --template="nextcloud.cron" --destination="$cron_path" -chown root: "$cron_path" -chmod 644 "$cron_path" +ynh_config_add --template="nextcloud.cron" --destination="/etc/cron.d/$app" +chown root: "/etc/cron.d/$app" +chmod 644 "/etc/cron.d/$app" exec_occ background:cron @@ -423,14 +418,14 @@ exec_occ background:cron # LOGROTATE #================================================= -ynh_use_logrotate --non-append +ynh_config_add_logrotate #================================================= # FAIL2BAN #================================================= # Create a dedicated Fail2Ban config -ynh_add_fail2ban_config --logpath="/var/log/$app/nextcloud.log" --failregex="^.*Login failed: '.*' \(Remote IP: ''.*$" --max_retry=5 +ynh_config_add_fail2ban --logpath="/var/log/$app/nextcloud.log" --failregex="^.*Login failed: '.*' \(Remote IP: ''.*$" #================================================= # CHECK IF NOTIFY_PUSH WORKS @@ -439,17 +434,17 @@ ynh_add_fail2ban_config --logpath="/var/log/$app/nextcloud.log" --failregex="^.* if [ $enable_notify_push -eq 1 ] then count=0 - while ! ynh_exec_as "$app" php${phpversion} --define apc.enable_cli=1 $install_dir/cron.php && [[ $count -lt 30 ]] + while ! ynh_exec_as_app php${php_version} --define apc.enable_cli=1 $install_dir/cron.php && [[ $count -lt 30 ]] do sleep 1 count=$((count + 1)) done - ynh_systemd_action --service_name="${app}-notify-push-watcher" --action=restart - ynh_systemd_action --service_name="${app}-notify-push" --action=restart --line_match="Push daemon for Nextcloud clients." --log_path="systemd" --action=restart + ynh_systemctl --service="${app}-notify-push-watcher" --action=restart + ynh_systemctl --service="${app}-notify-push" --action=restart --wait_until="Push daemon for Nextcloud clients." --log_path="systemd" --action=restart if ! exec_occ notify_push:self-test; then - ynh_print_warn --message="The Notify Push service is still not working properly. Please log in with a user to your NextCloud instance, restart the Notify Push service with \"systemctl restart ${app}-notify-push.service\", and run \"sudo -u $app php${phpversion} $install_dir/occ notify_push:self-test\" to verify that everything is green." + ynh_print_warn "The Notify Push service is still not working properly. Please log in with a user to your NextCloud instance, restart the Notify Push service with \"systemctl restart ${app}-notify-push.service\", and run \"ynh_exec_as_app php${php_version} $install_dir/occ notify_push:self-test\" to verify that everything is green." fi fi @@ -457,4 +452,4 @@ fi # END OF SCRIPT #================================================= -ynh_script_progression --message="Upgrade of $app completed" --last +ynh_script_progression "Upgrade of $app completed" diff --git a/sources/patches/.gitignore b/sources/patches/.gitignore deleted file mode 100644 index e69de29b..00000000 From b4a983491bddb4a6a646bc09b8d35820becc5219 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Wed, 11 Dec 2024 14:59:50 +0100 Subject: [PATCH 56/74] cleaning --- scripts/change_url | 4 ---- scripts/install | 27 ++++++++++++--------------- 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/scripts/change_url b/scripts/change_url index 6b1208ef..509b92dc 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -1,9 +1,5 @@ #!/bin/bash -#================================================= -# IMPORT GENERIC HELPERS -#================================================= - source _common.sh source /usr/share/yunohost/helpers diff --git a/scripts/install b/scripts/install index 47ec0e1b..cd270cc0 100755 --- a/scripts/install +++ b/scripts/install @@ -3,13 +3,16 @@ source _common.sh source /usr/share/yunohost/helpers -ynh_app_setting_set --key=php_upload_max_filesize --value=10G -ynh_app_setting_set --key=php_memory_limit --value=512M - #================================================= # INITIALIZE AND STORE SETTINGS #================================================= +ynh_app_setting_set --key=php_upload_max_filesize --value=10G +ynh_app_setting_set --key=php_memory_limit --value=512M + +ynh_app_setting_set --key=fpm_footprint --value=high +ynh_app_setting_set --key=fpm_usage --value=medium + phpflags="--define apc.enable_cli=1" ynh_app_setting_set --key=phpflags --value="$phpflags" @@ -31,7 +34,6 @@ ynh_mysql_db_shell <<< "ALTER DATABASE $db_name CHARACTER SET utf8mb4 COLLATE ut #================================================= ynh_script_progression "Setting up source files..." -# Download, check integrity, uncompress and patch the source from app.src ynh_setup_source --dest_dir="$install_dir" #================================================= @@ -39,8 +41,6 @@ ynh_setup_source --dest_dir="$install_dir" #================================================= ynh_script_progression "Configuring PHP-FPM..." -ynh_app_setting_set --key=fpm_footprint --value=high -ynh_app_setting_set --key=fpm_usage --value=medium ynh_config_add_phpfpm #================================================= @@ -65,7 +65,6 @@ then ynh_config_add --template="notify_push.conf" --destination="$nginx_extra_conf_dir/notify_push.conf" fi -# Create a dedicated NGINX config ynh_config_add_nginx #================================================= @@ -115,22 +114,20 @@ exec_occ app:enable user_ldap exec_occ ldap:create-empty-config # Load the installation config file in Nextcloud -nc_conf="$install_dir/config_install.json" -ynh_config_add --template="config_install.json" --destination="$nc_conf" +ynh_config_add --template="config_install.json" --destination="$install_dir/config_install.json" -exec_occ config:import "$nc_conf" +exec_occ config:import "$install_dir/config_install.json" # Then remove the config file -ynh_safe_rm "$nc_conf" +ynh_safe_rm "$install_dir/config_install.json" # Load the additional config file (used also for upgrade) -nc_conf="$install_dir/config.json" -ynh_config_add --template="config.json" --destination="$nc_conf" +ynh_config_add --template="config.json" --destination="$install_dir/config.json" -exec_occ config:import "$nc_conf" +exec_occ config:import "$install_dir/config.json" # Then remove the config file -ynh_safe_rm "$nc_conf" +ynh_safe_rm "$install_dir/config.json" #================================================= # CHECK THE LDAP CONFIG From ddbd0d2e2fff6577d1338bef723d95e9f8ab8d0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Wed, 11 Dec 2024 17:31:59 +0100 Subject: [PATCH 57/74] Fix linter --- conf/systemd.service | 40 +++++++++++++++++++++++++++++++++++++--- conf/watcher.service | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 3 deletions(-) diff --git a/conf/systemd.service b/conf/systemd.service index bbe65732..54bd669c 100644 --- a/conf/systemd.service +++ b/conf/systemd.service @@ -2,13 +2,47 @@ Description = Push daemon for Nextcloud clients [Service] +Type=notify +User=__APP__ +Group=__APP__ Environment=SOCKET_PATH=/var/run/__APP__/notify-push.sock Environment=ALLOW_SELF_SIGNED=true RuntimeDirectory=__APP__ ExecStart=__INSTALL_DIR__/apps/notify_push/bin/__ARCH__/notify_push __INSTALL_DIR__/config/config.php -Type=notify -User=__APP__ -Group=__APP__ + +### Depending on specificities of your service/app, you may need to tweak these +### .. but this should be a good baseline +# Sandboxing options to harden security +# 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 AF_NETLINK +RestrictNamespaces=yes +RestrictRealtime=yes +DevicePolicy=closed +ProtectClock=yes +ProtectHostname=yes +ProtectProc=invisible +ProtectSystem=full +ProtectControlGroups=yes +ProtectKernelModules=yes +ProtectKernelTunables=yes +LockPersonality=yes +SystemCallArchitectures=native +SystemCallFilter=~@clock @debug @module @mount @obsolete @reboot @setuid @swap @cpu-emulation @privileged + +# 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 \ No newline at end of file diff --git a/conf/watcher.service b/conf/watcher.service index e2d9cfdf..5c7670c0 100644 --- a/conf/watcher.service +++ b/conf/watcher.service @@ -8,8 +8,43 @@ StartLimitBurst=5 [Service] Type=oneshot +User=__APP__ ExecStartPre=/usr/bin/chmod u+x __INSTALL_DIR__/apps/notify_push/bin/__ARCH__/notify_push ExecStart=/usr/bin/systemctl restart __APP__-notify-push.service +### Depending on specificities of your service/app, you may need to tweak these +### .. but this should be a good baseline +# Sandboxing options to harden security +# 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 AF_NETLINK +RestrictNamespaces=yes +RestrictRealtime=yes +DevicePolicy=closed +ProtectClock=yes +ProtectHostname=yes +ProtectProc=invisible +ProtectSystem=full +ProtectControlGroups=yes +ProtectKernelModules=yes +ProtectKernelTunables=yes +LockPersonality=yes +SystemCallArchitectures=native +SystemCallFilter=~@clock @debug @module @mount @obsolete @reboot @setuid @swap @cpu-emulation @privileged + +# 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 \ No newline at end of file From 7a3de9382a1ba410e2a381de8ebb1f828e790a38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Wed, 11 Dec 2024 22:05:33 +0100 Subject: [PATCH 58/74] Update nginx.conf --- conf/nginx.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/nginx.conf b/conf/nginx.conf index b8bf1772..81c0bf46 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -147,7 +147,7 @@ location ^~ __PATH__/ { } } - location ~ \.woff2?$ { + location ~ \.(otf|woff2?)$ { try_files $uri / __PATH__/index.php$request_uri; expires 7d; # Cache-Control policy borrowed from `.htaccess` access_log off; # Optional: Don't log access to assets From 7bd9ff879f2a4227057c0e7f30bff827f2614ba9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Wed, 11 Dec 2024 22:09:13 +0100 Subject: [PATCH 59/74] Update nginx.conf --- conf/nginx.conf | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/conf/nginx.conf b/conf/nginx.conf index 81c0bf46..1c59b25e 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -137,13 +137,10 @@ location ^~ __PATH__/ { } # Serve static files - location ~ \.(?:css|js|mjs|svg|gif|png|jpg|ico|wasm|tflite|map)$ { + location ~ \.(?:css|js|mjs|svg|gif|ico|jpg|png|webp|wasm|tflite|map|ogg|flac)$ { try_files $uri / __PATH__/index.php$request_uri; expires 6M; # Cache-Control policy borrowed from `.htaccess` access_log off; # Optional: Don't log access to assets - - location ~ \.wasm$ { - default_type application/wasm; } } @@ -166,7 +163,4 @@ location ^~ __PATH__/ { } include conf.d/__DOMAIN__.d/__APP__.d/*.conf; - - # show YunoHost panel access - include conf.d/yunohost_panel.conf.inc; } From 9de599d1559261eb6c6f05ca0dd05fe5be9e90cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Wed, 11 Dec 2024 22:23:31 +0100 Subject: [PATCH 60/74] Update nginx.conf --- conf/nginx.conf | 1 - 1 file changed, 1 deletion(-) diff --git a/conf/nginx.conf b/conf/nginx.conf index 1c59b25e..3652c5c1 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -141,7 +141,6 @@ location ^~ __PATH__/ { try_files $uri / __PATH__/index.php$request_uri; expires 6M; # Cache-Control policy borrowed from `.htaccess` access_log off; # Optional: Don't log access to assets - } } location ~ \.(otf|woff2?)$ { From 125789f219be891aee4a82a437e9b1997879ae10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Wed, 11 Dec 2024 22:26:29 +0100 Subject: [PATCH 61/74] Update nginx.conf --- conf/nginx.conf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/conf/nginx.conf b/conf/nginx.conf index 3652c5c1..dba5515c 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -131,10 +131,10 @@ location ^~ __PATH__/ { send_timeout 600; } - location ~ ^__PATH__/(?:updater|ocs-provider)(?:$|/) { - try_files $uri/ =404; - index index.php; - } + #location ~ ^__PATH__/(?:updater|ocs-provider)(?:$|/) { + # try_files $uri/ =404; + # index index.php; + #} # Serve static files location ~ \.(?:css|js|mjs|svg|gif|ico|jpg|png|webp|wasm|tflite|map|ogg|flac)$ { From 3acdd4eb2e2b68d04cae27366b2fb6618323741e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Wed, 11 Dec 2024 22:28:16 +0100 Subject: [PATCH 62/74] Update nginx.conf --- conf/nginx.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/nginx.conf b/conf/nginx.conf index dba5515c..3ac2e877 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -154,7 +154,7 @@ location ^~ __PATH__/ { return 301 __PATH__/remote.php$request_uri; } - location ~ / { + location ~ __PATH__/ { if ($request_method ~ ^(PUT|DELETE|PATCH|PROPFIND|PROPPATCH)$) { rewrite ^ __PATH__/index.php$request_uri last; } From e0a2903dad66283e3e5d485f367bd11e0514f57c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Wed, 11 Dec 2024 23:09:38 +0100 Subject: [PATCH 63/74] Update nginx.conf --- conf/nginx.conf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/conf/nginx.conf b/conf/nginx.conf index 3ac2e877..17a9355c 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -150,11 +150,11 @@ location ^~ __PATH__/ { } # Rule borrowed from `.htaccess` - location __PATH__/remote { - return 301 __PATH__/remote.php$request_uri; - } + location __PATH__/remote { + return 301 __PATH__/remote.php$request_uri; + } - location ~ __PATH__/ { + location __PATH__/ { if ($request_method ~ ^(PUT|DELETE|PATCH|PROPFIND|PROPPATCH)$) { rewrite ^ __PATH__/index.php$request_uri last; } From 6fa35e078fc24ce83284eeaf7685d85c285568e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Wed, 11 Dec 2024 23:13:14 +0100 Subject: [PATCH 64/74] Update nginx.conf --- conf/nginx.conf | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/conf/nginx.conf b/conf/nginx.conf index 17a9355c..876e818b 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -141,6 +141,10 @@ location ^~ __PATH__/ { try_files $uri / __PATH__/index.php$request_uri; expires 6M; # Cache-Control policy borrowed from `.htaccess` access_log off; # Optional: Don't log access to assets + + location ~ \.wasm$ { + default_type application/wasm; + } } location ~ \.(otf|woff2?)$ { From 27a0f35cb5cba6b646a9f7d9ccbf6ddd31c07919 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Wed, 11 Dec 2024 23:17:37 +0100 Subject: [PATCH 65/74] Update nginx.conf --- conf/nginx.conf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/conf/nginx.conf b/conf/nginx.conf index 876e818b..cfc4265e 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -131,10 +131,10 @@ location ^~ __PATH__/ { send_timeout 600; } - #location ~ ^__PATH__/(?:updater|ocs-provider)(?:$|/) { - # try_files $uri/ =404; - # index index.php; - #} + location ~ ^__PATH__/(?:updater|ocs-provider)(?:$|/) { + try_files $uri/ =404; + index index.php; + } # Serve static files location ~ \.(?:css|js|mjs|svg|gif|ico|jpg|png|webp|wasm|tflite|map|ogg|flac)$ { From 3792e6ae42495e126f797151832a62cf2e6ca1ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Wed, 11 Dec 2024 23:18:25 +0100 Subject: [PATCH 66/74] Update nginx.conf --- conf/nginx.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/nginx.conf b/conf/nginx.conf index cfc4265e..c355e126 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -158,7 +158,7 @@ location ^~ __PATH__/ { return 301 __PATH__/remote.php$request_uri; } - location __PATH__/ { + location ~ ^__PATH__/ { if ($request_method ~ ^(PUT|DELETE|PATCH|PROPFIND|PROPPATCH)$) { rewrite ^ __PATH__/index.php$request_uri last; } From 0de16ba121322cbee5f0e1e45bd3069ca3165499 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Wed, 11 Dec 2024 23:27:26 +0100 Subject: [PATCH 67/74] Update nginx.conf --- conf/nginx.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/nginx.conf b/conf/nginx.conf index c355e126..8edb5581 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -74,7 +74,7 @@ location ^~ __PATH__/ { # that file is correctly served; if it doesn't, then the request is passed to # the front-end controller. This consistent behaviour means that we don't need # to specify custom rules for certain paths (e.g. images and other assets, - # `/updater`, `/ocm-provider`, `/ocs-provider`), and thus + # `/updater`, `/ocs-provider`), and thus # `try_files $uri $uri/ /nextcloud/index.php$request_uri` # always provides the desired behaviour. index index.php index.html __PATH__/index.php$request_uri; From 8bc0cff0c15a3353d6eba2e953fd8b371e6756e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Thu, 12 Dec 2024 12:47:10 +0100 Subject: [PATCH 68/74] Update manifest.toml --- manifest.toml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/manifest.toml b/manifest.toml index 7a796b21..c11eb993 100644 --- a/manifest.toml +++ b/manifest.toml @@ -5,7 +5,7 @@ name = "Nextcloud" description.en = "Online storage, file sharing platform and various other applications" description.fr = "Stockage en ligne, plateforme de partage de fichiers et diverses autres applications" -version = "30.0.2~ynh1" +version = "30.0.4~ynh1" maintainers = ["kay0u"] @@ -59,8 +59,8 @@ ram.runtime = "512M" [resources.sources] [resources.sources.main] - url = 'https://download.nextcloud.com/server/releases/nextcloud-30.0.2.tar.bz2' - sha256 = '929bb8045e96216fe22a65dcd66279e5bd7ba1abb29d99bf401d423b646a445f' + url = 'https://download.nextcloud.com/server/releases/nextcloud-30.0.4.tar.bz2' + sha256 = 'eb6aaba9acef442f2b3e4a996b7ee8a5ed24442f9bba681237fb28ed970e1fa5' [resources.sources.29] url = 'https://download.nextcloud.com/server/releases/nextcloud-29.0.10.tar.bz2' @@ -68,8 +68,8 @@ ram.runtime = "512M" prefetch = false [resources.sources.28] - url = 'https://download.nextcloud.com/server/releases/nextcloud-28.0.12.tar.bz2' - sha256 = '2a00ca4f799360f0987fcbc85d99b2c258f7d2ccf7e6f7e0c4ccf17a127f0105' + url = 'https://download.nextcloud.com/server/releases/nextcloud-28.0.14.tar.bz2' + sha256 = '4a937f1882486426c9703e59ec4b293f621be8d080b7f85016f629903c3af336' prefetch = false [resources.sources.27] From 2e9a4c3b3052f0b623db9219e3fce8e19897d0e7 Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Thu, 12 Dec 2024 12:47:15 +0100 Subject: [PATCH 69/74] Auto-update READMEs --- README.md | 2 +- README_es.md | 2 +- README_eu.md | 2 +- README_fr.md | 2 +- README_gl.md | 2 +- README_id.md | 2 +- README_nl.md | 2 +- README_pl.md | 2 +- README_ru.md | 2 +- README_zh_Hans.md | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index f645d760..f9e03051 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Shipped version:** 30.0.2~ynh1 +**Shipped version:** 30.0.4~ynh1 **Demo:** diff --git a/README_es.md b/README_es.md index 7dd382f9..19fc4b46 100644 --- a/README_es.md +++ b/README_es.md @@ -26,7 +26,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Versión actual:** 30.0.2~ynh1 +**Versión actual:** 30.0.4~ynh1 **Demo:** diff --git a/README_eu.md b/README_eu.md index dfce54f4..a97367ef 100644 --- a/README_eu.md +++ b/README_eu.md @@ -26,7 +26,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Paketatutako bertsioa:** 30.0.2~ynh1 +**Paketatutako bertsioa:** 30.0.4~ynh1 **Demoa:** diff --git a/README_fr.md b/README_fr.md index d211d8c2..276d38be 100644 --- a/README_fr.md +++ b/README_fr.md @@ -27,7 +27,7 @@ L'adresse `/.well-known` sera automatiquement configuré pour la synchronisatio Le catalogue YunoHost dispose de deux suites bureautiques collaboratives, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) et [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), qui peuvent être intégrées à Nextcloud. -**Version incluse :** 30.0.2~ynh1 +**Version incluse :** 30.0.4~ynh1 **Démo :** diff --git a/README_gl.md b/README_gl.md index 6ac9c635..50121dc0 100644 --- a/README_gl.md +++ b/README_gl.md @@ -26,7 +26,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Versión proporcionada:** 30.0.2~ynh1 +**Versión proporcionada:** 30.0.4~ynh1 **Demo:** diff --git a/README_id.md b/README_id.md index 17f53464..5cf9feaa 100644 --- a/README_id.md +++ b/README_id.md @@ -26,7 +26,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Versi terkirim:** 30.0.2~ynh1 +**Versi terkirim:** 30.0.4~ynh1 **Demo:** diff --git a/README_nl.md b/README_nl.md index a74b7899..00322ce2 100644 --- a/README_nl.md +++ b/README_nl.md @@ -26,7 +26,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Geleverde versie:** 30.0.2~ynh1 +**Geleverde versie:** 30.0.4~ynh1 **Demo:** diff --git a/README_pl.md b/README_pl.md index d2ffb069..792231a2 100644 --- a/README_pl.md +++ b/README_pl.md @@ -26,7 +26,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Dostarczona wersja:** 30.0.2~ynh1 +**Dostarczona wersja:** 30.0.4~ynh1 **Demo:** diff --git a/README_ru.md b/README_ru.md index 4c845b78..6e60ecff 100644 --- a/README_ru.md +++ b/README_ru.md @@ -26,7 +26,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**Поставляемая версия:** 30.0.2~ynh1 +**Поставляемая версия:** 30.0.4~ynh1 **Демо-версия:** diff --git a/README_zh_Hans.md b/README_zh_Hans.md index 6c07a52f..23f0f3a9 100644 --- a/README_zh_Hans.md +++ b/README_zh_Hans.md @@ -26,7 +26,7 @@ The `/.well-known` address will be automatically configured for CalDAV and CardD The YunoHost catalog has two collaborative office suites, [OnlyOffice](https://github.com/YunoHost-Apps/onlyoffice_ynh) and [Collabora](https://github.com/YunoHost-Apps/collabora_ynh), which can be integrated with Nextcloud. -**分发版本:** 30.0.2~ynh1 +**分发版本:** 30.0.4~ynh1 **演示:** From 893daef1341bf7f7390cc474f19fdbe5bd71b210 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Thu, 12 Dec 2024 13:09:38 +0100 Subject: [PATCH 70/74] fix --- conf/systemd.service | 34 ---------------------------------- conf/watcher.service | 35 ----------------------------------- 2 files changed, 69 deletions(-) diff --git a/conf/systemd.service b/conf/systemd.service index 54bd669c..a1f18b54 100644 --- a/conf/systemd.service +++ b/conf/systemd.service @@ -10,39 +10,5 @@ Environment=ALLOW_SELF_SIGNED=true RuntimeDirectory=__APP__ ExecStart=__INSTALL_DIR__/apps/notify_push/bin/__ARCH__/notify_push __INSTALL_DIR__/config/config.php -### Depending on specificities of your service/app, you may need to tweak these -### .. but this should be a good baseline -# Sandboxing options to harden security -# 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 AF_NETLINK -RestrictNamespaces=yes -RestrictRealtime=yes -DevicePolicy=closed -ProtectClock=yes -ProtectHostname=yes -ProtectProc=invisible -ProtectSystem=full -ProtectControlGroups=yes -ProtectKernelModules=yes -ProtectKernelTunables=yes -LockPersonality=yes -SystemCallArchitectures=native -SystemCallFilter=~@clock @debug @module @mount @obsolete @reboot @setuid @swap @cpu-emulation @privileged - -# 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 \ No newline at end of file diff --git a/conf/watcher.service b/conf/watcher.service index 5c7670c0..e2d9cfdf 100644 --- a/conf/watcher.service +++ b/conf/watcher.service @@ -8,43 +8,8 @@ StartLimitBurst=5 [Service] Type=oneshot -User=__APP__ ExecStartPre=/usr/bin/chmod u+x __INSTALL_DIR__/apps/notify_push/bin/__ARCH__/notify_push ExecStart=/usr/bin/systemctl restart __APP__-notify-push.service -### Depending on specificities of your service/app, you may need to tweak these -### .. but this should be a good baseline -# Sandboxing options to harden security -# 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 AF_NETLINK -RestrictNamespaces=yes -RestrictRealtime=yes -DevicePolicy=closed -ProtectClock=yes -ProtectHostname=yes -ProtectProc=invisible -ProtectSystem=full -ProtectControlGroups=yes -ProtectKernelModules=yes -ProtectKernelTunables=yes -LockPersonality=yes -SystemCallArchitectures=native -SystemCallFilter=~@clock @debug @module @mount @obsolete @reboot @setuid @swap @cpu-emulation @privileged - -# 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 \ No newline at end of file From fc6f6d1d15120fba7fca0c3fcedaa2fa5d0e299b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Thu, 12 Dec 2024 15:52:59 +0100 Subject: [PATCH 71/74] cleaning --- scripts/remove | 1 - scripts/upgrade | 6 +++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/scripts/remove b/scripts/remove index f7bb7cb2..c506c10c 100755 --- a/scripts/remove +++ b/scripts/remove @@ -23,7 +23,6 @@ if [ $enable_notify_push -eq 1 ]; then systemctl disable --now --quiet ${app}-notify-push-watcher.path ynh_safe_rm "/etc/systemd/system/${app}-notify-push-watcher.path" ynh_config_remove_systemd"${app}-notify-push-watcher" - fi # Remove a cron file diff --git a/scripts/upgrade b/scripts/upgrade index dcab5362..12fe5a7b 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -3,14 +3,14 @@ source _common.sh source /usr/share/yunohost/helpers -ynh_app_setting_set_default --key=php_upload_max_filesize --value=10G -ynh_app_setting_set_default --key=php_memory_limit --value=512M - #================================================= # ENSURE DOWNWARD COMPATIBILITY #================================================= ynh_script_progression "Ensuring downward compatibility..." +ynh_app_setting_set_default --key=php_upload_max_filesize --value=10G +ynh_app_setting_set_default --key=php_memory_limit --value=512M + if [ -z ${system_addressbook_exposed:-} ]; then ynh_app_setting_set --key=system_addressbook_exposed --value=0 system_addressbook_exposed=0 From e785d25614275a0894ec0bbbec60cc85377312b9 Mon Sep 17 00:00:00 2001 From: eric_G <46165813+ericgaspar@users.noreply.github.com> Date: Tue, 17 Dec 2024 17:43:58 +0100 Subject: [PATCH 72/74] add headers (#763) * add headers * Update conf/nginx.conf Co-authored-by: Alexandre Aubin <4533074+alexAubin@users.noreply.github.com> --------- Co-authored-by: Alexandre Aubin <4533074+alexAubin@users.noreply.github.com> --- conf/nginx.conf | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/conf/nginx.conf b/conf/nginx.conf index 8edb5581..0b6c2fd1 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -139,12 +139,16 @@ location ^~ __PATH__/ { # Serve static files location ~ \.(?:css|js|mjs|svg|gif|ico|jpg|png|webp|wasm|tflite|map|ogg|flac)$ { try_files $uri / __PATH__/index.php$request_uri; - expires 6M; # Cache-Control policy borrowed from `.htaccess` - access_log off; # Optional: Don't log access to assets - - location ~ \.wasm$ { - default_type application/wasm; - } + # Adapted from https://github.com/nextcloud/documentation/blob/master/admin_manual/installation/nginx-root.conf.sample + # HTTP response headers borrowed from Nextcloud `.htaccess` + more_set_headers "Cache-Control: public, max-age=15778463, immutable"; + more_set_headers "Referrer-Policy: no-referrer"; + more_set_headers "X-Content-Type-Options: nosniff"; + more_set_headers "X-Frame-Options: SAMEORIGIN"; + more_set_headers "X-Permitted-Cross-Domain-Policies: none"; + more_set_headers "X-Robots-Tag: noindex, nofollow"; + more_set_headers "X-XSS-Protection: 1; mode=block"; + access_log off; # Optional: Don't log access to assets } location ~ \.(otf|woff2?)$ { From 2a8269b1dc4420c6cfe0f54e318d0c1b25a85bbc Mon Sep 17 00:00:00 2001 From: eric_G <46165813+ericgaspar@users.noreply.github.com> Date: Tue, 17 Dec 2024 18:29:27 +0100 Subject: [PATCH 73/74] Update manifest.toml --- manifest.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.toml b/manifest.toml index c11eb993..6f32edfd 100644 --- a/manifest.toml +++ b/manifest.toml @@ -19,7 +19,7 @@ code = "https://github.com/nextcloud/server" cpe = "cpe:2.3:a:nextcloud:nextcloud" [integration] -yunohost = ">= 12.0.8.2" +yunohost = ">= 12.0.9" helpers_version = "2.1" architectures = ["amd64", "arm64", "armhf"] multi_instance = true From f6be830d67c02b8ceab24fbfded266acde842215 Mon Sep 17 00:00:00 2001 From: eric_G <46165813+ericgaspar@users.noreply.github.com> Date: Wed, 18 Dec 2024 18:36:38 +0100 Subject: [PATCH 74/74] Update tests.toml Co-authored-by: Alexandre Aubin <4533074+alexAubin@users.noreply.github.com> --- tests.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests.toml b/tests.toml index 3af71181..3b5943a1 100644 --- a/tests.toml +++ b/tests.toml @@ -8,8 +8,8 @@ test_format = 1.0 # Commits to test upgrade from # ------------------------------- - #test_upgrade_from.c5cf91ad.name = "Upgrade from 25.0.2" - #test_upgrade_from.caf917f3.name = "Upgrade from 26.0.2" + test_upgrade_from.c5cf91ad.name = "Upgrade from 25.0.2" + test_upgrade_from.caf917f3.name = "Upgrade from 26.0.2" test_upgrade_from.9c6d1eea.name = "Upgrade from 27.1.4" test_upgrade_from.e9f82ab7.name = "Upgrade from 28.0.6" test_upgrade_from.541f5fde.name = "Upgrade from 29.0.8"