From fc691270f6dca61fb3fcf93323e9f91208181125 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Sat, 13 Jan 2024 19:57:41 +0100 Subject: [PATCH 01/64] i18n: Expect an help key for ssh_port setting --- maintenance/missing_i18n_keys.py | 1 - 1 file changed, 1 deletion(-) diff --git a/maintenance/missing_i18n_keys.py b/maintenance/missing_i18n_keys.py index 2ed7fd141..0c5b5fd71 100644 --- a/maintenance/missing_i18n_keys.py +++ b/maintenance/missing_i18n_keys.py @@ -155,7 +155,6 @@ def find_expected_string_keys(): "smtp_relay_password", "smtp_relay_port", "smtp_relay_user", - "ssh_port", "ssowat_panel_overlay_enabled", "root_password", "root_access_explain", From 05f7c3a3b78a87f48793deccbed944f260668bf5 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Sun, 14 Jan 2024 16:28:51 +0100 Subject: [PATCH 02/64] helpers/php: quote vars to avoid stupid issues with name in path which may happen in backup restore context... --- helpers/php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/helpers/php b/helpers/php index ee3d35cb1..7fbe3f1ba 100644 --- a/helpers/php +++ b/helpers/php @@ -200,19 +200,19 @@ pm = __PHP_PM__ pm.max_children = __PHP_MAX_CHILDREN__ pm.max_requests = 500 request_terminate_timeout = 1d -" >$phpfpm_path +" >"$phpfpm_path" if [ "$php_pm" = "dynamic" ]; then echo " pm.start_servers = __PHP_START_SERVERS__ pm.min_spare_servers = __PHP_MIN_SPARE_SERVERS__ pm.max_spare_servers = __PHP_MAX_SPARE_SERVERS__ -" >>$phpfpm_path +" >>"$phpfpm_path" elif [ "$php_pm" = "ondemand" ]; then echo " pm.process_idle_timeout = 10s -" >>$phpfpm_path +" >>"$phpfpm_path" fi # Concatene the extra config. From 1ce606d469840db7c97008ab891f071658f2e2e0 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Sun, 14 Jan 2024 17:50:09 +0100 Subject: [PATCH 03/64] multimedia: fix again edgecase where setfacl crashes because of broken symlinks.. --- helpers/multimedia | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/helpers/multimedia b/helpers/multimedia index 05479a84a..c860ae49f 100644 --- a/helpers/multimedia +++ b/helpers/multimedia @@ -44,9 +44,9 @@ ynh_multimedia_build_main_dir() { ## Application des droits étendus sur le dossier multimedia. # Droit d'écriture pour le groupe et le groupe multimedia en acl et droit de lecture pour other: - setfacl -RnL -m g:$MEDIA_GROUP:rwX,g::rwX,o:r-X "$MEDIA_DIRECTORY" + setfacl -RnL -m g:$MEDIA_GROUP:rwX,g::rwX,o:r-X "$MEDIA_DIRECTORY" || true # Application de la même règle que précédemment, mais par défaut pour les nouveaux fichiers. - setfacl -RnL -m d:g:$MEDIA_GROUP:rwX,g::rwX,o:r-X "$MEDIA_DIRECTORY" + setfacl -RnL -m d:g:$MEDIA_GROUP:rwX,g::rwX,o:r-X "$MEDIA_DIRECTORY" || true # Réglage du masque par défaut. Qui garantie (en principe...) un droit maximal à rwx. Donc pas de restriction de droits par l'acl. setfacl -RL -m m::rwx "$MEDIA_DIRECTORY" || true } From 9819560518d8733be441d63e02c1fb70d4d79a11 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Sun, 14 Jan 2024 18:30:14 +0100 Subject: [PATCH 04/64] helpers: disable super verbose logging during ynh_replace_vars poluting logs, it's kinda stable now... --- helpers/utils | 3 +++ 1 file changed, 3 insertions(+) diff --git a/helpers/utils b/helpers/utils index 13874eea3..6e4a7ad8c 100644 --- a/helpers/utils +++ b/helpers/utils @@ -554,6 +554,8 @@ ynh_replace_vars() { # Manage arguments with getopts ynh_handle_getopts_args "$@" + set +o xtrace # set +x + # Replace specific YunoHost variables if test -n "${path_url:-}"; then # path_url_slash_less is path_url, or a blank value if path_url is only '/' @@ -604,6 +606,7 @@ ynh_replace_vars() { # Actually replace (sed is used instead of ynh_replace_string to avoid triggering an epic amount of debug logs) sed --in-place "s${delimit}${match_string}${delimit}${replace_string}${delimit}g" "$file" done + set -o xtrace # set -x } # Get a value from heterogeneous file (yaml, json, php, python...) From c2af17667b0a8ff01cdcbeb0789db5d07e194e14 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Sun, 14 Jan 2024 18:32:53 +0100 Subject: [PATCH 05/64] helpers: fix previous commit, ynh_replace_string already messes with set +x/-x so hmpf --- helpers/utils | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/helpers/utils b/helpers/utils index 6e4a7ad8c..98e610f21 100644 --- a/helpers/utils +++ b/helpers/utils @@ -554,8 +554,6 @@ ynh_replace_vars() { # Manage arguments with getopts ynh_handle_getopts_args "$@" - set +o xtrace # set +x - # Replace specific YunoHost variables if test -n "${path_url:-}"; then # path_url_slash_less is path_url, or a blank value if path_url is only '/' @@ -586,6 +584,8 @@ ynh_replace_vars() { # List other unique (__ __) variables in $file local uniques_vars=($(grep -oP '__[A-Z0-9]+?[A-Z0-9_]*?[A-Z0-9]*?__' $file | sort --unique | sed "s@__\([^.]*\)__@\L\1@g")) + set +o xtrace # set +x + # Do the replacement local delimit=@ for one_var in "${uniques_vars[@]}"; do From 339cdcd82c5938dc00a48d32c057903afcaf750f Mon Sep 17 00:00:00 2001 From: ppr Date: Tue, 16 Jan 2024 17:55:39 +0000 Subject: [PATCH 06/64] Translated using Weblate (French) Currently translated at 100.0% (783 of 783 strings) Translation: YunoHost/core Translate-URL: https://translate.yunohost.org/projects/yunohost/core/fr/ --- locales/fr.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/locales/fr.json b/locales/fr.json index 8f66f2967..10679c006 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -780,5 +780,6 @@ "dyndns_set_recovery_password_success": "Mot de passe de récupération changé !", "log_dyndns_unsubscribe": "Se désabonner d'un sous-domaine YunoHost '{}'", "dyndns_too_many_requests": "Le service dyndns de YunoHost a reçu trop de requêtes/demandes de votre part, attendez environ 1 heure avant de réessayer.", - "ask_dyndns_recovery_password_explain_unavailable": "Ce domaine DynDNS est déjà enregistré. Si vous êtes la personne qui a enregistré ce domaine lors de sa création, vous pouvez entrer le mot de passe de récupération pour récupérer ce domaine." -} \ No newline at end of file + "ask_dyndns_recovery_password_explain_unavailable": "Ce domaine DynDNS est déjà enregistré. Si vous êtes la personne qui a enregistré ce domaine lors de sa création, vous pouvez entrer le mot de passe de récupération pour récupérer ce domaine.", + "global_settings_setting_ssh_port_help": "Il est préférable d'utiliser un port inférieur à 1024 pour éviter les tentatives d'usurpation par des services non administrateurs sur la machine distante. Vous devez également éviter d'utiliser un port déjà utilisé tel que le 80 ou le 443." +} From fc12cb198c749d0acccb6a98efc2cc1429d4e84c Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Sun, 21 Jan 2024 21:14:02 +0100 Subject: [PATCH 07/64] apps: people insist on trying to install Nextcloud after creating a user called nextcloud ... So let's check this stupid case --- src/app.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/app.py b/src/app.py index 31242fe72..0534e093f 100644 --- a/src/app.py +++ b/src/app.py @@ -1068,6 +1068,7 @@ def app_install( ) from yunohost.regenconf import manually_modified_files from yunohost.utils.legacy import _patch_legacy_php_versions, _patch_legacy_helpers + from yunohost.user import user_list # Check if disk space available if free_space_in_directory("/") <= 512 * 1000 * 1000: @@ -1091,6 +1092,9 @@ def app_install( app_id = manifest["id"] + if app_id in user_list()["users"].keys(): + raise YunohostValidationError(f"There is already a YunoHost user called {app_id} ...", raw_msg=True) + # Check requirements for name, passed, values, err in _check_manifest_requirements( manifest, action="install" From 8727e74eab0c6072d8bb537fcf48519cb8044bc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Pi=C3=A9dallu?= Date: Sun, 28 Jan 2024 22:20:56 +0100 Subject: [PATCH 08/64] Fix port reuse during provisionning. Before this, provisionning might use twice the same port (second app install for example). Indeed, _port_is_used only checks processes and already installed apps. Not the current app being installed. --- src/utils/resources.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/utils/resources.py b/src/utils/resources.py index 0d3f584da..931bb057d 100644 --- a/src/utils/resources.py +++ b/src/utils/resources.py @@ -1216,17 +1216,24 @@ class PortsResource(AppResource): if properties[port]["default"] is None: properties[port]["default"] = random.randint(10000, 60000) + # This is to prevent using twice the same port during provisionning. + self.used_ports: list[int] = [] + super().__init__({"ports": properties}, *args, **kwargs) def _port_is_used(self, port): # FIXME : this could be less brutal than two os.system... - cmd1 = ( + used_by_process = os.system( "ss --numeric --listening --tcp --udp | awk '{print$5}' | grep --quiet --extended-regexp ':%s$'" % port - ) + ) == 0 # This second command is mean to cover (most) case where an app is using a port yet ain't currently using it for some reason (typically service ain't up) - cmd2 = f"grep --quiet --extended-regexp \"port: '?{port}'?\" /etc/yunohost/apps/*/settings.yml" - return os.system(cmd1) == 0 or os.system(cmd2) == 0 + used_by_app = os.system( + f"grep --quiet --extended-regexp \"port: '?{port}'?\" /etc/yunohost/apps/*/settings.yml" + ) == 0 + used_by_self_provisioning = port in self.used_ports + + return used_by_process or used_by_app or used_by_self_provisioning def provision_or_update(self, context: Dict = {}): from yunohost.firewall import firewall_allow, firewall_disallow @@ -1256,6 +1263,7 @@ class PortsResource(AppResource): while self._port_is_used(port_value): port_value += 1 + self.used_ports.append(port_value) self.set_setting(setting_name, port_value) if infos["exposed"]: From 820a79c238ca9f9167d7cc130982b4936ef4700e Mon Sep 17 00:00:00 2001 From: Alexandre Aubin <4533074+alexAubin@users.noreply.github.com> Date: Sun, 28 Jan 2024 22:28:45 +0100 Subject: [PATCH 09/64] Update resources.py: used_ports -> ports_used_by_self --- src/utils/resources.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/utils/resources.py b/src/utils/resources.py index 931bb057d..5ce76cabe 100644 --- a/src/utils/resources.py +++ b/src/utils/resources.py @@ -1217,7 +1217,7 @@ class PortsResource(AppResource): properties[port]["default"] = random.randint(10000, 60000) # This is to prevent using twice the same port during provisionning. - self.used_ports: list[int] = [] + self.ports_used_by_self: list[int] = [] super().__init__({"ports": properties}, *args, **kwargs) @@ -1231,7 +1231,7 @@ class PortsResource(AppResource): used_by_app = os.system( f"grep --quiet --extended-regexp \"port: '?{port}'?\" /etc/yunohost/apps/*/settings.yml" ) == 0 - used_by_self_provisioning = port in self.used_ports + used_by_self_provisioning = port in self.ports_used_by_self return used_by_process or used_by_app or used_by_self_provisioning @@ -1263,7 +1263,7 @@ class PortsResource(AppResource): while self._port_is_used(port_value): port_value += 1 - self.used_ports.append(port_value) + self.ports_used_by_self.append(port_value) self.set_setting(setting_name, port_value) if infos["exposed"]: From 00698cc2fda2f1221f3e75e056876f8572430861 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Mon, 29 Jan 2024 02:54:19 +0100 Subject: [PATCH 10/64] mention cidr notation --- locales/en.json | 2 +- locales/fr.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/locales/en.json b/locales/en.json index 0baa8e084..1c4463714 100644 --- a/locales/en.json +++ b/locales/en.json @@ -467,7 +467,7 @@ "global_settings_setting_webadmin_allowlist": "Webadmin IP allowlist", "global_settings_setting_webadmin_allowlist_enabled": "Enable Webadmin IP allowlist", "global_settings_setting_webadmin_allowlist_enabled_help": "Allow only some IPs to access the webadmin.", - "global_settings_setting_webadmin_allowlist_help": "IP adresses allowed to access the webadmin.", + "global_settings_setting_webadmin_allowlist_help": "IP adresses allowed to access the webadmin. CIDR notation is allowed.", "good_practices_about_admin_password": "You are now about to define a new administration password. The password should be at least 8 characters long—though it is good practice to use a longer password (i.e. a passphrase) and/or to use a variation of characters (uppercase, lowercase, digits and special characters).", "good_practices_about_user_password": "You are now about to define a new user password. The password should be at least 8 characters long—though it is good practice to use a longer password (i.e. a passphrase) and/or to a variation of characters (uppercase, lowercase, digits and special characters).", "group_already_exist": "Group {group} already exists", diff --git a/locales/fr.json b/locales/fr.json index 10679c006..44c029820 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -658,7 +658,7 @@ "global_settings_setting_ssh_compatibility_help": "Compromis 'compatibilité versus sécurité' pour le serveur SSH. Affecte les cryptogrammes utilisés (et d'autres aspects liés à la sécurité).", "global_settings_setting_ssh_password_authentication_help": "Autoriser l'authentification par mot de passe pour SSH", "global_settings_setting_ssh_port": "Port SSH", - "global_settings_setting_webadmin_allowlist_help": "Adresses IP autorisées à accéder à la webadmin. Elles doivent être séparées par une virgule.", + "global_settings_setting_webadmin_allowlist_help": "Adresses IP autorisées à accéder à la webadmin. La notation CIDR est autorisée.", "global_settings_setting_webadmin_allowlist_enabled_help": "Autoriser seulement certaines IP à accéder à la webadmin.", "global_settings_setting_smtp_allow_ipv6_help": "Autoriser l'utilisation d'IPv6 pour recevoir et envoyer du courrier", "global_settings_setting_smtp_relay_enabled_help": "Un relais SMTP permet d'envoyer du courrier à la place de cette instance YunoHost. Cela est utile si vous êtes dans l'une de ces situations : le port 25 est bloqué par votre FAI ou par votre fournisseur VPS ; vous avez une IP résidentielle répertoriée sur DUHL ; vous ne pouvez pas configurer le DNS inversé ; ou le serveur n'est pas directement accessible depuis Internet et vous voulez en utiliser un autre pour envoyer des mails.", @@ -782,4 +782,4 @@ "dyndns_too_many_requests": "Le service dyndns de YunoHost a reçu trop de requêtes/demandes de votre part, attendez environ 1 heure avant de réessayer.", "ask_dyndns_recovery_password_explain_unavailable": "Ce domaine DynDNS est déjà enregistré. Si vous êtes la personne qui a enregistré ce domaine lors de sa création, vous pouvez entrer le mot de passe de récupération pour récupérer ce domaine.", "global_settings_setting_ssh_port_help": "Il est préférable d'utiliser un port inférieur à 1024 pour éviter les tentatives d'usurpation par des services non administrateurs sur la machine distante. Vous devez également éviter d'utiliser un port déjà utilisé tel que le 80 ou le 443." -} +} \ No newline at end of file From 3f467182cc309d1fa94abfd05ef10a80f9b8ce15 Mon Sep 17 00:00:00 2001 From: Christian Wehrli Date: Sat, 20 Jan 2024 16:37:56 +0000 Subject: [PATCH 11/64] Translated using Weblate (German) Currently translated at 99.8% (782 of 783 strings) Translation: YunoHost/core Translate-URL: https://translate.yunohost.org/projects/yunohost/core/de/ --- locales/de.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/locales/de.json b/locales/de.json index 15a292542..85abef8a1 100644 --- a/locales/de.json +++ b/locales/de.json @@ -224,7 +224,7 @@ "log_app_remove": "Entferne die Applikation '{}'", "log_app_install": "Installiere die Applikation '{}'", "log_app_upgrade": "Upgrade der Applikation '{}'", - "good_practices_about_admin_password": "Die sind nun dabei, ein neues Administratorpasswort zu definieren. Das Passwort sollte mindestens 8 Zeichen lang sein - es ist jedoch empfehlenswert, ein längeres Passwort (z.B. eine Passphrase) und/oder verschiedene Arten von Zeichen (Groß- und Kleinschreibung, Ziffern und Sonderzeichen) zu verwenden.", + "good_practices_about_admin_password": "Sie sind nun dabei, ein neues Administratorpasswort zu definieren. Das Passwort sollte mindestens 8 Zeichen lang sein - es ist jedoch empfehlenswert, ein längeres Passwort (z.B. eine Passphrase) und/oder verschiedene Arten von Zeichen (Groß- und Kleinschreibung, Ziffern und Sonderzeichen) zu verwenden.", "log_corrupted_md_file": "Die mit Protokollen verknüpfte YAML-Metadatendatei ist beschädigt: '{md_file}\nFehler: {error}''", "log_help_to_get_failed_log": "Der Vorgang'{desc}' konnte nicht abgeschlossen werden. Bitte teile das vollständige Protokoll dieser Operation mit dem Befehl 'yunohost log share {name}', um Hilfe zu erhalten", "backup_no_uncompress_archive_dir": "Dieses unkomprimierte Archivverzeichnis gibt es nicht", @@ -781,4 +781,4 @@ "dyndns_set_recovery_password_unknown_domain": "Konnte Wiederherstellungspasswort nicht einstellen: Domäne nicht registriert", "dyndns_set_recovery_password_failed": "Konnte Wiederherstellungspasswort nicht einstellen: {error}", "dyndns_set_recovery_password_success": "Wiederherstellungspasswort eingestellt!" -} \ No newline at end of file +} From 1a95dd500f0af806458a7feab39d28e9b091c042 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20M?= Date: Mon, 22 Jan 2024 06:47:55 +0000 Subject: [PATCH 12/64] Translated using Weblate (Galician) Currently translated at 100.0% (783 of 783 strings) Translation: YunoHost/core Translate-URL: https://translate.yunohost.org/projects/yunohost/core/gl/ --- locales/gl.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/locales/gl.json b/locales/gl.json index 1a43b6897..327a24b0a 100644 --- a/locales/gl.json +++ b/locales/gl.json @@ -780,5 +780,6 @@ "dyndns_set_recovery_password_success": "Estableceuse o contrasinal de recuperación!", "log_dyndns_unsubscribe": "Retirar subscrición para o subdominio YunoHost '{}'", "ask_dyndns_recovery_password_explain_unavailable": "Este dominio DynDNS xa está rexistrado. Se es a persoa que o rexistrou orixinalmente, podes escribir o código de recuperación para reclamar o dominio.", - "dyndns_too_many_requests": "O servicio dyndns de YunoHost recibeu demasiadas peticións do teu sistema, agarda 1 hora e volve intentalo." -} \ No newline at end of file + "dyndns_too_many_requests": "O servicio dyndns de YunoHost recibeu demasiadas peticións do teu sistema, agarda 1 hora e volve intentalo.", + "global_settings_setting_ssh_port_help": "É recomendable un porto inferior a 1024 para evitar os intentos de apropiación por parte de servizos de non-administración na máquina remota. Tamén deberías evitar elexir un porto que xa está sendo utilizado, como 80 ou 443." +} From 53010184901ff872e26f5c9c41a2ada2826ed65d Mon Sep 17 00:00:00 2001 From: Jose Riha Date: Tue, 23 Jan 2024 07:21:06 +0000 Subject: [PATCH 13/64] Translated using Weblate (Slovak) Currently translated at 32.4% (254 of 783 strings) Translation: YunoHost/core Translate-URL: https://translate.yunohost.org/projects/yunohost/core/sk/ --- locales/sk.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/locales/sk.json b/locales/sk.json index 7079fad9f..b0fcb0b78 100644 --- a/locales/sk.json +++ b/locales/sk.json @@ -264,5 +264,6 @@ "global_settings_setting_security_experimental_enabled_help": "Povoliť experimentálne bezpečnostné funkcie (nezapínajte túto možnosť, ak neviete, čo môže spôsobiť!)", "service_description_rspamd": "Filtruje spam a iné funkcie týkajúce sa e-mailu", "log_letsencrypt_cert_renew": "Obnoviť '{}' certifikát Let's Encrypt", - "domain_config_cert_summary_selfsigned": "UPOZORNENIE: Aktuálny certifikát je vlastnoručne podpísaný. Prehliadače budú návštevníkom zobrazovať strašidelné varovanie!" -} \ No newline at end of file + "domain_config_cert_summary_selfsigned": "UPOZORNENIE: Aktuálny certifikát je vlastnoručne podpísaný. Prehliadače budú návštevníkom zobrazovať strašidelné varovanie!", + "global_settings_setting_ssowat_panel_overlay_enabled": "Povoliť malú štvorcovú ikonu portálu „YunoHost“ na aplikáciach" +} From 97c2fe3d494d7b678a0935037a956699ea735eec Mon Sep 17 00:00:00 2001 From: Weblate Date: Thu, 25 Jan 2024 13:39:26 +0100 Subject: [PATCH 14/64] Added translation using Weblate (Korean) --- locales/ko.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 locales/ko.json diff --git a/locales/ko.json b/locales/ko.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/locales/ko.json @@ -0,0 +1 @@ +{} From e81e6fb92c7714f38d4290bbdc64048519be4af0 Mon Sep 17 00:00:00 2001 From: Weblate Date: Sat, 27 Jan 2024 17:48:01 +0100 Subject: [PATCH 15/64] Update translation files Updated by "Remove blank strings" hook in Weblate. Translation: YunoHost/core Translate-URL: https://translate.yunohost.org/projects/yunohost/core/ --- locales/ar.json | 1 - 1 file changed, 1 deletion(-) diff --git a/locales/ar.json b/locales/ar.json index 38912ca85..5a81b8b10 100644 --- a/locales/ar.json +++ b/locales/ar.json @@ -107,7 +107,6 @@ "service_description_rspamd": "يقوم بتصفية البريد المزعج و إدارة ميزات أخرى للبريد", "service_description_yunohost-firewall": "يُدير فتح وإغلاق منافذ الاتصال إلى الخدمات", "aborting": "إلغاء.", - "app_not_upgraded": "", "app_start_install": "جارٍ تثبيت {app}…", "app_start_remove": "جارٍ حذف {app}…", "app_start_restore": "جارٍ استرجاع {app}…", From 1fe0ea5062b06d5570409e0bf1a0a4b3c8bf1312 Mon Sep 17 00:00:00 2001 From: Lasse Gismo Date: Sun, 28 Jan 2024 17:39:21 +0000 Subject: [PATCH 16/64] Translated using Weblate (German) Currently translated at 100.0% (783 of 783 strings) Translation: YunoHost/core Translate-URL: https://translate.yunohost.org/projects/yunohost/core/de/ --- locales/de.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/locales/de.json b/locales/de.json index 85abef8a1..afc49f118 100644 --- a/locales/de.json +++ b/locales/de.json @@ -780,5 +780,6 @@ "dyndns_set_recovery_password_denied": "Konnte Wiederherstellungspasswort nicht einstellen: ungültiges Passwort", "dyndns_set_recovery_password_unknown_domain": "Konnte Wiederherstellungspasswort nicht einstellen: Domäne nicht registriert", "dyndns_set_recovery_password_failed": "Konnte Wiederherstellungspasswort nicht einstellen: {error}", - "dyndns_set_recovery_password_success": "Wiederherstellungspasswort eingestellt!" + "dyndns_set_recovery_password_success": "Wiederherstellungspasswort eingestellt!", + "global_settings_setting_ssh_port_help": "Ein Port unter 1024 wird bevorzugt, um Kaperversuche durch Nicht-Administratordienste auf dem Remote-Computer zu verhindern. Sie sollten auch vermeiden, einen bereits verwendeten Port zu verwenden, z. B. 80 oder 443." } From d730edef5242e01dd1c47ecc4514e2531d865a43 Mon Sep 17 00:00:00 2001 From: Francescc Date: Mon, 29 Jan 2024 01:56:41 +0000 Subject: [PATCH 17/64] Translated using Weblate (Catalan) Currently translated at 70.6% (553 of 783 strings) Translation: YunoHost/core Translate-URL: https://translate.yunohost.org/projects/yunohost/core/ca/ --- locales/ca.json | 71 +++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 57 insertions(+), 14 deletions(-) diff --git a/locales/ca.json b/locales/ca.json index b21382614..445c64b9a 100644 --- a/locales/ca.json +++ b/locales/ca.json @@ -4,7 +4,7 @@ "app_already_installed": "{app} ja està instal·lada", "app_already_installed_cant_change_url": "Aquesta aplicació ja està instal·lada. La URL no és pot canviar únicament amb aquesta funció. Mireu a `app changeurl` si està disponible.", "app_already_up_to_date": "{app} ja està actualitzada", - "app_argument_choice_invalid": "Utilitzeu una de les opcions «{choices}» per l'argument «{name}» en lloc de «{value}»", + "app_argument_choice_invalid": "Trieu un valor vàlid per a l'argument «{name}»: «{value}»\" no es troba entre les opcions disponibles ({choices})", "app_argument_invalid": "Escolliu un valor vàlid per l'argument «{name}»: {error}", "app_argument_required": "Es necessita l'argument '{name}'", "app_change_url_identical_domains": "L'antic i el nou domini/camí són idèntics ('{domain}{path}'), no hi ha res per fer.", @@ -18,8 +18,8 @@ "app_not_correctly_installed": "{app} sembla estar mal instal·lada", "app_not_installed": "No s'ha trobat {app} en la llista d'aplicacions instal·lades: {all_apps}", "app_not_properly_removed": "{app} no s'ha pogut suprimir correctament", - "app_removed": "{app} ha estat suprimida", - "app_requirements_checking": "Verificació dels paquets requerits per {app}...", + "app_removed": "{app} ha estat desinstal·lada", + "app_requirements_checking": "Verificació dels requisits per a {app}...", "app_sources_fetch_failed": "No s'han pogut carregar els fitxers font, l'URL és correcta?", "app_unknown": "Aplicació desconeguda", "app_unsupported_remote_type": "El tipus remot utilitzat per l'aplicació no està suportat", @@ -37,7 +37,7 @@ "backup_applying_method_tar": "Creació de l'arxiu TAR de la còpia de seguretat...", "backup_archive_app_not_found": "No s'ha pogut trobar {app} en l'arxiu de la còpia de seguretat", "backup_archive_broken_link": "No s'ha pogut accedir a l'arxiu de la còpia de seguretat (enllaç invàlid cap a {path})", - "backup_archive_name_exists": "Ja hi ha una còpia de seguretat amb aquest nom.", + "backup_archive_name_exists": "Ja hi ha una còpia de seguretat amb el nom «{name}».", "backup_archive_name_unknown": "Còpia de seguretat local \"{name}\" desconeguda", "backup_archive_open_failed": "No s'ha pogut obrir l'arxiu de la còpia de seguretat", "backup_archive_system_part_not_available": "La part «{part}» del sistema no està disponible en aquesta copia de seguretat", @@ -47,7 +47,7 @@ "backup_cleaning_failed": "No s'ha pogut netejar el directori temporal de la còpia de seguretat", "backup_copying_to_organize_the_archive": "Copiant {size}MB per organitzar l'arxiu", "backup_couldnt_bind": "No es pot lligar {src} amb {dest}.", - "backup_created": "S'ha creat la còpia de seguretat", + "backup_created": "S'ha creat la còpia de seguretat: {name}", "aborting": "Avortant.", "app_not_upgraded": "L'aplicació «{failed_app}» no s'ha pogut actualitzar, i com a conseqüència s'ha cancel·lat l'actualització de les següents aplicacions: {apps}", "app_start_install": "instal·lant {app}...", @@ -64,7 +64,7 @@ "backup_custom_backup_error": "El mètode de còpia de seguretat personalitzat ha fallat a l'etapa «backup»", "backup_custom_mount_error": "El mètode de còpia de seguretat personalitzat ha fallat a l'etapa «mount»", "backup_delete_error": "No s'ha pogut suprimir «{path}»", - "backup_deleted": "S'ha suprimit la còpia de seguretat", + "backup_deleted": "S'ha suprimit la còpia de seguretat: {name}", "backup_hook_unknown": "Script de còpia de seguretat «{hook}» desconegut", "backup_method_copy_finished": "La còpia de la còpia de seguretat ha acabat", "backup_method_custom_finished": "El mètode de còpia de seguretat personalitzat \"{method}\" ha acabat", @@ -98,15 +98,15 @@ "certmanager_cert_signing_failed": "No s'ha pogut firmar el nou certificat", "certmanager_certificate_fetching_or_enabling_failed": "Sembla que utilitzar el nou certificat per {domain} ha fallat...", "certmanager_domain_cert_not_selfsigned": "El certificat pel domini {domain} no és auto-signat Esteu segur de voler canviar-lo? (Utilitzeu «--force» per fer-ho)", - "certmanager_domain_dns_ip_differs_from_public_ip": "Els registres DNS pel domini «{domain}» són diferents a l'adreça IP d'aquest servidor. Mireu la categoria «registres DNS» (bàsic) al diagnòstic per a més informació. Si heu modificat recentment el registre A, si us plau espereu a que es propagui (hi ha eines per verificar la propagació disponibles a internet). (Si sabeu el que esteu fent, podeu utilitzar «--no-checks» per desactivar aquestes comprovacions.)", - "certmanager_domain_http_not_working": "El domini {domain} sembla que no és accessible via HTTP. Verifiqueu la categoria «Web» en el diagnòstic per a més informació. (Si sabeu el que esteu fent, utilitzeu «--no-checks» per deshabilitar les comprovacions.)", + "certmanager_domain_dns_ip_differs_from_public_ip": "Les entrades DNS pel domini «{domain}» són diferents a l'adreça IP d'aquest servidor. Mireu la categoria «registres DNS» (bàsic) al diagnòstic per a més informació. Si heu modificat recentment el registre A, si us plau espereu a que es propagui (hi ha eines per verificar la propagació disponibles a internet). (Si sabeu el que esteu fent, podeu utilitzar «--no-checks» per desactivar aquestes comprovacions.)", + "certmanager_domain_http_not_working": "El domini {domain} sembla que no és accessible via HTTP. Verifiqueu la categoria «Web» en el diagnòstic per a més informació. (Si sabeu el que esteu fent, utilitzeu «--no-checks» per deshabilitar aquestes comprovacions.)", "certmanager_hit_rate_limit": "S'han emès massa certificats recentment per aquest mateix conjunt de dominis {domain}. Si us plau torneu-ho a intentar més tard. Consulteu https://letsencrypt.org/docs/rate-limits/ per obtenir més detalls", "certmanager_no_cert_file": "No s'ha pogut llegir l'arxiu del certificat pel domini {domain} (fitxer: {file})", "certmanager_self_ca_conf_file_not_found": "No s'ha trobat el fitxer de configuració per l'autoritat del certificat auto-signat (fitxer: {file})", "certmanager_unable_to_parse_self_CA_name": "No s'ha pogut analitzar el nom de l'autoritat del certificat auto-signat (fitxer: {file})", - "confirm_app_install_warning": "Atenció: Aquesta aplicació funciona, però no està ben integrada amb YunoHost. Algunes característiques com la autenticació única i la còpia de seguretat/restauració poden no estar disponibles. Voleu instal·lar-la de totes maneres? [{answers}] ", + "confirm_app_install_warning": "Atenció: Aquesta aplicació funciona, però no està ben integrada a YunoHost. Algunes característiques com la autenticació única i la còpia de seguretat/restauració poden no estar disponibles. Voleu instal·lar-la de totes maneres? [{answers}] ", "confirm_app_install_danger": "PERILL! Aquesta aplicació encara és experimental (si no és que no funciona directament)! No hauríeu d'instal·lar-la a no ser que sapigueu el que feu. No obtindreu CAP AJUDA si l'aplicació no funciona o trenca el sistema... Si accepteu el risc, escriviu «{answers}»", - "confirm_app_install_thirdparty": "PERILL! Aquesta aplicació no es part del catàleg d'aplicacions de YunoHost. La instal·lació d'aplicacions de terceres parts pot comprometre la integritat i seguretat del seu sistema. No hauríeu d'instal·lar-ne a no ser que sapigueu el que feu. No obtindreu CAP AJUDA si l'aplicació no funciona o trenca el sistema… Si accepteu el risc, escriviu «{answers}»", + "confirm_app_install_thirdparty": "PERILL! Aquesta aplicació no es part del catàleg d'aplicacions de YunoHost. La instal·lació d'aplicacions de terceres parts pot comprometre la integritat i seguretat del seu sistema. NO hauríeu d'instal·lar-ne a no ser que sapigueu el que feu. No obtindreu CAP AJUDA si l'aplicació no funciona o trenca el sistema… Si accepteu el risc, escriviu «{answers}»", "custom_app_url_required": "Heu de especificar una URL per actualitzar la vostra aplicació personalitzada {app}", "dpkg_is_broken": "No es pot fer això en aquest instant perquè dpkg/APT (els gestors de paquets del sistema) sembla estar mal configurat... Podeu intentar solucionar-ho connectant-vos per SSH i executant «sudo apt install --fix-broken» i/o «sudo dpkg --configure -a».", "domain_cannot_remove_main": "No es pot eliminar «{domain}» ja que és el domini principal, primer s'ha d'establir un nou domini principal utilitzant «yunohost domain main-domain -n »; aquí hi ha una llista dels possibles dominis: {other_domains}", @@ -489,7 +489,7 @@ "diagnosis_http_hairpinning_issue_details": "Això és probablement a causa del router del vostre proveïdor d'accés a internet. El que fa, que gent de fora de la xarxa local pugui accedir al servidor sense problemes, però no la gent de dins la xarxa local (com vostè probablement) quan s'utilitza el nom de domini o la IP global. Podreu segurament millorar la situació fent una ullada a https://yunohost.org/dns_local_network", "backup_archive_cant_retrieve_info_json": "No s'ha pogut carregar la informació de l'arxiu «{archive}»... No s'ha pogut obtenir el fitxer info.json (o no és un fitxer json vàlid).", "backup_archive_corrupted": "Sembla que l'arxiu de la còpia de seguretat «{archive}» està corromput : {error}", - "certmanager_domain_not_diagnosed_yet": "Encara no hi ha cap resultat de diagnòstic per al domini {domain}. Torneu a executar el diagnòstic per a les categories «Registres DNS» i «Web» en la secció de diagnòstic per comprovar que el domini està preparat per a Let's Encrypt. (O si sabeu el que esteu fent, utilitzant «--no-checks» per deshabilitar les comprovacions.)", + "certmanager_domain_not_diagnosed_yet": "Encara no hi ha cap resultat de diagnòstic per al domini {domain}. Torneu a executar el diagnòstic per a les categories «Registres DNS» i «Web» en la secció de diagnòstic per comprovar que el domini està preparat per a Let's Encrypt. (O si sabeu el que esteu fent, utilitzant «--no-checks» per deshabilitar aquestes comprovacions.)", "diagnosis_ip_no_ipv6_tip": "Utilitzar una IPv6 no és obligatori per a que funcioni el servidor, però és millor per la salut d'Internet en conjunt. La IPv6 hauria d'estar configurada automàticament pel sistema o pel proveïdor si està disponible. Si no és el cas, pot ser necessari configurar alguns paràmetres més de forma manual tal i com s'explica en la documentació disponible aquí: https://yunohost.org/#/ipv6. Si no podeu habilitar IPv6 o us sembla massa tècnic, podeu ignorar aquest avís sense problemes.", "diagnosis_domain_expiration_not_found": "No s'ha pogut comprovar la data d'expiració d'alguns dominis", "diagnosis_domain_not_found_details": "El domini {domain} no existeix en la base de dades WHOIS o ha expirat!", @@ -522,7 +522,7 @@ "app_manifest_install_ask_is_public": "Aquesta aplicació hauria de ser visible per a visitants anònims?", "app_manifest_install_ask_admin": "Escolliu l'usuari administrador per aquesta aplicació", "app_manifest_install_ask_password": "Escolliu la contrasenya d'administració per aquesta aplicació", - "app_manifest_install_ask_path": "Escolliu la ruta en la que s'hauria d'instal·lar aquesta aplicació", + "app_manifest_install_ask_path": "Escolliu la ruta de l'URL (després del domini) on s'ha d'instal·lar aquesta aplicació", "app_manifest_install_ask_domain": "Escolliu el domini en el que s'hauria d'instal·lar aquesta aplicació", "app_label_deprecated": "Aquesta ordre està desestimada! Si us plau utilitzeu la nova ordre «yunohost user permission update» per gestionar l'etiqueta de l'aplicació.", "app_argument_password_no_default": "Hi ha hagut un error al analitzar l'argument de la contrasenya «{name}»: l'argument de contrasenya no pot tenir un valor per defecte per raons de seguretat", @@ -544,5 +544,48 @@ "global_settings_setting_postfix_compatibility_help": "Solució de compromís entre compatibilitat i seguretat pel servidor Postfix. Afecta els criptògrafs (i altres aspectes relacionats amb la seguretat)", "global_settings_setting_ssh_compatibility_help": "Solució de compromís entre compatibilitat i seguretat pel servidor SSH. Afecta els criptògrafs (i altres aspectes relacionats amb la seguretat). Visita https://infosec.mozilla.org/guidelines/openssh (anglés) per mes informació.", "global_settings_setting_smtp_allow_ipv6_help": "Permet l'ús de IPv6 per rebre i enviar correus electrònics", - "global_settings_setting_smtp_relay_enabled_help": "L'amfitrió de tramesa SMTP que s'ha d'utilitzar per enviar correus electrònics en lloc d'aquesta instància de YunoHost. És útil si esteu en una de les següents situacions: el port 25 està bloquejat per el vostre proveïdor d'accés a internet o proveïdor de servidor privat virtual, si teniu una IP residencial llistada a DUHL, si no podeu configurar el DNS invers o si el servidor no està directament exposat a internet i voleu utilitzar-ne un altre per enviar correus electrònics." -} \ No newline at end of file + "global_settings_setting_smtp_relay_enabled_help": "L'amfitrió de tramesa SMTP que s'ha d'utilitzar per enviar correus electrònics en lloc d'aquesta instància de YunoHost. És útil si esteu en una de les següents situacions: el port 25 està bloquejat per el vostre proveïdor d'accés a internet o proveïdor de servidor privat virtual, si teniu una IP residencial llistada a DUHL, si no podeu configurar el DNS invers o si el servidor no està directament exposat a internet i voleu utilitzar-ne un altre per enviar correus electrònics.", + "config_validate_date": "Hauria de ser una data vàlida com en el format AAAA-MM-DD", + "config_validate_email": "Hauria de ser un correu electrònic vàlid", + "app_failed_to_upgrade_but_continue": "L'aplicació {failed_app} no s'ha pogut actualitzar. Continueu amb les properes actualitzacions tal com se sol·licita. Executeu «yunohost log show {operation_logger_name}» per veure el registre d'errors", + "app_not_enough_disk": "Aquesta aplicació requereix {required} espai lliure.", + "app_not_upgraded_broken_system": "L'aplicació «{failed_app}» no s'ha pogut actualitzar i ha posat el sistema en un estat trencat i, com a conseqüència, s'han cancel·lat les actualitzacions de les aplicacions següents: {apps}", + "apps_failed_to_upgrade": "No s'han pogut actualitzar aquestes aplicacions: {apps}", + "app_arch_not_supported": "Aquesta aplicació només es pot instal·lar a les arquitectures {required}, però l'arquitectura del vostre servidor és {current}", + "app_resource_failed": "No s'ha pogut subministrar, desaprovisionar o actualitzar recursos per a {app}: {error}", + "app_yunohost_version_not_supported": "Aquesta aplicació requereix YunoHost >= {required} però la versió instal·lada actual és {current}", + "config_action_failed": "No s'ha pogut executar l'acció «{action}»: {error}", + "config_apply_failed": "No s'ha pogut aplicar la configuració nova: {error}", + "config_validate_color": "Hauria de ser un color hexadecimal RGB vàlid", + "app_config_unable_to_apply": "No s'han pogut aplicar els valors del tauler de configuració.", + "app_failed_to_download_asset": "No s'ha pogut baixar el recurs «{source_id}» ({url}) per a {app}: {out}", + "app_not_upgraded_broken_system_continue": "L'aplicació «{failed_app}» no s'ha pogut actualitzar i ha posat el sistema en un estat trencat (per tant, s'ignora --continue-on-failure) i, com a conseqüència, s'han cancel·lat les actualitzacions de les aplicacions següents: {apps}", + "config_forbidden_readonly_type": "El tipus «{type}» no es pot establir com a només lectura; utilitzeu un altre tipus per representar aquest valor (identificador d'argument rellevant: «{id}»).", + "app_manifest_install_ask_init_admin_permission": "Qui hauria de tenir accés a les funcions d'administració d'aquesta aplicació? (Això es pot canviar més endavant)", + "admins": "Administradors", + "all_users": "Tots els usuaris de YunoHost", + "app_action_failed": "No s'ha pogut executar l'acció {action} per a l'aplicació {app}", + "app_manifest_install_ask_init_main_permission": "Qui hauria de tenir accés a aquesta aplicació? (Això es pot canviar més endavant)", + "ask_admin_fullname": "Nom complet de l'administrador", + "certmanager_cert_install_failed": "La instal·lació del certificat de Let's Encrypt ha fallat per a {domains}", + "certmanager_cert_install_failed_selfsigned": "La instal·lació del certificat autofirmat ha fallat per a {domains}", + "certmanager_cert_renew_failed": "La renovació del certificat de Let's Encrypt ha fallat per a {domains}", + "config_action_disabled": "No s'ha pogut executar l'acció «{action}» perquè està desactivada, assegureu-vos de complir les seves limitacions. ajuda: {help}", + "config_forbidden_keyword": "La paraula clau «{keyword}» està reservada, no podeu crear ni utilitzar un tauler de configuració amb una pregunta amb aquest identificador.", + "config_no_panel": "No s'ha trobat cap tauler de configuració.", + "config_validate_time": "Hauria de ser una hora vàlida com HH:MM", + "config_validate_url": "Hauria de ser un URL web vàlid", + "app_change_url_failed": "No s'ha pogut canviar l'URL per a {app}: {error}", + "app_change_url_require_full_domain": "{app} no es pot moure a aquest URL nou perquè requereix un domini complet (és a dir, amb el camí = /)", + "app_change_url_script_failed": "S'ha produït un error a l'script de canvi d'URL", + "app_config_unable_to_read": "No s'han pogut llegir els valors del tauler de configuració.", + "ask_admin_username": "Nom d'usuari de l'administrador", + "ask_fullname": "Nom complet", + "config_unknown_filter_key": "La clau de filtre «{filter_key}» és incorrecta.", + "ask_dyndns_recovery_password_explain_unavailable": "Aquest domini DynDNS ja està registrat. Si sou la persona que va registrar originalment aquest domini, podeu introduir la contrasenya de recuperació per recuperar aquest domini.", + "app_not_enough_ram": "Aquesta aplicació requereix RAM {required} per instal·lar/actualitzar, però només {current} està disponible ara mateix.", + "ask_dyndns_recovery_password_explain": "Si us plau, trieu una contrasenya de recuperació per al vostre domini DynDNS, en cas que hàgiu de restablir-la més tard.", + "ask_dyndns_recovery_password": "Contrasenya de recuperació de DynDNS", + "ask_dyndns_recovery_password_explain_during_unsubscribe": "Introduïu la contrasenya de recuperació d'aquest domini DynDNS.", + "config_cant_set_value_on_section": "No podeu establir un sol valor en una secció sencera de configuració." +} From 9d9c68f4bfbede922d4c4c18b6e0f4b45c920af3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20M?= Date: Mon, 29 Jan 2024 07:10:17 +0000 Subject: [PATCH 18/64] Translated using Weblate (Galician) Currently translated at 100.0% (783 of 783 strings) Translation: YunoHost/core Translate-URL: https://translate.yunohost.org/projects/yunohost/core/gl/ --- locales/gl.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/gl.json b/locales/gl.json index 327a24b0a..f4d7a7491 100644 --- a/locales/gl.json +++ b/locales/gl.json @@ -653,7 +653,7 @@ "global_settings_setting_ssh_compatibility_help": "Compromiso entre compatibilidade e seguridade para o servidor SSH. Aféctalle ao cifrado (e outros aspectos da seguridade). Le https://infosec.mozilla.org/guidelines/openssh for more info.", "global_settings_setting_ssh_password_authentication_help": "Permitir autenticación con contrasinal para SSH", "global_settings_setting_ssh_port": "Porto SSH", - "global_settings_setting_webadmin_allowlist_help": "Enderezos IP con permiso para acceder á webadmin. Separados por vírgulas.", + "global_settings_setting_webadmin_allowlist_help": "Enderezos IP con permiso para acceder á webadmin. Permítese a notación CIDR.", "global_settings_setting_webadmin_allowlist_enabled_help": "Permitir que só algúns IPs accedan á webadmin.", "global_settings_setting_smtp_allow_ipv6_help": "Permitir o uso de IPv6 para recibir e enviar emais", "global_settings_setting_smtp_relay_enabled_help": "Servidor repetidor SMTP para enviar emails no lugar da túa instancia yunohost. É útil se estás nunha destas situacións: o teu porto 25 está bloqueado polo teu provedor ISP u VPN, se tes unha IP residencial nunha lista DUHL, se non podes configurar DNS inversa ou se este servidor non ten conexión directa a internet e queres utilizar outro para enviar os emails.", From 582dc2d4f07aa4c42ad824e76d4e77e317ddbd6c Mon Sep 17 00:00:00 2001 From: Francescc Date: Tue, 30 Jan 2024 00:42:09 +0000 Subject: [PATCH 19/64] Translated using Weblate (Catalan) Currently translated at 81.3% (637 of 783 strings) Translation: YunoHost/core Translate-URL: https://translate.yunohost.org/projects/yunohost/core/ca/ --- locales/ca.json | 74 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 67 insertions(+), 7 deletions(-) diff --git a/locales/ca.json b/locales/ca.json index 445c64b9a..bbc580a5e 100644 --- a/locales/ca.json +++ b/locales/ca.json @@ -451,7 +451,7 @@ "certmanager_warning_subdomain_dns_record": "El subdomini «{subdomain}» no resol a la mateixa adreça IP que «{domain}». Algunes funcions no estaran disponibles fins que no s'hagi arreglat i s'hagi regenerat el certificat.", "domain_cannot_add_xmpp_upload": "No podeu afegir dominis començant per «xmpp-upload.». Aquest tipus de nom està reservat per a la funció de pujada de XMPP integrada a YunoHost.", "diagnosis_display_tip": "Per veure els problemes que s'han trobat, podeu anar a la secció de Diagnòstic a la pàgina web d'administració, o utilitzar « yunohost diagnostic show --issues --human-readable» a la línia de comandes.", - "diagnosis_mail_outgoing_port_25_blocked_relay_vpn": "Alguns proveïdors no permeten desbloquejar el port de sortida 25 perquè no els hi importa la Neutralitat de la Xarxa.
- Alguns d'ells ofereixen l'alternativa d'utilitzar un relay de servidor de correu electrònic tot i que implica que el relay serà capaç d'espiar el tràfic de correus electrònics.
- Una alternativa respectuosa amb la privacitat és utilitzar una VPN *amb una IP pública dedicada* per sortejar aquest tipus de limitació. Vegeu https://yunohost.org/#/vpn_advantage
- També podeu considerar canviar-vos a un proveïdor més respectuós de la neutralitat de la xarxa", + "diagnosis_mail_outgoing_port_25_blocked_relay_vpn": "Alguns proveïdors no permeten desbloquejar el port de sortida 25 perquè no els hi importa la Neutralitat de la Xarxa.
- Alguns d'ells ofereixen l'alternativa d'utilitzar un relay de servidor de correu electrònic tot i que implica que el relay serà capaç d'espiar el tràfic de correus electrònics.
- Una alternativa respectuosa amb la privacitat és utilitzar una VPN *amb una IP pública dedicada* per sortejar aquestos tipus de limitacions. Vegeu https://yunohost.org/#/vpn_advantage
- També podeu considerar canviar-vos a un proveïdor més respectuós de la neutralitat de la xarxa", "diagnosis_ip_global": "IP global: {global}", "diagnosis_ip_local": "IP local: {local}", "diagnosis_dns_point_to_doc": "Consulteu la documentació a https://yunohost.org/dns_config si necessiteu ajuda per configurar els registres DNS.", @@ -479,13 +479,13 @@ "diagnosis_http_nginx_conf_not_up_to_date_details": "Per arreglar el problema, mireu les diferències amb la línia d'ordres utilitzant yunohost tools regen-conf nginx --dry-run --with-diff i si els canvis us semblen bé els podeu fer efectius utilitzant yunohost tools regen-conf nginx --force.", "diagnosis_mail_ehlo_unreachable_details": "No s'ha pogut establir una connexió amb el vostre servidor en el port 25 amb IPv{ipversion}. Sembla que el servidor no és accessible.
1. La causa més comú per aquest problema és que el port 25 no està correctament redireccionat cap al vostre servidor.
2. També us hauríeu d'assegurar que el servei postfix estigui funcionant.
3. En configuracions més complexes: assegureu-vos que que no hi hagi cap tallafoc ni reverse-proxy interferint.", "diagnosis_mail_ehlo_wrong_details": "El EHLO rebut pel servidor de diagnòstic remot amb IPv{ipversion} és diferent al domini del vostre servidor.
EHLO rebut: {wrong_ehlo}
Esperat: {right_ehlo}
La causa més habitual d'aquest problema és que el port 25 no està correctament reenviat cap al vostre servidor. També podeu comprovar que no hi hagi un tallafocs o un reverse-proxy interferint.", - "diagnosis_mail_fcrdns_dns_missing": "No hi ha cap DNS invers definit per IPv{ipversion}. Alguns correus electrònics poden no entregar-se o poden ser marcats com a correu brossa.", - "diagnosis_mail_blacklist_website": "Després d'haver identificat perquè estàveu llistats i haver arreglat el problema, no dubteu en demanar que la vostra IP o domini sigui eliminat de {blacklist_website}", + "diagnosis_mail_fcrdns_dns_missing": "No hi ha cap DNS invers definit per IPv{ipversion}. Alguns correus electrònics poden no entregar-se o ser marcats com a correu brossa.", + "diagnosis_mail_blacklist_website": "Després d'haver identificat perquè estàveu llistats i arreglat el problema, no dubteu a demanar que la vostra IP o domini sigui eliminat de {blacklist_website}", "diagnosis_ports_partially_unreachable": "El port {port} no és accessible des de l'exterior amb IPv{failed}.", "diagnosis_http_partially_unreachable": "El domini {domain} sembla que no és accessible utilitzant HTTP des de l'exterior de la xarxa local amb IPv{failed}, tot i que funciona amb IPv{passed}.", - "diagnosis_mail_fcrdns_nok_details": "Hauríeu d'intentar configurar primer el DNS invers amb {ehlo_domain} en la interfície del router o en la interfície del vostre allotjador. (Alguns allotjadors requereixen que obris un informe de suport per això).", + "diagnosis_mail_fcrdns_nok_details": "Hauríeu d'intentar primer configurar el DNS invers amb {ehlo_domain} en la interfície del router o en la interfície del vostre allotjador. (Alguns proveïdors d'allotjament requereixen que obris un informe de suport per això).", "diagnosis_mail_fcrdns_nok_alternatives_4": "Alguns proveïdors no permeten configurar el DNS invers (o aquesta funció pot no funcionar…). Si teniu problemes a causa d'això, considereu les solucions següents:
- Alguns proveïdors d'accés a internet (ISP) donen l'alternativa de utilitzar un relay de servidor de correu electrònic tot i que implica que el relay podrà espiar el trànsit de correus electrònics.
- Una alternativa respectuosa amb la privacitat és utilitzar una VPN *amb una IP pública dedicada* per sobrepassar aquest tipus de limitacions. Mireu https://yunohost.org/#/vpn_advantage
- O es pot canviar a un proveïdor diferent", - "diagnosis_mail_fcrdns_nok_alternatives_6": "Alguns proveïdors no permeten configurar el vostre DNS invers (o la funció no els hi funciona…). Si el vostre DNS invers està correctament configurat per IPv4, podeu intentar deshabilitar l'ús de IPv6 per a enviar correus electrònics utilitzant yunohost settings set smtp.allow_ipv6 -v off. Nota: aquesta última solució implica que no podreu enviar o rebre correus electrònics cap a els pocs servidors que hi ha que només tenen IPv-6.", + "diagnosis_mail_fcrdns_nok_alternatives_6": "Alguns proveïdors no permeten configurar el vostre DNS invers (o la funció no els hi funciona…). Si el vostre DNS invers està correctament configurat per IPv4, podeu intentar deshabilitar l'ús de IPv6 per a enviar correus electrònics utilitzant yunohost settings set email.smtp.smtp_allow_ipv6 -v off. Nota: aquesta última solució implica que no podreu enviar o rebre correus electrònics cap a els pocs servidors que hi ha que només tenen IPv-6.", "diagnosis_http_hairpinning_issue_details": "Això és probablement a causa del router del vostre proveïdor d'accés a internet. El que fa, que gent de fora de la xarxa local pugui accedir al servidor sense problemes, però no la gent de dins la xarxa local (com vostè probablement) quan s'utilitza el nom de domini o la IP global. Podreu segurament millorar la situació fent una ullada a https://yunohost.org/dns_local_network", "backup_archive_cant_retrieve_info_json": "No s'ha pogut carregar la informació de l'arxiu «{archive}»... No s'ha pogut obtenir el fitxer info.json (o no és un fitxer json vàlid).", "backup_archive_corrupted": "Sembla que l'arxiu de la còpia de seguretat «{archive}» està corromput : {error}", @@ -533,7 +533,7 @@ "postinstall_low_rootfsspace": "El sistema de fitxers arrel té un total de menys de 10 GB d'espai, el que es preocupant! És molt probable que us quedeu sense espai ràpidament! Es recomana tenir un mínim de 16 GB per al sistema de fitxers arrel. Si voleu instal·lar YunoHost tot i aquest avís, torneu a executar la postinstal·lació amb --force-diskspace", "diagnosis_rootfstotalspace_critical": "El sistema de fitxers arrel només té {space} en total i és preocupant! És molt probable que us quedeu sense espai ràpidament! Es recomanar tenir un mínim de 16 GB per al sistema de fitxers arrel.", "diagnosis_rootfstotalspace_warning": "El sistema de fitxers arrel només té {space} en total. Això no hauria de causar cap problema, però haureu de parar atenció ja que us podrieu quedar sense espai ràpidament… Es recomanar tenir un mínim de 16 GB per al sistema de fitxers arrel.", - "diagnosis_sshd_config_inconsistent": "Sembla que el port SSH s'ha modificat manualment a /etc/ssh/sshd_config. Des de YunoHost 4.2, hi ha un nou paràmetre global «security.ssh.port» per evitar modificar manualment la configuració.", + "diagnosis_sshd_config_inconsistent": "Sembla que el port SSH s'ha modificat manualment a /etc/ssh/sshd_config. Des de YunoHost 4.2, hi ha un nou paràmetre global «security.ssh.ssh_port» per evitar modificar manualment la configuració.", "diagnosis_sshd_config_insecure": "Sembla que la configuració SSH s'ha modificat manualment, i no es segura ha que no conté la directiva «AllowGroups» o «AllowUsers» per limitar l'accés a usuaris autoritzats.", "backup_create_size_estimation": "L'arxiu tindrà aproximadament {size} de dades.", "app_restore_script_failed": "S'ha produït un error en el script de restauració de l'aplicació", @@ -587,5 +587,65 @@ "ask_dyndns_recovery_password_explain": "Si us plau, trieu una contrasenya de recuperació per al vostre domini DynDNS, en cas que hàgiu de restablir-la més tard.", "ask_dyndns_recovery_password": "Contrasenya de recuperació de DynDNS", "ask_dyndns_recovery_password_explain_during_unsubscribe": "Introduïu la contrasenya de recuperació d'aquest domini DynDNS.", - "config_cant_set_value_on_section": "No podeu establir un sol valor en una secció sencera de configuració." + "config_cant_set_value_on_section": "No podeu establir un sol valor en una secció sencera de configuració.", + "diagnosis_http_special_use_tld": "El domini {domain} es basa en un domini de primer nivell (TLD) d'ús especial com ara .local o .test i, per tant, no s'espera que estigui exposat fora de la xarxa local.", + "diagnosis_apps_deprecated_practices": "La versió instal·lada d'aquesta aplicació encara utilitza algunes pràctiques d'empaquetament molt antigues i obsoletes. Realment hauríeu de considerar actualitzar-lo.", + "diagnosis_high_number_auth_failures": "Recentment, hi ha hagut un nombre massa alt d'errors d'autenticació. És possible que vulgueu assegurar-vos que fail2ban s'està executant i està configurat correctament, o bé utilitzar un port personalitzat per a SSH tal com s'explica a https://yunohost.org/security.", + "apps_failed_to_upgrade_line": "\n * {app_id} (per veure el registre corresponent, feu «yunohost log show {operation_logger_name}»)", + "diagnosis_description_apps": "Aplicacions", + "diagnosis_using_yunohost_testing": "apt (el gestor de paquets del sistema) està configurat actualment per instal·lar qualsevol actualització de «prova» per al nucli de YunoHost.", + "domain_config_acme_eligible_explain": "Aquest domini no sembla preparat per a un certificat Let's Encrypt. Comproveu la vostra configuració de DNS i la visibilitat del servidor HTTP. La secció \"Registres DNS\" i \"Web\" a la pàgina de diagnòstic us poden ajudar a entendre què està mal configurat.", + "domain_config_api_protocol": "Protocol API", + "domain_dns_push_already_up_to_date": "Registres ja actualitzats, res a fer.", + "confirm_notifications_read": "ADVERTÈNCIA: hauríeu de comprovar les notificacions de l'aplicació anteriors abans de continuar, és possible que hi hagi coses importants a saber. [{answers}]", + "diagnosis_sshd_config_inconsistent_details": "Si us plau, executeu yunohost settings set security.ssh.ssh_port -v YOUR_SSH_PORT per definir el port SSH i comproveu yunohost tools regen-conf ssh --dry-run --with-diff i yunohost tools regen-conf ssh --force per restablir la vostra configuració a la recomanació de YunoHost.", + "disk_space_not_sufficient_install": "No queda prou espai al disc per instal·lar aquesta aplicació", + "domain_config_mail_in": "Correus entrants", + "domain_config_mail_out": "Correus sortints", + "domain_dns_push_managed_in_parent_domain": "La funció de configuració automàtica de DNS es gestiona al domini principal {parent_domain}.", + "diagnosis_apps_broken": "Aquesta aplicació està actualment marcada com a trencada al catàleg d'aplicacions de YunoHost. Pot ser un problema temporal mentre els responsables intenten solucionar el problema. Mentrestant, l'actualització d'aquesta aplicació està desactivada.", + "diagnosis_apps_not_in_app_catalog": "Aquesta aplicació no es troba al catàleg d'aplicacions de YunoHost. Si hi era en el passat i s'ha eliminat, hauríeu de considerar la desinstal·lació d'aquesta aplicació, ja que no rebrà actualitzacions i pot comprometre la integritat i la seguretat del vostre sistema.", + "danger": "Perill:", + "diagnosis_dns_specialusedomain": "El domini {domain} es basa en un domini de primer nivell (TLD) d'ús especial com ara .local o .test i, per tant, no s'espera que tingui registres DNS reals.", + "domain_dns_push_failed_to_authenticate": "No s'ha pogut autenticar a l'API del registrador per al domini «{domain}». El més probable és que les credencials siguin incorrectes (error: {error})", + "diagnosis_ip_no_ipv6_tip_important": "IPv6 normalment l'hauria de configurar automàticament el sistema o el vostre proveïdor si està disponible. En cas contrari, és possible que hàgiu de configurar algunes coses manualment tal com s'explica a la documentació aquí: https://yunohost.org/#/ipv6.", + "diagnosis_using_yunohost_testing_details": "Probablement això està bé si sabeu què feu, però presteu atenció a les notes de la versió abans d'instal·lar les actualitzacions de YunoHost! Si voleu desactivar les actualitzacions de «prova», hauríeu d'eliminar la paraula clau testing de /etc/apt/sources.list.d/yunohost.list.", + "disk_space_not_sufficient_update": "No queda prou espai al disc per actualitzar aquesta aplicació", + "domain_config_auth_application_key": "Clau d'aplicació", + "domain_config_auth_application_secret": "Clau secreta d'aplicació", + "domain_config_auth_consumer_key": "Clau del consumidor", + "domain_config_auth_entrypoint": "Punt d'entrada de l'API", + "domain_config_cert_renew_help": "El certificat es renovarà automàticament durant els darrers 15 dies de validesa. Podeu renovar-lo manualment si voleu (no es recomana).", + "domain_config_cert_summary": "Estat del certificat", + "domain_config_cert_validity": "Validesa", + "domain_config_default_app": "Aplicació per defecte", + "domain_config_xmpp": "Missatgeria instantània (XMPP)", + "domain_dns_conf_special_use_tld": "Aquest domini es basa en un domini de primer nivell (TLD) d'ús especial com ara .local o .test i, per tant, no s'espera que tingui registres DNS reals.", + "domain_dns_push_partial_failure": "Registres DNS parcialment actualitzats: s'han notificat alguns avisos/errors.", + "domain_config_auth_secret": "Secret d'autenticació", + "domain_dns_push_failed_to_list": "No s'han pogut llistar les entrades actuals mitjançant l'API del registrador: {error}", + "diagnosis_apps_allgood": "Totes les aplicacions instal·lades respecten les pràctiques bàsiques d'empaquetament", + "diagnosis_apps_issue": "S'ha trobat un problema per a l'aplicació {app}", + "diagnosis_using_stable_codename": "apt (el gestor de paquets del sistema) està configurat actualment per instal·lar paquets des del nom en codi «stable», en lloc del nom en clau de la versió actual de Debian.", + "domain_config_auth_key": "Clau d'autenticació", + "domain_config_cert_install": "Instal·la el certificat Let's Encrypt", + "domain_config_cert_issuer": "Autoritat de certificació", + "domain_config_cert_no_checks": "Ignorar les comprovacions de diagnòstic", + "domain_config_cert_renew": "Renova el certificat Let's Encrypt", + "domain_config_cert_summary_letsencrypt": "Genial! Esteu utilitzant un certificat de Let's Encrypt vàlid!", + "domain_config_cert_summary_ok": "D'acord, el certificat actual sembla bo!", + "domain_config_cert_summary_selfsigned": "ADVERTIMENT: el certificat actual està signat per ell mateix. Els navegadors mostraran un avís esgarrifós als nous visitants!", + "diagnosis_apps_bad_quality": "Aquesta aplicació està actualment marcada com a trencada al catàleg d'aplicacions de YunoHost. Pot ser un problema temporal mentre els responsables intenten solucionar el problema. Mentrestant, l'actualització d'aquesta aplicació està desactivada.", + "diagnosis_using_stable_codename_details": "Això sol ser causat per una configuració incorrecta del vostre proveïdor d'allotjament. Això és perillós, perquè tan bon punt la propera versió de Debian es converteixi en la nova «stable», apt voldrà actualitzar tots els paquets del sistema sense passar per un procediment de migració adequat. Es recomana arreglar-ho editant la font d'apt per al dipòsit de Debian bàsic i substituir la paraula clau stable pel nom en clau de la versió estable actual. El fitxer de configuració corresponent hauria de ser /etc/apt/sources.list, o un fitxer a /etc/apt/sources.list.d/.", + "confirm_app_insufficient_ram": "PERILL! Aquesta aplicació requereix {required} de RAM per instal·lar/actualitzar, però només n'hi ha {current} disponibles ara mateix. Fins i tot si aquesta aplicació es pot executar, el seu procés d'instal·lació/actualització requereix una gran quantitat de memòria RAM, de manera que el servidor es pot congelar i fallar miserablement. Si esteu disposat a córrer aquest risc de totes maneres, escriviu «{answers}»", + "diagnosis_apps_outdated_ynh_requirement": "La versió instal·lada d'aquesta aplicació només requereix yunohost >= 2.x o 3.x, la qual cosa acostuma a indicar que no està al dia amb les pràctiques d'empaquetament i els ajudants recomanats. Realment hauríeu de considerar actualitzar-la.", + "domain_cannot_add_muc_upload": "No podeu afegir dominis que comencin per 'muc.'. Aquest tipus de nom està reservat per a la funció de xat multiusuari XMPP integrada a YunoHost.", + "domain_config_acme_eligible": "Elegibilitat (per a l') ACME", + "domain_config_auth_token": "Token d'autenticació", + "domain_config_cert_summary_abouttoexpire": "El certificat actual està a punt de caducar. Aviat s'hauria de renovar automàticament.", + "domain_config_cert_summary_expired": "CRÍTIC: el certificat actual no és vàlid! HTTPS no funcionarà en absolut!", + "domain_config_default_app_help": "Es redirigirà automàticament a aquesta aplicació en obrir aquest domini. Si no s'especifica cap aplicació, es redirigeix al formulari d'inici de sessió del portal de l'usuari.", + "domain_config_xmpp_help": "NB: algunes funcions XMPP requeriran que actualitzeu els vostres registres DNS i que regenereu el vostre certificat Let's Encrypt perquè estigui activat", + "domain_dns_push_failed": "L'actualització dels registres DNS ha fallat estrepitosament.", + "domain_dns_push_not_applicable": "La funció de configuració automàtica de DNS no és aplicable al domini {domain}. Hauríeu de configurar manualment els vostres registres DNS seguint la documentació a https://yunohost.org/dns_config." } From 55b601369de78a20735afe007204fb5cabdc892a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Sol=C3=ADs?= Date: Wed, 31 Jan 2024 16:06:09 +0000 Subject: [PATCH 20/64] Translated using Weblate (Spanish) Currently translated at 100.0% (783 of 783 strings) Translation: YunoHost/core Translate-URL: https://translate.yunohost.org/projects/yunohost/core/es/ --- locales/es.json | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/locales/es.json b/locales/es.json index 77c837bcf..d4d18ef56 100644 --- a/locales/es.json +++ b/locales/es.json @@ -23,7 +23,7 @@ "ask_password": "Contraseña", "backup_app_failed": "No se pudo respaldar «{app}»", "backup_archive_app_not_found": "No se pudo encontrar «{app}» en el archivo de respaldo", - "backup_archive_name_exists": "Ya existe un archivo de respaldo con este nombre.", + "backup_archive_name_exists": "Ya existe un archivo de respaldo con el nombre '{name}'.", "backup_archive_name_unknown": "Copia de seguridad local desconocida '{name}'", "backup_archive_open_failed": "No se pudo abrir el archivo de respaldo", "backup_cleaning_failed": "No se pudo limpiar la carpeta de respaldo temporal", @@ -99,7 +99,7 @@ "service_cmd_exec_failed": "No se pudo ejecutar la orden «{command}»", "service_disable_failed": "No se pudo hacer que el servicio '{service}' no se iniciara en el arranque.\n\nRegistros de servicio recientes: {logs}", "service_disabled": "El servicio '{service}' ya no se iniciará cuando se inicie el sistema.", - "service_enable_failed": "No se pudo hacer que el servicio '{service}' se inicie automáticamente en el arranque.\n\nRegistros de servicio recientes: {logs s}", + "service_enable_failed": "No se pudo hacer que el servicio '{service}' se inicie automáticamente en el arranque.\n\nRegistros de servicio recientes: {logs}", "service_enabled": "El servicio '{service}' ahora se iniciará automáticamente durante el arranque del sistema.", "service_remove_failed": "No se pudo eliminar el servicio «{service}»", "service_removed": "Servicio '{service}' eliminado", @@ -412,7 +412,7 @@ "diagnosis_ram_ok": "El sistema aún tiene {available} ({available_percent}%) de RAM de un total de {total}.", "diagnosis_swap_none": "El sistema no tiene mas espacio de intercambio. Considera agregar por lo menos {recommended} de espacio de intercambio para evitar que el sistema se quede sin memoria.", "diagnosis_swap_notsomuch": "Al sistema le queda solamente {total} de espacio de intercambio. Considera agregar al menos {recommended} para evitar que el sistema se quede sin memoria.", - "diagnosis_mail_outgoing_port_25_blocked": "El puerto de salida 25 parece estar bloqueado. Intenta desbloquearlo con el panel de configuración de tu proveedor de servicios de Internet (o proveedor de halbergue). Mientras tanto, el servidor no podrá enviar correos electrónicos a otros servidores.", + "diagnosis_mail_outgoing_port_25_blocked": "El servidor de correo SMTP no puede enviar correos electrónicos porque el puerto saliente 25 está bloqueado en IPv{ipversion}.", "diagnosis_regenconf_allgood": "¡Todos los archivos de configuración están en línea con la configuración recomendada!", "diagnosis_regenconf_manually_modified": "El archivo de configuración {file} parece que ha sido modificado manualmente.", "diagnosis_regenconf_manually_modified_details": "¡Esto probablemente esta BIEN si sabes lo que estás haciendo! YunoHost dejará de actualizar este fichero automáticamente... Pero ten en cuenta que las actualizaciones de YunoHost pueden contener importantes cambios que están recomendados. Si quieres puedes comprobar las diferencias mediante yunohost tools regen-conf {category} --dry-run --with-diff o puedes forzar el volver a las opciones recomendadas mediante el comando yunohost tools regen-conf {category} --force", @@ -427,7 +427,7 @@ "diagnosis_ports_needed_by": "La apertura de este puerto es requerida para la funcionalidad {category} (service {service})", "diagnosis_ports_ok": "El puerto {port} es accesible desde internet.", "diagnosis_ports_unreachable": "El puerto {port} no es accesible desde internet.", - "diagnosis_ports_could_not_diagnose": "No se puede comprobar si los puertos están accesibles desde el exterior.", + "diagnosis_ports_could_not_diagnose": "No se puede comprobar si los puertos están accesibles desde el exterior en IPv{ipversion}.", "diagnosis_ports_could_not_diagnose_details": "Error: {error}", "diagnosis_description_regenconf": "Configuraciones de sistema", "diagnosis_description_mail": "Correo electrónico", @@ -444,7 +444,7 @@ "diagnosis_http_connection_error": "Error de conexión: Ne se pudo conectar al dominio solicitado.", "diagnosis_http_timeout": "Tiempo de espera agotado al intentar contactar tu servidor desde el exterior. Parece que no sea alcanzable.
1. La causa más común es que el puerto 80 (y el 443) no estén correctamente redirigidos a tu servidor.
2. Deberías asegurarte que el servicio nginx está en marcha.
3. En situaciones más complejas: asegurate de que ni el cortafuegos ni el proxy inverso estén interfiriendo.", "diagnosis_http_ok": "El Dominio {domain} es accesible desde internet a través de HTTP.", - "diagnosis_http_could_not_diagnose": "No se pudo verificar si el dominio es accesible desde internet.", + "diagnosis_http_could_not_diagnose": "No se pudo verificar si los dominios son accesibles desde el exterior en IPv{ipversion}.", "diagnosis_http_could_not_diagnose_details": "Error: {error}", "diagnosis_ports_forwarding_tip": "Para solucionar este incidente, lo más seguro deberías configurar la redirección de los puertos en el router como se especifica en https://yunohost.org/isp_box_config", "certmanager_warning_subdomain_dns_record": "El subdominio '{subdomain}' no se resuelve en la misma dirección IP que '{domain}'. Algunas funciones no estarán disponibles hasta que solucione esto y regenere el certificado.", @@ -653,7 +653,7 @@ "global_settings_setting_ssh_compatibility_help": "Compromiso entre compatibilidad y seguridad para el servidor SSH. Afecta al cifrado (y otros aspectos relacionados con la seguridad). Visite https://infosec.mozilla.org/guidelines/openssh (inglés) para más información.", "global_settings_setting_ssh_password_authentication_help": "Permitir autenticación de contraseña para SSH", "global_settings_setting_ssh_port": "Puerto SSH", - "global_settings_setting_webadmin_allowlist_help": "Direcciones IP permitidas para acceder al webadmin. Separado por comas.", + "global_settings_setting_webadmin_allowlist_help": "Direcciones IP permitidas para acceder al webadmin. Se permite notación CIDR.", "global_settings_setting_webadmin_allowlist_enabled_help": "Permita que solo algunas IP accedan al administrador web.", "global_settings_setting_smtp_allow_ipv6_help": "Permitir el uso de IPv6 para enviar y recibir correo", "global_settings_setting_smtp_relay_enabled_help": "El servidor relay de SMTP para enviar correo en lugar de esta instalación YunoHost. Útil si estás en una de estas situaciones: tu puerto 25 esta bloqueado por tu ISP o VPS, si estás en usado una IP marcada como residencial o DUHL, si no puedes configurar un DNS inverso o si el servidor no está directamente expuesto a internet y quieres utilizar otro servidor para enviar correos.", @@ -699,7 +699,7 @@ "global_settings_setting_security_experimental_enabled": "Funciones de seguridad experimentales", "migration_0024_rebuild_python_venv_disclaimer_ignored": "Virtualenvs no puede reconstruirse automáticamente para esas aplicaciones. Necesitas forzar una actualización para ellas, lo que puede hacerse desde la línea de comandos con: `yunohost app upgrade --force APP`: {ignored_apps}", "migration_0024_rebuild_python_venv_failed": "Error al reconstruir el virtualenv de Python para {app}. La aplicación puede no funcionar mientras esto no se resuelva. Deberías arreglar la situación forzando la actualización de esta app usando `yunohost app upgrade --force {app}`.", - "app_arch_not_supported": "Esta aplicación solo se puede instalar en arquitecturas {', '.join(required)} pero la arquitectura de tu servidor es {current}", + "app_arch_not_supported": "Esta aplicación solo se puede instalar en arquitecturas {required} pero la arquitectura de tu servidor es {current}", "app_resource_failed": "Falló la asignación, desasignación o actualización de recursos para {app}: {error}", "app_not_enough_disk": "Esta aplicación requiere {required} espacio libre.", "app_not_enough_ram": "Esta aplicación requiere {required} de RAM para ser instalada/actualizada, pero solo hay {current} disponible actualmente.", @@ -749,14 +749,14 @@ "app_change_url_failed": "No es possible cambiar la URL para {app}: {error}", "app_change_url_require_full_domain": "{app} no se puede mover a esta nueva URL porque requiere un dominio completo (es decir, con una ruta = /)", "app_change_url_script_failed": "Se ha producido un error en el script de modificación de la url", - "group_mailalias_add": "El alias de '{mail}' será añadido al del grupo '{ group} '", - "group_user_add": "La persona usuaria '{ user} ' será añadida al grupo '{ group} '", + "group_mailalias_add": "El alias de correo electrónico '{mail}' será añadido al grupo '{group}'", + "group_user_add": "La persona usuaria '{user}' será añadida al grupo '{group}'", "dyndns_no_recovery_password": "¡No especificó la password de recuperación! ¡En caso de perder control de este dominio, necesitará contactar con una persona administradora del equipo de YunoHost!", "dyndns_too_many_requests": "El servicio DynDNS de YunoHost recibió demasiadas peticiones de su parte, por favor espere 1 hora antes de intentarlo de nuevo.", "dyndns_set_recovery_password_unknown_domain": "Falló al establecer la password de recuperación: dominio no registrado", "global_settings_setting_dns_exposure": "Versión IP del DNS establecida en la configuración y diagnósticos", - "group_mailalias_remove": "El alias de '{mail}' será eliminado del grupo '{ group} '", - "group_user_remove": "La persona usuaria '{ user} ' será eliminada al grupo '{ group} '", + "group_mailalias_remove": "El alias de correo electrónico '{mail}' será eliminado del grupo '{group}'", + "group_user_remove": "La persona usuaria '{user}' será eliminada del grupo '{group}'", "app_failed_to_upgrade_but_continue": "La aplicación {failed_app} no pudo actualizarse, continúe con las siguientes actualizaciones como solicitado. Ejecuta 'yunohost log show {operation_logger_name}' para visualizar el log de fallos", "app_not_upgraded_broken_system": "La aplicacion '{failed_app}' falló en la actualización he hizo que el sistema pasase a un estado de fallo, como consecuencia las siguientes actualizaciones de aplicaciones han sido canceladas: {apps}", "app_not_upgraded_broken_system_continue": "La aplicacion '{failed_app}' falló en la actualización he hizo que el sistema pasase a un estado de fallo (así que --continue-on-failure se ignoró), como consecuencia las siguientes actualizaciones de aplicaciones han sido canceladas: {apps}", @@ -780,5 +780,6 @@ "dyndns_set_recovery_password_invalid_password": "Falló al establecer la password de recuperación: la password no es suficientemente fuerte", "dyndns_set_recovery_password_failed": "Falló al establecer la password de recuperación: {error}", "dyndns_set_recovery_password_success": "¡Password de recuperación establecida!", - "global_settings_setting_dns_exposure_help": "NB: Esto afecta únicamente a la configuración recomentada de DNS y en las pruebas de diagnóstico. No afecta a la configuración del sistema." -} \ No newline at end of file + "global_settings_setting_dns_exposure_help": "NB: Esto afecta únicamente a la configuración recomentada de DNS y en las pruebas de diagnóstico. No afecta a la configuración del sistema.", + "global_settings_setting_ssh_port_help": "Un puerto menor a 1024 es preferible para evitar intentos de usurpación por servicios no administrativos en la máquina remota. También debe de evitar usar un puerto ya en uso, como el 80 o 443." +} From 4e33bf271e33f9ea78d4fcac57ed8bd9e4954017 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20M?= Date: Thu, 1 Feb 2024 04:33:13 +0000 Subject: [PATCH 21/64] Translated using Weblate (Galician) Currently translated at 100.0% (783 of 783 strings) Translation: YunoHost/core Translate-URL: https://translate.yunohost.org/projects/yunohost/core/gl/ --- locales/gl.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/gl.json b/locales/gl.json index f4d7a7491..6f81e9c28 100644 --- a/locales/gl.json +++ b/locales/gl.json @@ -502,7 +502,7 @@ "restore_running_app_script": "Restablecendo a app '{app}'...", "restore_removing_tmp_dir_failed": "Non se puido eliminar o directorio temporal antigo", "restore_nothings_done": "Nada foi restablecido", - "restore_not_enough_disk_space": "Non hai espazo abondo (espazo: {free_space.d} B, espazo necesario: {needed_space} B, marxe de seguridade: {margin} B)", + "restore_not_enough_disk_space": "Non hai espazo abondo (espazo: {free_space} B, espazo necesario: {needed_space} B, marxe de seguridade: {margin} B)", "restore_may_be_not_enough_disk_space": "O teu sistema semella que non ten espazo abondo (libre: {free_space} B, espazo necesario: {needed_space} B, marxe de seguridade {margin} B)", "restore_hook_unavailable": "O script de restablecemento para '{part}' non está dispoñible no teu sistema nin no arquivo", "ldap_server_is_down_restart_it": "O servidor LDAP está caído, intenta reinicialo...", From 077b745d60de405d2250008adc254488796bb70f Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Fri, 9 Feb 2024 20:01:01 +0100 Subject: [PATCH 22/64] configpanels: some helpers behavior depend on YNH_APP_PACKAGING_FORMAT which is not set when calling the config script... --- src/app.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/app.py b/src/app.py index 0534e093f..264b40331 100644 --- a/src/app.py +++ b/src/app.py @@ -1973,6 +1973,10 @@ ynh_app_config_run $1 app = self.entity app_id, app_instance_nb = _parse_app_instance_name(app) settings = _get_app_settings(app) + app_setting_path = os.path.join(APPS_SETTING_PATH, self.entity) + manifest = _get_manifest_of_app(app_setting_path) + # FIXME: this is inconsistent with other script call ... + # this should be based on _make_environment_for_app_script ... env.update( { "app_id": app_id, @@ -1981,6 +1985,7 @@ ynh_app_config_run $1 "final_path": settings.get("final_path", ""), "install_dir": settings.get("install_dir", ""), "YNH_APP_BASEDIR": os.path.join(APPS_SETTING_PATH, app), + "YNH_APP_PACKAGING_FORMAT": str(manifest["packaging_format"]), } ) From 58e8e9e5a1214f2f18ccb27681bc6b9721244e0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= Date: Sat, 3 Feb 2024 15:59:54 +0000 Subject: [PATCH 23/64] Translated using Weblate (French) Currently translated at 100.0% (783 of 783 strings) Translation: YunoHost/core Translate-URL: https://translate.yunohost.org/projects/yunohost/core/fr/ --- locales/fr.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/locales/fr.json b/locales/fr.json index 44c029820..6a9d3c74b 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -422,7 +422,7 @@ "diagnosis_description_systemresources": "Ressources système", "diagnosis_description_ports": "Exposition des ports", "diagnosis_description_regenconf": "Configurations système", - "diagnosis_ports_could_not_diagnose": "Impossible de diagnostiquer si les ports sont accessibles de l'extérieur.", + "diagnosis_ports_could_not_diagnose": "Impossible de diagnostiquer si les ports sont accessibles de l'extérieur dans IPv{ipversion}.", "diagnosis_ports_could_not_diagnose_details": "Erreur : {error}", "apps_catalog_updating": "Mise à jour du catalogue d'applications...", "apps_catalog_obsolete_cache": "Le cache du catalogue d'applications est vide ou obsolète.", @@ -430,7 +430,7 @@ "diagnosis_description_mail": "Email", "diagnosis_ports_unreachable": "Le port {port} n'est pas accessible depuis l'extérieur.", "diagnosis_ports_ok": "Le port {port} est accessible depuis l'extérieur.", - "diagnosis_http_could_not_diagnose": "Impossible de diagnostiquer si le domaine est accessible de l'extérieur.", + "diagnosis_http_could_not_diagnose": "Impossible de diagnostiquer si les domaines sont accessibles de l'extérieur dans IPv{ipversion}.", "diagnosis_http_could_not_diagnose_details": "Erreur : {error}", "diagnosis_http_ok": "Le domaine {domain} est accessible en HTTP depuis l'extérieur.", "diagnosis_http_unreachable": "Le domaine {domain} est inaccessible en HTTP depuis l'extérieur.", @@ -782,4 +782,4 @@ "dyndns_too_many_requests": "Le service dyndns de YunoHost a reçu trop de requêtes/demandes de votre part, attendez environ 1 heure avant de réessayer.", "ask_dyndns_recovery_password_explain_unavailable": "Ce domaine DynDNS est déjà enregistré. Si vous êtes la personne qui a enregistré ce domaine lors de sa création, vous pouvez entrer le mot de passe de récupération pour récupérer ce domaine.", "global_settings_setting_ssh_port_help": "Il est préférable d'utiliser un port inférieur à 1024 pour éviter les tentatives d'usurpation par des services non administrateurs sur la machine distante. Vous devez également éviter d'utiliser un port déjà utilisé tel que le 80 ou le 443." -} \ No newline at end of file +} From 080aae9ab28c8202b09c5e54208d330ba2d3adec Mon Sep 17 00:00:00 2001 From: xabirequejo Date: Tue, 6 Feb 2024 10:01:07 +0000 Subject: [PATCH 24/64] Translated using Weblate (Basque) Currently translated at 100.0% (783 of 783 strings) Translation: YunoHost/core Translate-URL: https://translate.yunohost.org/projects/yunohost/core/eu/ --- locales/eu.json | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/locales/eu.json b/locales/eu.json index 5d457c6e6..3625bf878 100644 --- a/locales/eu.json +++ b/locales/eu.json @@ -653,7 +653,7 @@ "global_settings_setting_ssh_compatibility_help": "Bateragarritasun eta segurtasun arteko gatazka SSH zerbitzarirako. Zifraketari eragiten dio (eta segurtasunari lotutako beste kontu batzuei)", "global_settings_setting_ssh_password_authentication_help": "Baimendu pasahitz bidezko autentikazioa SSHrako", "global_settings_setting_ssh_port": "SSH ataka", - "global_settings_setting_webadmin_allowlist_help": "Administrazio-ataria bisita dezaketen IP helbideak, koma bidez bereiziak.", + "global_settings_setting_webadmin_allowlist_help": "Administrazio-atarira sar daitezken IP helbideak. CIDR notazioa ahalbidetzen da.", "global_settings_setting_webadmin_allowlist_enabled_help": "Baimendu IP zehatz batzuk bakarrik administrazio-atarian.", "global_settings_setting_smtp_allow_ipv6_help": "Baimendu IPv6 posta elektronikoa jaso eta bidaltzeko", "global_settings_setting_smtp_relay_enabled_help": "YunoHosten ordez posta elektronikoa bidaltzeko SMTP relay helbidea. Erabilgarri izan daiteke egoera hauetan: operadore edo VPS enpresak 25. ataka blokeatzen badu, DUHLen zure etxeko IPa ageri bada, ezin baduzu alderantzizko DNSa ezarri edo zerbitzari hau ez badago zuzenean internetera konektatuta baina posta elektronikoa bidali nahi baduzu.", @@ -697,7 +697,7 @@ "diagnosis_using_yunohost_testing_details": "Ez dago arazorik zertan ari zaren baldin badakizu, baina arretaz irakurri oharrak YunoHosten eguneraketak instalatu baino lehen! 'testing' (proba) bertsioak ezgaitu nahi badituzu, kendu testing gakoa /etc/apt/sources.list.d/yunohost.list fitxategitik.", "global_settings_setting_smtp_allow_ipv6": "Baimendu IPv6", "global_settings_setting_smtp_relay_host": "SMTP errele-ostatatzailea", - "domain_config_acme_eligible": "ACME egokitasuna", + "domain_config_acme_eligible": "ACME hautagarritasuna", "domain_config_acme_eligible_explain": "Ez dirudi domeinu hau Let's Encrypt ziurtagirirako prest dagoenik. Egiaztatu DNS ezarpenak eta zerbitzariaren HTTP irisgarritasuna. Diagnostikoen guneko 'DNS erregistroak' eta 'Web' atalek zer dagoen gaizki ulertzen lagun zaitzakete.", "domain_config_cert_install": "Instalatu Let's Encrypt ziurtagiria", "domain_config_cert_issuer": "Ziurtagiriaren jaulkitzailea", @@ -722,13 +722,13 @@ "global_settings_setting_webadmin_allowlist": "Administrazio-atarira sartzeko baimendutako IPak", "global_settings_setting_webadmin_allowlist_enabled": "Gaitu administrazio-ataria sartzeko baimendutako IPak", "invalid_credentials": "Pasahitz edo erabiltzaile-izen baliogabea", - "log_resource_snippet": "Baliabide baten eguneraketa / eskuragarritasuna / eskuragarritasun eza", + "log_resource_snippet": "Baliabide bat eguneratzen / eskuratzen / eskuragarritasuna uzten", "log_settings_set": "Aplikatu ezarpenak", "migration_description_0025_global_settings_to_configpanel": "Migratu ezarpen globalen nomenklatura zaharra izendegi berri eta modernora", "migration_description_0026_new_admins_group": "Migratu 'administrari bat baino gehiago' sistema berrira", "password_confirmation_not_the_same": "Pasahitzak ez datoz bat", "password_too_long": "Aukeratu 127 karaktere baino laburragoa den pasahitz bat", - "diagnosis_using_stable_codename_details": "Ostatatzaileak zerbait oker ezarri duenean gertatu ohi da hau. Arriskutsua da, Debianen datorren bertsioa 'estable' (egonkorra) bilakatzen denean, apt-ek sistemaren pakete guztiak bertsio-berritzen saiatuko da, beharrezko migrazio-prozedurarik burutu gabe. Debianen repositorioan apt iturria editatzen konpontzea da gomendioa, stable gakoa bullseye gakoarekin ordezkatuz. Ezarpen-fitxategia /etc/apt/sources.list izan beharko litzateke, edo /etc/apt/sources.list.d/ direktorioko fitxategiren bat.", + "diagnosis_using_stable_codename_details": "Ostatatzaileak zerbait oker ezarri duenean gertatu ohi da hau. Arriskutsua da, Debianen datorren bertsioa 'estable' (egonkorra) bilakatzen denean, apt-k sistemaren pakete guztiak bertsio-berritzen saiatuko da, beharrezko migrazio-prozedurarik burutu gabe. Debianen repositorioan apt iturria editatzen konpontzea da gomendioa, stable gakoa bullseye gakoarekin ordezkatuz. Ezarpen-fitxategia /etc/apt/sources.list izan beharko litzateke, edo /etc/apt/sources.list.d/ direktorioko fitxategiren bat.", "group_update_aliases": "'{group}' taldearen aliasak eguneratzen", "group_no_change": "Ez da ezer aldatu behar '{group}' talderako", "app_not_enough_ram": "Aplikazio honek {required} RAM behar ditu instalatu edo bertsio-berritzeko, baina {current} bakarrik daude erabilgarri une honetan.", @@ -747,12 +747,12 @@ "domain_config_xmpp_help": "Ohart ongi: XMPP ezaugarri batzuk gaitzeko DNS erregistroak eguneratu eta Lets Encrypt ziurtagiria birsortu beharko dira", "global_settings_setting_dns_exposure": "DNS ezarpenetan eta diagnostikoan kontuan hartzeko IP bertsioak", "global_settings_setting_dns_exposure_help": "Ohart ongi: honek gomendatutako DNS ezarpenei eta diagnostikoari eragiten die soilik. Ez du eraginik sistemaren ezarpenetan.", - "diagnosis_ip_no_ipv6_tip_important": "IPv6 automatikoki ezarri ohi du sistemak edo hornitzaileak erabilgarri baldin badago. Bestela eskuz ezarri beharko dituzu aukera batzuk ondorengo dokumentazioan azaldu bezala: https://yunohost.org/#/ipv6.", + "diagnosis_ip_no_ipv6_tip_important": "IPv6 automatikoki ezarri ohi du sistemak edo hornitzaileak, erabilgarri baldin badago. Bestela eskuz ezarri beharko dituzu aukera batzuk ondorengo dokumentazioan azaldu bezala: https://yunohost.org/#/ipv6.", "pattern_fullname": "Baliozko izen oso bat izan behar da (gutxienez hiru karaktere)", "app_change_url_failed": "Ezin izan da {app} aplikazioaren URLa aldatu: {error}", "app_change_url_require_full_domain": "Ezin da {app} aplikazioa URL berri honetara aldatu domeinu oso bat behar duelako (hots, / bide-izena duena)", "app_change_url_script_failed": "Errorea gertatu da URLa aldatzeko aginduaren barnean", - "app_corrupt_source": "YunoHostek deskargatu du {app} aplikaziorako '{source_id}' ({url}) baliabidea baina ez dator bat espero zen 'checksum'arekin. Agian zerbitzariak interneteko konexioa galdu du tarte batez, EDO baliabidea nolabait moldatua izan da arduradunaren aldetik (edo partehartzaile maltzur batetik?) eta YunoHosten arduradunek egoera aztertu eta aplikazioaren manifestua eguneratu behar dute aldaketa hau kontuan hartzeko.\n Espero zen sha256 checksuma: {expected_sha256}\n Deskargatutakoaren sha256 checksuma: {computed_sha256}\n Deskargatutako fitxategiaren tamaina: {size}", + "app_corrupt_source": "YunoHostek deskargatu du {app} aplikaziorako '{source_id}' ({url}) baliabidea baina ez dator bat espero zen 'checksum'arekin. Agian zerbitzariak interneteko konexioa galdu du tarte batez, EDO baliabidea nolabait moldatua izan da arduradunaren aldetik (edo partehartzaile maltzur baten aldetik?) eta YunoHosten arduradunek egoera aztertu eta aplikazioaren manifestua eguneratu behar dute aldaketa hau kontuan hartzeko.\n Espero zen sha256 checksuma: {expected_sha256}\n Deskargatutakoaren sha256 checksuma: {computed_sha256}\n Deskargatutako fitxategiaren tamaina: {size}", "app_failed_to_upgrade_but_continue": "{failed_app} aplikazioaren bertsio-berritzeak huts egin du, jarraitu hurrengo bertsio-berritzeekin, eskatu bezala. Exekutatu 'yunohost log show {operation_logger_name}' errorearen erregistroa ikusteko", "app_not_upgraded_broken_system": "{failed_app} aplikazioaren bertsio-berritzeak huts egin du eta sistema hondatu du, beraz, ondorengo aplikazioen bertsio-berritzeak ezeztatu dira: {apps}", "app_not_upgraded_broken_system_continue": "{failed_app} aplikazioaren bertsio-berritzeak huts egin du eta sistema hondatu du (beraz, --continue-on-failure aukerari muzin egin zaio) eta ondorengo aplikazioen bertsio-berritzeak ezeztatu dira: {apps}", @@ -780,5 +780,6 @@ "dyndns_set_recovery_password_unknown_domain": "Berreskuratze-pasahitza ezartzeak huts egin du: domeinua ez dago erregistratuta", "dyndns_set_recovery_password_invalid_password": "Berreskuratze-pasahitza ezartzeak huts egin du: pasahitza ez da nahikoa sendoa", "dyndns_set_recovery_password_failed": "Berreskuratze-pasahitza ezartzeak huts egin du: {error}", - "dyndns_set_recovery_password_success": "Berreskuratze-pasahitza ezarri da!" -} \ No newline at end of file + "dyndns_set_recovery_password_success": "Berreskuratze-pasahitza ezarri da!", + "global_settings_setting_ssh_port_help": "1024 baino ataka txikiago bat izan beharko litzateke, zerbitzu ez-administratzaileek urruneko makinan usurpazio-saiorik egin ez dezaten. Lehendik ere erabiltzen ari diren atakak ere ekidin beharko zenituzke, 80 edo 443 kasu." +} From 37e14269c869f80497e509fe1fc62be60eba0901 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Fri, 9 Feb 2024 20:12:10 +0100 Subject: [PATCH 25/64] Update changelog for 11.2.10 --- debian/changelog | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/debian/changelog b/debian/changelog index d2160e07d..29bd80c9c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,27 @@ +yunohost (11.2.10) stable; urgency=low + + - helpers: document --after= in for ynh_read_var_in_file and ynh_write_var_in_file ([#1758](https://github.com/yunohost/yunohost/pull/1758)) + - resources: document changelog link for latest_github_release ([#1760](https://github.com/yunohost/yunohost/pull/1760)) + - apps/helpers: Reword YNH_APP_UPGRADE_TYPE ([#1762](https://github.com/yunohost/yunohost/pull/1762)) + - app shells: auto-source venv for python apps ([#1756](https://github.com/yunohost/yunohost/pull/1756)) + - tools: Add a 'yunohost tools basic-space-cleanup' command ([#1761](https://github.com/yunohost/yunohost/pull/1761)) + - certs/xmpp: Fix DNS suffix edge case during XMPP certificate setup ([#1763](https://github.com/yunohost/yunohost/pull/1763)) + - helpers/php: quote vars to avoid stupid issues with name in path which may happen in backup restore context... (05f7c3a3b) + - multimedia: fix again edgecase where setfacl crashes because of broken symlinks.. (1ce606d46) + - helpers: disable super verbose logging during ynh_replace_vars poluting logs, it's kinda stable now... (981956051, c2af17667) + - apps: people insist on trying to install Nextcloud after creating a user called nextcloud ... So let's check this stupid case (fc12cb198) + - apps: fix port reuse during provisionning ([#1769](https://github.com/yunohost/yunohost/pull/1769)) + - configpanels: some helpers behavior depend on YNH_APP_PACKAGING_FORMAT which is not set when calling the config script... (077b745d6) + - global settings: Add warning regarding ssh ports below 1024 ([#1765](https://github.com/yunohost/yunohost/pull/1765)) + - global settings: mention cidr notation support in webadmin allowlist help ([#1770](https://github.com/yunohost/yunohost/pull/1770)) + - chores: update copyright headers to 2024 using maintenance/update_copyright_headers.sh (a44ea1414) + - i18n: remove stale i18n strings, fix format inconsistencies (890fcee05, [#1764](https://github.com/yunohost/yunohost/pull/1764)) + - i18n: Translations updated for Arabic, Basque, Catalan, French, Galician, German, Slovak, Spanish, Ukrainian + + Thanks to all contributors <3 ! (Bram, Carlos Solís, Christian Wehrli, cube, Éric Gaspar, Félix Piédallu, Francescc, José M, Jose Riha, Lasse Gismo, ljf (zamentur), OniriCorpe, ppr, Saeba Ryo, tituspijean, xabirequejo) + + -- Alexandre Aubin Fri, 09 Feb 2024 20:05:36 +0100 + yunohost (11.2.9.1) stable; urgency=low - helpers/utils: replace the damn ynh_die with a warning when patch fails to apply ... (0ed6769fc) From c695aa549a52bca516e03f64054eee67d7ff2ef4 Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Fri, 9 Feb 2024 20:12:27 +0000 Subject: [PATCH 26/64] [CI] Format code with Black --- doc/generate_bash_completion.py | 1 + src/app.py | 18 ++++---- src/backup.py | 22 +++++----- src/certificate.py | 8 +++- src/diagnosers/00-basesystem.py | 8 ++-- src/diagnosers/10-ip.py | 48 +++++++++++++--------- src/diagnosers/12-dnsrecords.py | 6 +-- src/domain.py | 8 ++-- src/hook.py | 8 ++-- src/log.py | 1 - src/migrations/0021_migrate_to_bullseye.py | 16 +++++--- src/tests/test_app_resources.py | 2 +- src/tests/test_questions.py | 16 +++++--- src/tools.py | 37 +++++++++++------ src/utils/resources.py | 20 +++++---- 15 files changed, 132 insertions(+), 87 deletions(-) diff --git a/doc/generate_bash_completion.py b/doc/generate_bash_completion.py index 88aa273fd..460447ab1 100644 --- a/doc/generate_bash_completion.py +++ b/doc/generate_bash_completion.py @@ -8,6 +8,7 @@ adds `--help` at the end if one presses [tab] again. author: Christophe Vuillot """ + import os import yaml diff --git a/src/app.py b/src/app.py index 264b40331..17a285f24 100644 --- a/src/app.py +++ b/src/app.py @@ -990,9 +990,9 @@ def app_manifest(app, with_screenshot=False): if entry.is_file() and ext in ("png", "jpg", "jpeg", "webp", "gif"): with open(entry.path, "rb") as img_file: data = base64.b64encode(img_file.read()).decode("utf-8") - manifest[ - "screenshot" - ] = f"data:image/{ext};charset=utf-8;base64,{data}" + manifest["screenshot"] = ( + f"data:image/{ext};charset=utf-8;base64,{data}" + ) break shutil.rmtree(extracted_app_folder) @@ -1093,7 +1093,9 @@ def app_install( app_id = manifest["id"] if app_id in user_list()["users"].keys(): - raise YunohostValidationError(f"There is already a YunoHost user called {app_id} ...", raw_msg=True) + raise YunohostValidationError( + f"There is already a YunoHost user called {app_id} ...", raw_msg=True + ) # Check requirements for name, passed, values, err in _check_manifest_requirements( @@ -1639,9 +1641,11 @@ def app_setting(app, key, value=None, delete=False): permission_create( permission=permission_name, # FIXME find a way to limit to only the user allowed to the main permission - allowed=["all_users"] - if key.startswith("protected_") - else ["all_users", "visitors"], + allowed=( + ["all_users"] + if key.startswith("protected_") + else ["all_users", "visitors"] + ), url=None, additional_urls=urls, auth_header=not key.startswith("skipped_"), diff --git a/src/backup.py b/src/backup.py index 30b6260b9..58439189d 100644 --- a/src/backup.py +++ b/src/backup.py @@ -88,7 +88,6 @@ logger = getActionLogger("yunohost.backup") class BackupRestoreTargetsManager: - """ BackupRestoreTargetsManager manage the targets in BackupManager and RestoreManager @@ -211,7 +210,6 @@ class BackupRestoreTargetsManager: class BackupManager: - """ This class collect files to backup in a list and apply one or several backup method on it. @@ -825,7 +823,6 @@ class BackupManager: class RestoreManager: - """ RestoreManager allow to restore a past backup archive @@ -1328,9 +1325,11 @@ class RestoreManager: url=permission_infos["url"], additional_urls=permission_infos["additional_urls"], auth_header=permission_infos["auth_header"], - label=permission_infos["label"] - if perm_name == "main" - else permission_infos["sublabel"], + label=( + permission_infos["label"] + if perm_name == "main" + else permission_infos["sublabel"] + ), show_tile=permission_infos["show_tile"], protected=permission_infos["protected"], sync_perm=False, @@ -1468,9 +1467,11 @@ class RestoreManager: url=permission_infos.get("url"), additional_urls=permission_infos.get("additional_urls"), auth_header=permission_infos.get("auth_header"), - label=permission_infos.get("label") - if perm_name == "main" - else permission_infos.get("sublabel"), + label=( + permission_infos.get("label") + if perm_name == "main" + else permission_infos.get("sublabel") + ), show_tile=permission_infos.get("show_tile", True), protected=permission_infos.get("protected", False), sync_perm=False, @@ -1570,7 +1571,6 @@ class RestoreManager: # Backup methods # # class BackupMethod: - """ BackupMethod is an abstract class that represents a way to backup and restore a list of files. @@ -1861,7 +1861,6 @@ class BackupMethod: class CopyBackupMethod(BackupMethod): - """ This class just do an uncompress copy of each file in a location, and could be the inverse for restoring @@ -2093,7 +2092,6 @@ class TarBackupMethod(BackupMethod): class CustomBackupMethod(BackupMethod): - """ This class use a bash script/hook "backup_method" to do the backup/restore operations. A user can add his own hook inside diff --git a/src/certificate.py b/src/certificate.py index 3d8a6db8f..f3186684e 100644 --- a/src/certificate.py +++ b/src/certificate.py @@ -579,11 +579,15 @@ def _prepare_certificate_signing_request(domain, key_file, output_folder): sanlist = [] # Handle the boring case where the domain is not the root of the dns zone etc... - from yunohost.dns import _get_relative_name_for_dns_zone, _get_dns_zone_for_domain + from yunohost.dns import ( + _get_relative_name_for_dns_zone, + _get_dns_zone_for_domain, + ) + base_dns_zone = _get_dns_zone_for_domain(domain) basename = _get_relative_name_for_dns_zone(domain, base_dns_zone) suffix = f".{basename}" if basename != "@" else "" - + for sub in ("xmpp-upload", "muc"): subdomain = sub + "." + domain if xmpp_records.get("CNAME:" + sub + suffix) == "OK": diff --git a/src/diagnosers/00-basesystem.py b/src/diagnosers/00-basesystem.py index c09f301e6..4f9137352 100644 --- a/src/diagnosers/00-basesystem.py +++ b/src/diagnosers/00-basesystem.py @@ -118,9 +118,11 @@ class MyDiagnoser(Diagnoser): "repo": ynh_packages["yunohost"]["repo"], }, status="INFO" if consistent_versions else "ERROR", - summary="diagnosis_basesystem_ynh_main_version" - if consistent_versions - else "diagnosis_basesystem_ynh_inconsistent_versions", + summary=( + "diagnosis_basesystem_ynh_main_version" + if consistent_versions + else "diagnosis_basesystem_ynh_inconsistent_versions" + ), details=ynh_version_details, ) diff --git a/src/diagnosers/10-ip.py b/src/diagnosers/10-ip.py index 015ae8e46..abee4add8 100644 --- a/src/diagnosers/10-ip.py +++ b/src/diagnosers/10-ip.py @@ -73,9 +73,11 @@ class MyDiagnoser(Diagnoser): yield dict( meta={"test": "dnsresolv"}, status="ERROR", - summary="diagnosis_ip_broken_dnsresolution" - if good_resolvconf - else "diagnosis_ip_broken_resolvconf", + summary=( + "diagnosis_ip_broken_dnsresolution" + if good_resolvconf + else "diagnosis_ip_broken_resolvconf" + ), ) return # Otherwise, if the resolv conf is bad but we were able to resolve domain name, @@ -123,11 +125,9 @@ class MyDiagnoser(Diagnoser): yield dict( meta={"test": "ipv4"}, data={"global": ipv4, "local": get_local_ip("ipv4")}, - status="SUCCESS" - if ipv4 - else "ERROR" - if is_ipvx_important(4) - else "WARNING", + status=( + "SUCCESS" if ipv4 else "ERROR" if is_ipvx_important(4) else "WARNING" + ), summary="diagnosis_ip_connected_ipv4" if ipv4 else "diagnosis_ip_no_ipv4", details=["diagnosis_ip_global", "diagnosis_ip_local"] if ipv4 else None, ) @@ -135,19 +135,27 @@ class MyDiagnoser(Diagnoser): yield dict( meta={"test": "ipv6"}, data={"global": ipv6, "local": get_local_ip("ipv6")}, - status="SUCCESS" - if ipv6 - else "ERROR" - if settings_get("misc.network.dns_exposure") == "ipv6" - else "WARNING", + status=( + "SUCCESS" + if ipv6 + else ( + "ERROR" + if settings_get("misc.network.dns_exposure") == "ipv6" + else "WARNING" + ) + ), summary="diagnosis_ip_connected_ipv6" if ipv6 else "diagnosis_ip_no_ipv6", - details=["diagnosis_ip_global", "diagnosis_ip_local"] - if ipv6 - else [ - "diagnosis_ip_no_ipv6_tip_important" - if is_ipvx_important(6) - else "diagnosis_ip_no_ipv6_tip" - ], + details=( + ["diagnosis_ip_global", "diagnosis_ip_local"] + if ipv6 + else [ + ( + "diagnosis_ip_no_ipv6_tip_important" + if is_ipvx_important(6) + else "diagnosis_ip_no_ipv6_tip" + ) + ] + ), ) # TODO / FIXME : add some attempt to detect ISP (using whois ?) ? diff --git a/src/diagnosers/12-dnsrecords.py b/src/diagnosers/12-dnsrecords.py index fa77f8c32..041030553 100644 --- a/src/diagnosers/12-dnsrecords.py +++ b/src/diagnosers/12-dnsrecords.py @@ -291,9 +291,9 @@ class MyDiagnoser(Diagnoser): yield dict( meta=meta, data={}, - status=alert_type.upper() - if alert_type != "not_found" - else "WARNING", + status=( + alert_type.upper() if alert_type != "not_found" else "WARNING" + ), summary="diagnosis_domain_expiration_" + alert_type, details=details[alert_type], ) diff --git a/src/domain.py b/src/domain.py index cbaf3b27a..8536337ba 100644 --- a/src/domain.py +++ b/src/domain.py @@ -390,9 +390,11 @@ def domain_remove( apps_on_that_domain.append( ( app, - f" - {app} \"{label}\" on https://{domain}{settings['path']}" - if "path" in settings - else app, + ( + f" - {app} \"{label}\" on https://{domain}{settings['path']}" + if "path" in settings + else app + ), ) ) diff --git a/src/hook.py b/src/hook.py index bf161fcdc..ee9f08e48 100644 --- a/src/hook.py +++ b/src/hook.py @@ -387,9 +387,11 @@ def hook_exec( # Define output loggers and call command loggers = ( lambda l: logger.debug(l.rstrip() + "\r"), - lambda l: logger.warning(l.rstrip()) - if is_relevant_warning(l.rstrip()) - else logger.debug(l.rstrip()), + lambda l: ( + logger.warning(l.rstrip()) + if is_relevant_warning(l.rstrip()) + else logger.debug(l.rstrip()) + ), lambda l: logger.info(l.rstrip()), ) diff --git a/src/log.py b/src/log.py index 856a92294..fd7c62635 100644 --- a/src/log.py +++ b/src/log.py @@ -460,7 +460,6 @@ class RedactingFormatter(Formatter): class OperationLogger: - """ Instances of this class represents unit operation done on the ynh instance. diff --git a/src/migrations/0021_migrate_to_bullseye.py b/src/migrations/0021_migrate_to_bullseye.py index f320577e1..d9924f97e 100644 --- a/src/migrations/0021_migrate_to_bullseye.py +++ b/src/migrations/0021_migrate_to_bullseye.py @@ -535,12 +535,16 @@ class MyMigration(Migration): return "Reading database ..." not in line.rstrip() callbacks = ( - lambda l: logger.info("+ " + l.rstrip() + "\r") - if _apt_log_line_is_relevant(l) - else logger.debug(l.rstrip() + "\r"), - lambda l: logger.warning(l.rstrip()) - if _apt_log_line_is_relevant(l) - else logger.debug(l.rstrip()), + lambda l: ( + logger.info("+ " + l.rstrip() + "\r") + if _apt_log_line_is_relevant(l) + else logger.debug(l.rstrip() + "\r") + ), + lambda l: ( + logger.warning(l.rstrip()) + if _apt_log_line_is_relevant(l) + else logger.debug(l.rstrip()) + ), ) cmd = ( diff --git a/src/tests/test_app_resources.py b/src/tests/test_app_resources.py index d2df647a3..137573509 100644 --- a/src/tests/test_app_resources.py +++ b/src/tests/test_app_resources.py @@ -347,7 +347,7 @@ def test_resource_permissions(): conf = { "main": { "url": "/", - "allowed": "visitors" + "allowed": "visitors", # TODO: test protected? }, } diff --git a/src/tests/test_questions.py b/src/tests/test_questions.py index a695e834d..ae116801f 100644 --- a/src/tests/test_questions.py +++ b/src/tests/test_questions.py @@ -217,9 +217,11 @@ def generate_test_name(intake, output, raw_option, data): "=".join( [ key, - str(raw_option[key]) - if not isinstance(raw_option[key], str) - else f"'{raw_option[key]}'", + ( + str(raw_option[key]) + if not isinstance(raw_option[key], str) + else f"'{raw_option[key]}'" + ), ] ) for key in raw_option.keys() @@ -256,9 +258,11 @@ def pytest_generate_tests(metafunc): [metafunc.cls.raw_option], metafunc.cls.scenarios ) ids += [ - generate_test_name(*args.values) - if isinstance(args, ParameterSet) - else generate_test_name(*args) + ( + generate_test_name(*args.values) + if isinstance(args, ParameterSet) + else generate_test_name(*args) + ) for args in argvalues ] elif params[1] == "expected_normalized": diff --git a/src/tools.py b/src/tools.py index c3a9b679c..5b5fc3156 100644 --- a/src/tools.py +++ b/src/tools.py @@ -351,9 +351,11 @@ def tools_update(target=None): # stdout goes to debug lambda l: logger.debug(l.rstrip()), # stderr goes to warning except for the boring apt messages - lambda l: logger.warning(l.rstrip()) - if is_legit_warning(l) - else logger.debug(l.rstrip()), + lambda l: ( + logger.warning(l.rstrip()) + if is_legit_warning(l) + else logger.debug(l.rstrip()) + ), ) logger.info(m18n.n("updating_apt_cache")) @@ -490,12 +492,16 @@ def tools_upgrade(operation_logger, target=None): logger.debug("Running apt command :\n{}".format(dist_upgrade)) callbacks = ( - lambda l: logger.info("+ " + l.rstrip() + "\r") - if _apt_log_line_is_relevant(l) - else logger.debug(l.rstrip() + "\r"), - lambda l: logger.warning(l.rstrip()) - if _apt_log_line_is_relevant(l) - else logger.debug(l.rstrip()), + lambda l: ( + logger.info("+ " + l.rstrip() + "\r") + if _apt_log_line_is_relevant(l) + else logger.debug(l.rstrip() + "\r") + ), + lambda l: ( + logger.warning(l.rstrip()) + if _apt_log_line_is_relevant(l) + else logger.debug(l.rstrip()) + ), ) returncode = call_async_output(dist_upgrade, callbacks, shell=True) @@ -623,6 +629,7 @@ def tools_shell(command=None): shell = code.InteractiveConsole(vars) shell.interact() + def tools_basic_space_cleanup(): """ Basic space cleanup. @@ -634,7 +641,11 @@ def tools_basic_space_cleanup(): """ subprocess.run("apt autoremove && apt autoclean", shell=True) subprocess.run("journalctl --vacuum-size=50M", shell=True) - subprocess.run("rm /var/log/*.gz && rm /var/log/*/*.gz && rm /var/log/*.? && rm /var/log/*/*.?", shell=True) + subprocess.run( + "rm /var/log/*.gz && rm /var/log/*/*.gz && rm /var/log/*.? && rm /var/log/*/*.?", + shell=True, + ) + # ############################################ # # # @@ -970,9 +981,9 @@ class Migration: # Those are to be implemented by daughter classes mode = "auto" - dependencies: List[ - str - ] = [] # List of migration ids required before running this migration + dependencies: List[str] = ( + [] + ) # List of migration ids required before running this migration @property def disclaimer(self): diff --git a/src/utils/resources.py b/src/utils/resources.py index 5ce76cabe..49bb2580d 100644 --- a/src/utils/resources.py +++ b/src/utils/resources.py @@ -1223,14 +1223,20 @@ class PortsResource(AppResource): def _port_is_used(self, port): # FIXME : this could be less brutal than two os.system... - used_by_process = os.system( - "ss --numeric --listening --tcp --udp | awk '{print$5}' | grep --quiet --extended-regexp ':%s$'" - % port - ) == 0 + used_by_process = ( + os.system( + "ss --numeric --listening --tcp --udp | awk '{print$5}' | grep --quiet --extended-regexp ':%s$'" + % port + ) + == 0 + ) # This second command is mean to cover (most) case where an app is using a port yet ain't currently using it for some reason (typically service ain't up) - used_by_app = os.system( - f"grep --quiet --extended-regexp \"port: '?{port}'?\" /etc/yunohost/apps/*/settings.yml" - ) == 0 + used_by_app = ( + os.system( + f"grep --quiet --extended-regexp \"port: '?{port}'?\" /etc/yunohost/apps/*/settings.yml" + ) + == 0 + ) used_by_self_provisioning = port in self.ports_used_by_self return used_by_process or used_by_app or used_by_self_provisioning From 61df4add8cc317c13c6c871644a4a81b12dd30a3 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Tue, 13 Feb 2024 02:36:08 +0100 Subject: [PATCH 27/64] fix logs folders perms --- helpers/logrotate | 2 ++ 1 file changed, 2 insertions(+) diff --git a/helpers/logrotate b/helpers/logrotate index 2843d12cd..1b586d205 100644 --- a/helpers/logrotate +++ b/helpers/logrotate @@ -87,6 +87,8 @@ EOF # Make sure permissions are correct (otherwise the config file could be ignored and the corresponding logs never rotated) chmod 644 "/etc/logrotate.d/$app" + mkdir -p "/var/log/$app" + chmod 640 "/var/log/$app" } # Remove the app's logrotate config. From cfee750e32c71fd5808da76934e5287c280b1ee9 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Thu, 15 Feb 2024 02:24:45 +0100 Subject: [PATCH 28/64] draft --- src/utils/resources.py | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/utils/resources.py b/src/utils/resources.py index 5ce76cabe..8881ab50e 100644 --- a/src/utils/resources.py +++ b/src/utils/resources.py @@ -328,18 +328,27 @@ class SourcesResource(AppResource): Strictly speaking, this has nothing to do with the actual app install. `autoupdate` is expected to contain metadata for automatic maintenance / update of the app sources info in the manifest. It is meant to be a simpler replacement for "autoupdate" Github workflow mechanism. - The infos are used by this script : https://github.com/YunoHost/apps/blob/master/tools/autoupdate_app_sources/autoupdate_app_sources.py which is ran by the YunoHost infrastructure periodically and will create the corresponding pull request automatically. + The infos are used by this script : which is ran by the YunoHost infrastructure periodically and will create the corresponding pull request automatically. - The script will rely on the code repo specified in the upstream section of the manifest. + The script will rely on the code repo specified in `code` in the upstream section of the manifest. - `autoupdate.strategy` is expected to be one of : - - `latest_github_tag` : look for the latest tag (by sorting tags and finding the "largest" version). Then using the corresponding tar.gz url. Tags containing `rc`, `beta`, `alpha`, `start` are ignored, and actually any tag which doesn't look like `x.y.z` or `vx.y.z` - - `latest_github_release` : similar to `latest_github_tags`, but starting from the list of releases and provides the changelog link in PR message. Pre- or draft releases are ignored. Releases may have assets attached to them, in which case you can define: - - `autoupdate.asset = "some regex"` (when there's only one asset to use). The regex is used to find the appropriate asset among the list of all assets - - or several `autoupdate.asset.$arch = "some_regex"` (when the asset is arch-specific). The regex is used to find the appropriate asset for the specific arch among the list of assets - - `latest_github_commit` : will use the latest commit on github, and the corresponding tarball. If this is used for the 'main' source, it will also assume that the version is YYYY.MM.DD corresponding to the date of the commit. + The `autoupdate.strategy` is expected to be constructed like this: `latest__` - It is also possible to define `autoupdate.upstream` to use a different Git(hub) repository instead of the code repository from the upstream section of the manifest. This can be useful when, for example, the app uses other assets such as plugin from a different repository. + You need to replace the `` in the strategy name by either `github`, `gitlab`, `gitea` or `forgejo`, as the autoupdater supports: + + - GitHub + - GitLab (official and self-hosted instances) + - Gitea & Forgejo instances + + And choose one strategy in the following ones: + + - `latest__release` : similar to `latest__tag`, but starting from the list of releases. Note that it's the only strategy that provides the changelog link in the PR message. Pre- or draft releases are ignored. Releases may have assets attached to them, in which case you can define: + - `autoupdate.asset = "some regex"` (when there's only one asset to use). The regex is used to find the appropriate asset among the list of all assets + - or several `autoupdate.asset.$arch = "some_regex"` (when the asset is arch-specific). The regex is used to find the appropriate asset for the specific arch among the list of assets + - `latest__tag` : look for the latest tag (by sorting tags and finding the "largest" version). Then using the corresponding tar.gz url. Tags containing `rc`, `beta`, `alpha`, `start` are ignored, and actually any tag which doesn't look like `x.y.z` or `vx.y.z` + - `latest__commit` : will use the latest commit on github, and the corresponding tarball. If this is used for the 'main' source, it will also assume that the version is YYYY.MM.DD corresponding to the date of the commit. + + It is also possible to define `autoupdate.upstream` to use a different Git repository instead of the code repository from the upstream section of the manifest. This can be useful when, for example, the app uses other assets such as plugin from a different repository. ##### Provision/Update - For elements with `prefetch = true`, will download the asset (for the appropriate architecture) and store them in `/var/cache/yunohost/download/$app/$source_id`, to be later picked up by `ynh_setup_source`. (NB: this only happens during install and upgrade, not restore) From 707180da4363102766124aefc83c944672e880d3 Mon Sep 17 00:00:00 2001 From: Tagada <36127788+Tagadda@users.noreply.github.com> Date: Fri, 16 Feb 2024 19:17:48 +0100 Subject: [PATCH 29/64] Update sury apt key --- hooks/conf_regen/10-apt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hooks/conf_regen/10-apt b/hooks/conf_regen/10-apt index 93ff053b8..32b939664 100755 --- a/hooks/conf_regen/10-apt +++ b/hooks/conf_regen/10-apt @@ -69,6 +69,12 @@ do_post_regen() { wget --timeout 900 --quiet "https://packages.sury.org/php/apt.gpg" --output-document=- | gpg --dearmor >"/etc/apt/trusted.gpg.d/extra_php_version.gpg" fi + # Update sury apt key if 95BD4743 is present + if apt-key list | grep -q "95BD4743"; then + echo "Updating sury apt key..." + apt-key del 95BD4743; wget -nv -O - "https://packages.sury.org/php/apt.gpg" | apt-key add - + fi + # Make sure php7.4 is the default version when using php in cli if test -e /usr/bin/php$YNH_DEFAULT_PHP_VERSION then From fa64652681dd6178dcd5ab49c1283f758689967c Mon Sep 17 00:00:00 2001 From: Tagada <36127788+Tagadda@users.noreply.github.com> Date: Sat, 17 Feb 2024 20:07:23 +0100 Subject: [PATCH 30/64] regenconf/apt:Purge expired apt keys Co-authored-by: Alexandre Aubin <4533074+alexAubin@users.noreply.github.com> --- hooks/conf_regen/10-apt | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/hooks/conf_regen/10-apt b/hooks/conf_regen/10-apt index 32b939664..da6186a98 100755 --- a/hooks/conf_regen/10-apt +++ b/hooks/conf_regen/10-apt @@ -69,12 +69,9 @@ do_post_regen() { wget --timeout 900 --quiet "https://packages.sury.org/php/apt.gpg" --output-document=- | gpg --dearmor >"/etc/apt/trusted.gpg.d/extra_php_version.gpg" fi - # Update sury apt key if 95BD4743 is present - if apt-key list | grep -q "95BD4743"; then - echo "Updating sury apt key..." - apt-key del 95BD4743; wget -nv -O - "https://packages.sury.org/php/apt.gpg" | apt-key add - - fi - + # Purge expired keys (such as sury 95BD4743) + EXPIRED_KEYS="$(LC_ALL='en_US.UTF-8' apt-key list 2>/dev/null | grep -A1 'expired:' | grep -v 'expired\|^-' | sed 's/\s//g')" + for KEY in $EXPIRED_KEYS; do apt-key del $KEY 2>/dev/null; done # Make sure php7.4 is the default version when using php in cli if test -e /usr/bin/php$YNH_DEFAULT_PHP_VERSION then From 1d9cbde627ab20871199f0eec920e69ee3715ce7 Mon Sep 17 00:00:00 2001 From: Tagada <36127788+Tagadda@users.noreply.github.com> Date: Mon, 19 Feb 2024 18:46:37 +0100 Subject: [PATCH 31/64] hooks/conf_regen/apt: remove expired apt keys before downloading sury's key --- hooks/conf_regen/10-apt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/hooks/conf_regen/10-apt b/hooks/conf_regen/10-apt index da6186a98..81fa5dd25 100755 --- a/hooks/conf_regen/10-apt +++ b/hooks/conf_regen/10-apt @@ -62,6 +62,10 @@ Pin-Priority: -1 do_post_regen() { regen_conf_files=$1 + # Purge expired keys (such as sury 95BD4743) + EXPIRED_KEYS="$(LC_ALL='en_US.UTF-8' apt-key list 2>/dev/null | grep -A1 'expired:' | grep -v 'expired\|^-' | sed 's/\s//g')" + for KEY in $EXPIRED_KEYS; do apt-key del $KEY 2>/dev/null; done + # Add sury key # We do this only at the post regen and if the key doesn't already exists, because we don't want the regenconf to fuck everything up if the regenconf runs while the network is down if [[ ! -s /etc/apt/trusted.gpg.d/extra_php_version.gpg ]] @@ -69,9 +73,6 @@ do_post_regen() { wget --timeout 900 --quiet "https://packages.sury.org/php/apt.gpg" --output-document=- | gpg --dearmor >"/etc/apt/trusted.gpg.d/extra_php_version.gpg" fi - # Purge expired keys (such as sury 95BD4743) - EXPIRED_KEYS="$(LC_ALL='en_US.UTF-8' apt-key list 2>/dev/null | grep -A1 'expired:' | grep -v 'expired\|^-' | sed 's/\s//g')" - for KEY in $EXPIRED_KEYS; do apt-key del $KEY 2>/dev/null; done # Make sure php7.4 is the default version when using php in cli if test -e /usr/bin/php$YNH_DEFAULT_PHP_VERSION then From 1a876a80c22733714079e1b1487a17c111ebe2db Mon Sep 17 00:00:00 2001 From: Francescc Date: Mon, 12 Feb 2024 00:12:49 +0000 Subject: [PATCH 32/64] Translated using Weblate (Catalan) Currently translated at 100.0% (783 of 783 strings) Translation: YunoHost/core Translate-URL: https://translate.yunohost.org/projects/yunohost/core/ca/ --- locales/ca.json | 152 +++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 143 insertions(+), 9 deletions(-) diff --git a/locales/ca.json b/locales/ca.json index bbc580a5e..cf850b549 100644 --- a/locales/ca.json +++ b/locales/ca.json @@ -108,7 +108,7 @@ "confirm_app_install_danger": "PERILL! Aquesta aplicació encara és experimental (si no és que no funciona directament)! No hauríeu d'instal·lar-la a no ser que sapigueu el que feu. No obtindreu CAP AJUDA si l'aplicació no funciona o trenca el sistema... Si accepteu el risc, escriviu «{answers}»", "confirm_app_install_thirdparty": "PERILL! Aquesta aplicació no es part del catàleg d'aplicacions de YunoHost. La instal·lació d'aplicacions de terceres parts pot comprometre la integritat i seguretat del seu sistema. NO hauríeu d'instal·lar-ne a no ser que sapigueu el que feu. No obtindreu CAP AJUDA si l'aplicació no funciona o trenca el sistema… Si accepteu el risc, escriviu «{answers}»", "custom_app_url_required": "Heu de especificar una URL per actualitzar la vostra aplicació personalitzada {app}", - "dpkg_is_broken": "No es pot fer això en aquest instant perquè dpkg/APT (els gestors de paquets del sistema) sembla estar mal configurat... Podeu intentar solucionar-ho connectant-vos per SSH i executant «sudo apt install --fix-broken» i/o «sudo dpkg --configure -a».", + "dpkg_is_broken": "No es pot fer això en aquest instant perquè dpkg/APT (els gestors de paquets del sistema) sembla estar mal configurat... Podeu intentar solucionar-ho connectant-vos per SSH i executant «sudo apt install --fix-broken» i/o «sudo dpkg --configure -a» i/o «sudo dpkg --audit».", "domain_cannot_remove_main": "No es pot eliminar «{domain}» ja que és el domini principal, primer s'ha d'establir un nou domini principal utilitzant «yunohost domain main-domain -n »; aquí hi ha una llista dels possibles dominis: {other_domains}", "domain_cert_gen_failed": "No s'ha pogut generar el certificat", "domain_created": "S'ha creat el domini", @@ -185,7 +185,7 @@ "mail_domain_unknown": "El domini «{domain}» de l'adreça de correu no és vàlid. Utilitzeu un domini administrat per aquest servidor.", "mail_forward_remove_failed": "No s'han pogut eliminar el reenviament de correu «{mail}»", "mailbox_used_space_dovecot_down": "S'ha d'engegar el servei de correu Dovecot, per poder obtenir l'espai utilitzat per la bústia de correu", - "mail_unavailable": "Aquesta adreça de correu està reservada i ha de ser atribuïda automàticament el primer usuari", + "mail_unavailable": "Aquesta adreça de correu està reservada per al grup d'administradors", "main_domain_change_failed": "No s'ha pogut canviar el domini principal", "main_domain_changed": "S'ha canviat el domini principal", "migrations_list_conflict_pending_done": "No es pot utilitzar «--previous» i «--done» al mateix temps.", @@ -199,8 +199,8 @@ "pattern_backup_archive_name": "Ha de ser un nom d'arxiu vàlid amb un màxim de 30 caràcters, compost per caràcters alfanumèrics i -_. exclusivament", "pattern_domain": "Ha de ser un nom de domini vàlid (ex.: el-meu-domini.cat)", "pattern_email": "Ha de ser una adreça de correu vàlida, sense el símbol «+» (ex.: algu@domini.cat)", - "pattern_firstname": "Ha de ser un nom vàlid", - "pattern_lastname": "Ha de ser un cognom vàlid", + "pattern_firstname": "Ha de ser un nom vàlid (almenys tres caràcters)", + "pattern_lastname": "Ha de ser un cognom vàlid (almenys tres caràcters)", "pattern_mailbox_quota": "Ha de ser una mida amb el sufix b/k/M/G/T o 0 per no tenir quota", "pattern_password": "Ha de tenir un mínim de 3 caràcters", "pattern_port_or_range": "Ha de ser un número de port vàlid (i.e. 0-65535) o un interval de ports (ex. 100:200)", @@ -439,7 +439,7 @@ "diagnosis_no_cache": "Encara no hi ha memòria cau pel diagnòstic de la categoria «{category}»", "diagnosis_http_timeout": "S'ha exhaurit el temps d'esperar intentant connectar amb el servidor des de l'exterior.
1. La causa més probable per a aquest problema és que el port 80 (i 443) no reenvien correctament cap al vostre servidor.
2. També us hauríeu d'assegurar que el servei nginx estigui funcionant
3. En configuracions més complexes: assegureu-vos que no hi ha cap tallafoc o reverse-proxy interferint.", "diagnosis_http_connection_error": "Error de connexió: no s'ha pogut connectar amb el domini demanat, segurament és inaccessible.", - "yunohost_postinstall_end_tip": "S'ha completat la post-instal·lació. Per acabar la configuració, considereu:\n - afegir un primer usuari a través de la secció «Usuaris» a la pàgina web d'administració (o emprant «yunohost user create » a la línia d'ordres);\n - diagnosticar possibles problemes a través de la secció «Diagnòstics» a la pàgina web d'administració (o emprant «yunohost diagnosis run» a la línia d'ordres);\n - llegir les seccions «Finalizing your setup» i «Getting to know YunoHost» a la documentació per administradors: https://yunohost.org/admindoc.", + "yunohost_postinstall_end_tip": "S'ha completat la post-instal·lació. Per acabar la configuració, considereu:\n - diagnosticar possibles problemes a través de la secció «Diagnòstics» a la pàgina web d'administració (o emprant «yunohost diagnosis run» a la línia d'ordres);\n - llegir les seccions «Finalizing your setup» i «Getting to know YunoHost» a la documentació per administradors: https://yunohost.org/admindoc.", "diagnosis_services_running": "El servei {service} s'està executant!", "diagnosis_services_conf_broken": "La configuració pel servei {service} està trencada!", "diagnosis_ports_needed_by": "És necessari exposar aquest port per a les funcions {category} (servei {service})", @@ -512,8 +512,8 @@ "pattern_email_forward": "Ha de ser una adreça de correu vàlida, s'accepta el símbol «+» (per exemple, algu+etiqueta@exemple.cat)", "invalid_number": "Ha de ser una xifra", "invalid_regex": "Regex no vàlid: «{regex}»", - "global_settings_setting_smtp_relay_password": "Tramesa de la contrasenya d'amfitrió SMTP", - "global_settings_setting_smtp_relay_user": "Tramesa de compte d'usuari SMTP", + "global_settings_setting_smtp_relay_password": "Contrasenya de retransmissió SMTP", + "global_settings_setting_smtp_relay_user": "Usuari de retransmissió SMTP", "global_settings_setting_smtp_relay_port": "Port de tramesa SMTP", "diagnosis_processes_killed_by_oom_reaper": "El sistema ha matat alguns processos recentment perquè s'ha quedat sense memòria. Això acostuma a ser un símptoma de falta de memòria en el sistema o d'un procés que consumeix massa memòria. Llista dels processos que s'han matat:\n{kills_summary}", "diagnosis_package_installed_from_sury_details": "Alguns paquets s'han instal·lat per equivocació des d'un repositori de tercers anomenat Sury. L'equip de YunoHost a millorat l'estratègia per a gestionar aquests paquets, però s'espera que algunes configuracions que han instal·lat aplicacions PHP7.3 a Stretch puguin tenir algunes inconsistències. Per a resoldre aquesta situació, hauríeu d'intentar executar la següent ordre: {cmd_to_fix}", @@ -638,7 +638,7 @@ "diagnosis_apps_bad_quality": "Aquesta aplicació està actualment marcada com a trencada al catàleg d'aplicacions de YunoHost. Pot ser un problema temporal mentre els responsables intenten solucionar el problema. Mentrestant, l'actualització d'aquesta aplicació està desactivada.", "diagnosis_using_stable_codename_details": "Això sol ser causat per una configuració incorrecta del vostre proveïdor d'allotjament. Això és perillós, perquè tan bon punt la propera versió de Debian es converteixi en la nova «stable», apt voldrà actualitzar tots els paquets del sistema sense passar per un procediment de migració adequat. Es recomana arreglar-ho editant la font d'apt per al dipòsit de Debian bàsic i substituir la paraula clau stable pel nom en clau de la versió estable actual. El fitxer de configuració corresponent hauria de ser /etc/apt/sources.list, o un fitxer a /etc/apt/sources.list.d/.", "confirm_app_insufficient_ram": "PERILL! Aquesta aplicació requereix {required} de RAM per instal·lar/actualitzar, però només n'hi ha {current} disponibles ara mateix. Fins i tot si aquesta aplicació es pot executar, el seu procés d'instal·lació/actualització requereix una gran quantitat de memòria RAM, de manera que el servidor es pot congelar i fallar miserablement. Si esteu disposat a córrer aquest risc de totes maneres, escriviu «{answers}»", - "diagnosis_apps_outdated_ynh_requirement": "La versió instal·lada d'aquesta aplicació només requereix yunohost >= 2.x o 3.x, la qual cosa acostuma a indicar que no està al dia amb les pràctiques d'empaquetament i els ajudants recomanats. Realment hauríeu de considerar actualitzar-la.", + "diagnosis_apps_outdated_ynh_requirement": "La versió instal·lada d'aquesta aplicació només requereix yunohost >= 2.x o 3.x, la qual cosa acostuma a indicar que no està al dia amb les pràctiques d'empaquetament i els «ajudants» recomanats. Realment hauríeu de considerar actualitzar-la.", "domain_cannot_add_muc_upload": "No podeu afegir dominis que comencin per 'muc.'. Aquest tipus de nom està reservat per a la funció de xat multiusuari XMPP integrada a YunoHost.", "domain_config_acme_eligible": "Elegibilitat (per a l') ACME", "domain_config_auth_token": "Token d'autenticació", @@ -647,5 +647,139 @@ "domain_config_default_app_help": "Es redirigirà automàticament a aquesta aplicació en obrir aquest domini. Si no s'especifica cap aplicació, es redirigeix al formulari d'inici de sessió del portal de l'usuari.", "domain_config_xmpp_help": "NB: algunes funcions XMPP requeriran que actualitzeu els vostres registres DNS i que regenereu el vostre certificat Let's Encrypt perquè estigui activat", "domain_dns_push_failed": "L'actualització dels registres DNS ha fallat estrepitosament.", - "domain_dns_push_not_applicable": "La funció de configuració automàtica de DNS no és aplicable al domini {domain}. Hauríeu de configurar manualment els vostres registres DNS seguint la documentació a https://yunohost.org/dns_config." + "domain_dns_push_not_applicable": "La funció de configuració automàtica de DNS no és aplicable al domini {domain}. Hauríeu de configurar manualment els vostres registres DNS seguint la documentació a https://yunohost.org/dns_config.", + "migration_0023_not_enough_space": "Allibereu espai a {path} per executar la migració.", + "log_app_config_set": "Aplica la configuració a l'aplicació «{}»", + "log_domain_dns_push": "Envia registres DNS per al domini «{}»", + "global_settings_setting_nginx_compatibility": "Compatibilitat NGINX", + "migration_0021_still_on_buster_after_main_upgrade": "Alguna cosa ha fallat durant l'actualització principal, sembla que el sistema encara està a Debian Buster", + "migration_ldap_rollback_success": "El sistema s'ha revertit.", + "migration_0024_rebuild_python_venv_in_progress": "Ara s'està intentant reconstruir el virtualenv de Python per a «{app}»", + "migration_description_0023_postgresql_11_to_13": "Migra bases de dades de PostgreSQL 11 a 13", + "migration_description_0025_global_settings_to_configpanel": "Migra l'antiga nomenclatura de configuració global a la nova", + "migration_ldap_backup_before_migration": "Creant una còpia de seguretat de la configuració de les aplicacions i la base de dades LDAP abans de la migració real.", + "migration_ldap_can_not_backup_before_migration": "La còpia de seguretat del sistema no s'ha pogut completar abans que la migració fallés. Error: {error}", + "migration_ldap_migration_failed_trying_to_rollback": "No s'ha pogut migrar... s'està intentant revertir el sistema.", + "password_confirmation_not_the_same": "La contrasenya i la confirmació no coincideixen", + "group_mailalias_add": "L'àlies de correu electrònic «{mail}» s'afegirà al grup «{group}»", + "group_mailalias_remove": "L'àlies de correu electrònic «{mail}» s'eliminarà del grup «{group}»", + "group_user_add": "L'usuari «{user}» s'afegirà al grup «{group}»", + "ldap_server_down": "No es pot arribar al servidor LDAP", + "log_settings_reset_all": "Restableix tots els paràmetres", + "log_settings_set": "Aplica la configuració", + "migration_0021_system_not_fully_up_to_date": "El vostre sistema no està completament actualitzat. Realitzeu una actualització regular abans d'executar la migració.", + "migration_0023_postgresql_13_not_installed": "PostgreSQL 11 està instal·lat, però no PostgreSQL 13!? Alguna cosa estranya podria haver passat al vostre sistema :(...", + "migration_description_0021_migrate_to_bullseye": "Actualitzeu el sistema a Debian Bullseye i YunoHost 11.x", + "user_import_failed": "L'operació d'importació dels usuaris ha fallat completament", + "migration_0023_postgresql_11_not_installed": "PostgreSQL no estava instal·lat al vostre sistema. Res a fer.", + "ldap_server_is_down_restart_it": "El servei LDAP està inactiu, intenteu reiniciar-lo...", + "dyndns_set_recovery_password_invalid_password": "No s'ha pogut establir la contrasenya de recuperació: la contrasenya no és prou forta", + "dyndns_set_recovery_password_unknown_domain": "No s'ha pogut establir la contrasenya de recuperació: domini no registrat", + "dyndns_unsubscribe_already_unsubscribed": "El domini ja està cancel·lat", + "dyndns_unsubscribe_denied": "No s'ha pogut cancel·lar la subscripció del domini: credencials no vàlides", + "dyndns_unsubscribe_failed": "No s'ha pogut cancel·lar la subscripció al domini DynDNS: {error}", + "dyndns_unsubscribed": "S'ha cancel·lat la subscripció al domini DynDNS", + "global_settings_setting_ssh_password_authentication": "Autenticació de contrasenya", + "global_settings_setting_ssh_port": "Port SSH", + "global_settings_setting_pop3_enabled": "Activa POP3", + "global_settings_setting_portal_theme_help": "Més informació sobre la creació de temes de portal personalitzats a https://yunohost.org/theming", + "global_settings_setting_postfix_compatibility": "Compatibilitat Postfix", + "global_settings_setting_security_experimental_enabled_help": "Activa les funcions de seguretat experimentals (no l'habilites si no saps què estàs fent!)", + "global_settings_setting_smtp_relay_host": "Amfitrió de retransmissió SMTP", + "global_settings_setting_smtp_relay_enabled": "Activa la retransmissió SMTP", + "global_settings_setting_ssh_compatibility": "Compatibilitat SSH", + "global_settings_setting_ssh_password_authentication_help": "Permet l'autenticació de contrasenya per a SSH", + "global_settings_setting_user_strength_help": "Aquests requisits només s'apliquen en inicialitzar o canviar la contrasenya", + "global_settings_setting_webadmin_allowlist_enabled": "Activa la lista d'IPs permeses de Webadmin", + "visitors": "Visitants", + "group_user_remove": "L'usuari «{user}» s'eliminarà del grup «{group}»", + "invalid_number_min": "Ha de ser superior a {min}", + "migration_0021_start": "Començant la migració", + "global_settings_setting_webadmin_allowlist_help": "Adreces IP permeses per accedir a Webadmin. La notació CIDR està permesa.", + "app_corrupt_source": "YunoHost ha pogut baixar el recurs «{source_id}» ({url}) per a {app}, però el recurs no coincideix amb la suma de comprovació esperada. Això podria significar que s'ha produït una fallada temporal de la xarxa al vostre servidor, O el responsable de manteniment (o un actor maliciós?) ha canviat d'alguna manera l'actiu i els empaquetadors de YunoHost han d'investigar i actualitzar el manifest de l'aplicació per reflectir aquest canvi.\n Suma de comprovació esperada de sha256: {expected_sha256}\n Suma de comprovació sha256 baixada: {computed_sha256}\n Mida del fitxer baixat: {size}", + "migration_0021_yunohost_upgrade": "S'està iniciant l'actualització de YunoHost...", + "migration_0024_rebuild_python_venv_broken_app": "S'ha omès {app} perquè virtualenv no es pot reconstruir fàcilment per a aquesta aplicació. En comptes d'això, hauríeu de solucionar la situació forçant l'actualització d'aquesta aplicació mitjançant «yunohost app upgrade --force {app}».", + "pattern_fullname": "Ha de ser un nom complet vàlid (almenys tres caràcters)", + "dyndns_subscribe_failed": "No s'ha pogut subscriure el domini DynDNS: {error}", + "invalid_number_max": "Ha de ser inferior a {max}", + "log_domain_config_set": "Actualitza la configuració del domini «{}»", + "migration_0021_patching_sources_list": "Corregint les llistes de fonts...", + "domain_dns_push_success": "Registres DNS actualitzats!", + "domain_dns_pushing": "S'estan enviant els registres DNS...", + "domain_dns_registrar_experimental": "Fins ara, la interfície amb l'API de **{registrar}** no ha estat provada i revisada adequadament per la comunitat YunoHost. El suport és **molt experimental**: aneu amb compte!", + "domain_dns_registrar_managed_in_parent_domain": "Aquest domini és un subdomini de {parent_domain_link}. La configuració del registrador de DNS s'ha de gestionar al tauler de configuració de {parent_domain}.", + "domain_dns_registrar_not_supported": "YunoHost no ha pogut detectar automàticament el registrador que gestiona aquest domini. Hauríeu de configurar manualment les vostres entrades DNS seguint la documentació a https://yunohost.org/dns .", + "domain_dns_registrar_supported": "YunoHost va detectar automàticament que aquest domini el gestiona el registrador **{registrar}**. Si voleu, YunoHost configurarà automàticament aquesta zona DNS, si li proporcioneu les credencials API adequades. Podeu trobar documentació sobre com obtenir les vostres credencials de l'API en aquesta pàgina: https://yunohost.org/registar_api_{registrar}. (També podeu configurar manualment les vostres entrades DNS seguint la documentació a https://yunohost.org/dns )", + "domain_dns_registrar_yunohost": "Aquest domini és un nohost.me / nohost.st / ynh.fr i, per tant, la seva configuració DNS la gestiona automàticament YunoHost sense cap altra configuració. (vegeu l'ordre «yunohost dyndns update»)", + "domain_registrar_is_not_configured": "El registrador encara no està configurat per al domini {domain}.", + "domain_remove_confirm_apps_removal": "Si suprimiu aquest domini, s'eliminaran aquestes aplicacions:\n {apps}\n\n Estàs segur que vols fer-ho? [{answers}]", + "domain_unknown": "Domini «{domain}» desconegut", + "dyndns_no_recovery_password": "No s'ha especificat cap contrasenya de recuperació! En cas que perdeu el control d'aquest domini, haureu de contactar amb un administrador de l'equip de YunoHost!", + "dyndns_set_recovery_password_denied": "No s'ha pogut establir la contrasenya de recuperació: clau no vàlida", + "dyndns_set_recovery_password_failed": "No s'ha pogut establir la contrasenya de recuperació: {error}", + "global_settings_setting_portal_theme": "Tema del portal", + "global_settings_setting_smtp_allow_ipv6": "Permet IPv6", + "global_settings_setting_ssh_port_help": "Es prefereix un port inferior a 1024 per evitar intents d'usurpació per part de serveis que no són administradors a la màquina remota. També hauríeu d'evitar utilitzar un port que ja s'utilitza, com ara 80 o 443.", + "log_backup_create": "Crea un arxiu de còpia de seguretat", + "service_description_postgresql": "Emmagatzema dades de l'aplicació (base de dades SQL)", + "service_description_yunomdns": "Us permet arribar al vostre servidor mitjançant 'yunohost.local' a la vostra xarxa local", + "dyndns_set_recovery_password_success": "S'ha establert la contrasenya de recuperació!", + "dyndns_subscribed": "Domini DynDNS subscrit", + "global_settings_reset_success": "Restableix la configuració global", + "global_settings_setting_backup_compress_tar_archives": "Comprimir còpies de seguretat", + "global_settings_setting_dns_exposure_help": "Nota: això només afecta la configuració de DNS recomanada i les comprovacions de diagnòstic. Això no afecta les configuracions del sistema.", + "global_settings_setting_nginx_redirect_to_https": "Força HTTPS", + "global_settings_setting_passwordless_sudo": "Permet als administradors utilitzar «sudo» sense tornar a escriure les seves contrasenyes", + "global_settings_setting_pop3_enabled_help": "Habilita el protocol POP3 per al servidor de correu", + "global_settings_setting_security_experimental_enabled": "Característiques de seguretat experimentals", + "global_settings_setting_webadmin_allowlist_enabled_help": "Permet que només algunes IPs accedeixin a Webadmin.", + "group_no_change": "No hi ha res a canviar per al grup «{group}»", + "group_update_aliases": "S'estan actualitzant els àlies per al grup «{group}»", + "invalid_shell": "Shell no vàlid: {shell}", + "ldap_attribute_already_exists": "L'atribut LDAP «{attribute}» ja existeix amb el valor «{value}»", + "log_resource_snippet": "Aprovisionament/desprovisionament/actualització d'un recurs", + "migration_0021_cleaning_up": "Netejar la memòria cau i els paquets que ja no són útils...", + "migration_0021_modified_files": "Tingueu en compte que s'ha trobat que els fitxers següents s'han modificat manualment i es poden sobreescriure després de l'actualització: {manually_modified_files}", + "migration_0024_rebuild_python_venv_disclaimer_base": "Després de l'actualització, algunes aplicacions de Python s'han de reconstruir parcialment per convertir-se a la nova versió de Python distribuïda amb Debian (en termes tècnics: cal recrear el que s'anomena «virtualenv»). Mentrestant, aquestes aplicacions Python poden no funcionar. YunoHost pot intentar reconstruir el virtualenv per a alguns d'ells, tal com es detalla a continuació. Per a altres aplicacions, o si l'intent de reconstrucció falla, haureu de forçar manualment una actualització d'aquestes aplicacions.", + "migration_0024_rebuild_python_venv_disclaimer_ignored": "Els virtualenvs no es poden reconstruir automàticament per a aquestes aplicacions. Heu de forçar una actualització per a aquestes, que es pot fer des de la línia d'ordres amb: «yunohost app upgrade --force APP»: {ignored_apps}", + "migration_description_0022_php73_to_php74_pools": "Migra els fitxers de configuració «pool» php7.3-fpm a php7.4", + "migration_description_0024_rebuild_python_venv": "Repara l'aplicació Python després de la migració", + "other_available_options": "... i {n} altres opcions disponibles no es mostren", + "permission_cant_add_to_all_users": "El permís {permission} no es pot afegir a tots els usuaris.", + "dyndns_too_many_requests": "El servei dyndns de YunoHost ha rebut massa sol·licituds de la vostra part, espereu una hora més o menys abans de tornar-ho a provar.", + "global_settings_setting_admin_strength_help": "Aquests requisits només s'apliquen en inicialitzar o canviar la contrasenya", + "global_settings_setting_dns_exposure": "Versions IP a tenir en compte per a la configuració i el diagnòstic de DNS", + "global_settings_setting_nginx_redirect_to_https_help": "Redirigeix les sol·licituds HTTP a HTTPs de manera predeterminada (NO HO DESACTIVEU tret que sapigueu realment què esteu fent!)", + "global_settings_setting_root_access_explain": "Als sistemes Linux, «root» és l'administrador absolut. En el context de YunoHost, l'inici de sessió SSH «root» directe està desactivat per defecte, excepte des de la xarxa local del servidor. Els membres del grup «admins» poden utilitzar l'ordre sudo per actuar com a root des de la línia d'ordres. Tanmateix, pot ser útil tenir una contrasenya de root (robusta) per depurar el sistema si per algun motiu els administradors habituals ja no poden iniciar sessió.", + "global_settings_setting_root_password": "Nova contrasenya de root", + "global_settings_setting_root_password_confirm": "Nova contrasenya de root (confirmeu)", + "global_settings_setting_ssowat_panel_overlay_enabled": "Habiliteu el petit quadrat de drecera del portal «YunoHost» a les aplicacions", + "global_settings_setting_webadmin_allowlist": "Llista d'IPs permeses de Webadmin", + "invalid_credentials": "La contrasenya o el nom d'usuari no són vàlids", + "log_dyndns_unsubscribe": "Cancel·la la subscripció a un subdomini de YunoHost «{}»", + "log_settings_reset": "Restableix la configuració", + "log_user_import": "Importa usuaris", + "migration_0021_general_warning": "Tingueu en compte que aquesta migració és una operació delicada. L'equip de YunoHost ha fet tot el possible per revisar-la i provar-la, però la migració encara podria trencar parts del sistema o de les seves aplicacions.\n\n Per tant, es recomana:\n - Feu una còpia de seguretat de qualsevol dada o aplicació crítica. Més informació a https://yunohost.org/backup ;\n - Tingueu paciència després d'iniciar la migració: depenent de la vostra connexió a Internet i el maquinari, l'actualització completa pot prendre fins a unes hores.", + "migration_0021_main_upgrade": "S'està iniciant l'actualització principal...", + "migration_0021_not_buster2": "La distribució actual de Debian no és Buster! Si ja heu executat la migració Buster->Bullseye, aquest error és simptomàtic del fet que el procediment de migració no acabà correctament (en cas contrari, YunoHost l'hauria marcat com a completada). Es recomana investigar què va passar amb l'equip de suport, que necessitarà el registre **complet** de la migració, que es pot trobar a Eines > Registres a Webadmin.", + "migration_0021_not_enough_free_space": "L'espai lliure és bastant baix a /var/! Hauríeu de tenir almenys 1 GB lliure per executar aquesta migració.", + "migration_0021_patch_yunohost_conflicts": "S'està aplicant el pegat per solucionar el problema del conflicte...", + "root_password_changed": "la contrasenya de root s'ha canviat", + "tools_upgrade": "Actualitzant paquets del sistema", + "user_import_success": "Els usuaris s'han importat correctament", + "migration_0021_problematic_apps_warning": "Tingueu en compte que s'han detectat les següents aplicacions instal·lades possiblement problemàtiques. Sembla que no s'han instal·lat des del catàleg d'aplicacions de YunoHost o no estan marcades com a «funcionant». En conseqüència, no es pot garantir que encara funcionin després de l'actualització: {problematic_apps}", + "migration_0024_rebuild_python_venv_disclaimer_rebuild": "S'intentarà reconstruir el virtualenv per a les aplicacions següents (Nota: l'operació pot trigar una mica!): {rebuild_apps}", + "migration_0024_rebuild_python_venv_failed": "No s'ha pogut reconstruir el virtualenv de Python per a {app}. És possible que l'aplicació no funcioni mentre no es resolgui. Hauríeu d'arreglar la situació forçant l'actualització d'aquesta aplicació mitjançant «yunohost app upgrade --force {app}».", + "migration_description_0026_new_admins_group": "Migra al nou sistema d'«administradors múltiples»", + "password_too_long": "Si us plau, trieu una contrasenya de menys de 127 caràcters", + "restore_backup_too_old": "Aquest arxiu de còpia de seguretat no es pot restaurar perquè prové d'una versió de YunoHost massa antiga.", + "service_not_reloading_because_conf_broken": "No s'està tornant a carregar/reiniciar el servei «{name}» perquè la seva configuració està trencada: {errors}", + "tools_upgrade_failed": "No s'han pogut actualitzar els paquets: {packages_list}", + "user_import_bad_file": "El vostre fitxer CSV no té el format correcte, s'ignorarà per evitar possibles pèrdues de dades", + "user_import_bad_line": "Línia {line} incorrecta: {details}", + "user_import_missing_columns": "Falten les columnes següents: {columns}", + "user_import_nothing_to_do": "No cal importar cap usuari", + "user_import_partial_failed": "L'operació d'importació dels usuaris ha fallat parcialment", + "domain_dns_push_record_failed": "No s'ha pogut {action} el registre {type}/{name}: {error}", + "registrar_infos": "Informació del registrador" } From a533cdd74122c7dfdf0b980cd933dc4dcf7d063a Mon Sep 17 00:00:00 2001 From: Tommi Date: Sun, 11 Feb 2024 14:12:41 +0000 Subject: [PATCH 33/64] Translated using Weblate (Italian) Currently translated at 80.3% (629 of 783 strings) Translation: YunoHost/core Translate-URL: https://translate.yunohost.org/projects/yunohost/core/it/ --- locales/it.json | 65 +++++++++++++++++++++++++++++++++++++------------ 1 file changed, 49 insertions(+), 16 deletions(-) diff --git a/locales/it.json b/locales/it.json index 033de5b79..c8264bb57 100644 --- a/locales/it.json +++ b/locales/it.json @@ -4,8 +4,8 @@ "app_not_installed": "Impossibile trovare l'applicazione {app} nell'elenco delle applicazioni installate: {all_apps}", "app_unknown": "Applicazione sconosciuta", "ask_password": "Password", - "backup_archive_name_exists": "Il nome dell'archivio del backup è già esistente.", - "backup_created": "Backup completo", + "backup_archive_name_exists": "Esiste già un archivio di backup con il nome ‘{name}’.", + "backup_created": "Backup creato: {name}", "backup_output_directory_not_empty": "Dovresti scegliere una cartella di output vuota", "domain_created": "Dominio creato", "domain_exists": "Il dominio esiste già", @@ -28,10 +28,10 @@ "app_not_properly_removed": "{app} non è stata correttamente rimossa", "action_invalid": "L'azione '{action}' non è valida", "app_removed": "{app} disinstallata", - "app_sources_fetch_failed": "Impossibile riportare i file sorgenti, l'URL è corretto?", + "app_sources_fetch_failed": "Impossibile riportare i file sorgenti, l’URL è corretto?", "app_upgrade_failed": "Impossibile aggiornare {app}: {error}", "app_upgraded": "{app} aggiornata", - "app_requirements_checking": "Controllo i pacchetti richiesti per {app}...", + "app_requirements_checking": "Controllo dei requisiti per {app}…", "ask_main_domain": "Dominio principale", "ask_new_admin_password": "Nuova password dell'amministrazione", "backup_app_failed": "Non è possibile fare il backup {app}", @@ -47,7 +47,7 @@ "backup_cleaning_failed": "Non è possibile pulire la directory temporanea di backup", "backup_creation_failed": "Impossibile creare l'archivio di backup", "backup_delete_error": "Impossibile cancellare '{path}'", - "backup_deleted": "Backup cancellato", + "backup_deleted": "Backup eliminato: {name}", "backup_hook_unknown": "Hook di backup '{hook}' sconosciuto", "backup_nothings_done": "Niente da salvare", "backup_output_directory_forbidden": "Scegli una diversa directory di output. I backup non possono esser creati nelle sotto-cartelle /bin, /boot, /dev, /etc, /lib, /root, /run, /sbin, /sys, /usr, /var o /home/yunohost.backup/archives", @@ -142,7 +142,7 @@ "certmanager_certificate_fetching_or_enabling_failed": "Il tentativo di usare il nuovo certificato per {domain} non funziona...", "certmanager_attempt_to_renew_nonLE_cert": "Il certificato per il dominio {domain} non è emesso da Let's Encrypt. Impossibile rinnovarlo automaticamente!", "certmanager_attempt_to_renew_valid_cert": "Il certificato per il dominio {domain} non è in scadenza! (Puoi usare --force per forzare se sai quel che stai facendo)", - "certmanager_domain_http_not_working": "Il dominio {domain} non sembra accessibile attraverso HTTP. Verifica nella sezione 'Web' nella diagnosi per maggiori informazioni. (Se sai cosa stai facendo, usa '--no-checks' per disattivare i controlli.)", + "certmanager_domain_http_not_working": "Il dominio {domain} non sembra accessibile tramite HTTP. Controlla la sezione ‘Web’ della diagnosi per maggiori informazioni. (Se sai cosa stai facendo, usa ‘--no-checks’ per disattivare i controlli.)", "app_already_installed_cant_change_url": "Questa applicazione è già installata. L'URL non può essere cambiato solo da questa funzione. Controlla se `app changeurl` è disponibile.", "app_already_up_to_date": "{app} è già aggiornata", "app_change_url_identical_domains": "Il vecchio ed il nuovo dominio/percorso_url sono identici ('{domain}{path}'), nessuna operazione necessaria.", @@ -174,7 +174,7 @@ "backup_unable_to_organize_files": "Impossibile organizzare i file nell'archivio con il metodo veloce", "backup_with_no_backup_script_for_app": "L'app {app} non ha script di backup. Ignorata.", "backup_with_no_restore_script_for_app": "L'app {app} non ha script di ripristino, non sarai in grado di ripristinarla automaticamente dal backup di questa app.", - "certmanager_acme_not_configured_for_domain": "La challenge ACME non può validare il {domain} perché la relativa configurazione di nginx è mancante... Assicurati che la tua configurazione di nginx sia aggiornata con il comando `yunohost tools regen-conf nginx --dry-run --with-diff`.", + "certmanager_acme_not_configured_for_domain": "La prova ACME non può validare {domain} ora, perché manca la relativa configurazione di nginx… Assicurati che la tua configurazione di nginx sia aggiornata con il comando `yunohost tools regen-conf nginx --dry-run --with-diff`.", "certmanager_cannot_read_cert": "Qualcosa è andato storto nel tentativo di aprire il certificato attuale per il dominio {domain} (file: {file}), motivo: {reason}", "certmanager_cert_install_success": "Certificato Let's Encrypt per il dominio {domain} installato", "aborting": "Annullamento.", @@ -199,7 +199,7 @@ "password_too_simple_4": "La password deve essere lunga almeno 12 caratteri e contenere numeri, maiuscole e minuscole", "app_action_cannot_be_ran_because_required_services_down": "I seguenti servizi dovrebbero essere in funzione per completare questa azione: {services}. Prova a riavviarli per proseguire (e possibilmente cercare di capire come ma non funzionano più).", "backup_output_symlink_dir_broken": "La tua cartella d'archivio '{path}' è un link simbolico interrotto. Probabilmente hai dimenticato di montare o montare nuovamente il supporto al quale punta il link.", - "certmanager_domain_dns_ip_differs_from_public_ip": "I record DNS per il dominio '{domain}' è diverso dall'IP di questo server. Controlla la sezione (basic) 'Record DNS' nella diagnosi per maggiori informazioni. Se hai modificato recentemente il tuo valore A, attendi che si propaghi (esistono online alcuni siti per il controllo della propagazione DNS). (Se sai cosa stai facendo, usa '--no-checks' per disattivare i controlli.)", + "certmanager_domain_dns_ip_differs_from_public_ip": "I record DNS per il dominio ‘{domain}’ sono diversi dall’indirizzo IP di questo server. Controlla la sezione ‘Record DNS’ (base) nella diagnosi per maggiori informazioni. Se hai modificato il tuo record A recentemente, attendi che si propaghi (esistono alcuni siti web per il controllo della propagazione DNS). (Se sai cosa stai facendo, usa ‘--no-checks’ per disattivare i controlli.)", "certmanager_hit_rate_limit": "Troppi certificati già rilasciati per questa esatta serie di domini {domain} recentemente. Per favore riprova più tardi. Guarda https://letsencrypt.org/docs/rate-limits/ per maggiori dettagli", "certmanager_no_cert_file": "Impossibile leggere il file di certificato per il dominio {domain} (file: {file})", "certmanager_self_ca_conf_file_not_found": "File di configurazione non trovato per l'autorità di auto-firma (file: {file})", @@ -250,7 +250,7 @@ "mail_unavailable": "Questo indirizzo email è riservato e dovrebbe essere automaticamente assegnato al primo utente", "this_action_broke_dpkg": "Questa azione ha danneggiato dpkg/APT (i gestori di pacchetti del sistema)... Puoi provare a risolvere questo problema connettendoti via SSH ed eseguendo `sudo apt install --fix-broken` e/o `sudo dpkg --configure -a`.", "app_action_broke_system": "Questa azione sembra avere rotto questi servizi importanti: {services}", - "app_remove_after_failed_install": "Rimozione dell'applicazione a causa del fallimento dell'installazione...", + "app_remove_after_failed_install": "Rimozione dell’applicazione dopo del fallimento della sua installazione…", "app_install_script_failed": "Si è verificato un errore nello script di installazione dell'applicazione", "app_install_failed": "Impossibile installare {app}:{error}", "app_full_domain_unavailable": "Spiacente, questa app deve essere installata su un proprio dominio, ma altre applicazioni sono già installate sul dominio '{domain}'. Potresti usare invece un sotto-dominio dedicato per questa app.", @@ -262,9 +262,9 @@ "apps_catalog_obsolete_cache": "La cache del catalogo della applicazioni è vuoto o obsoleto.", "apps_catalog_update_success": "Il catalogo delle applicazioni è stato aggiornato!", "backup_archive_corrupted": "Sembra che l'archivio di backup '{archive}' sia corrotto: {error}", - "backup_archive_cant_retrieve_info_json": "Impossibile caricare informazione per l'archivio '{archive}'... Impossibile scaricare info.json (oppure non è un json valido).", + "backup_archive_cant_retrieve_info_json": "Impossibile caricare informazioni per l’archivio ‘{archive}’… Il file info.json non può essere recuperato (oppure non è in formato JSON valido).", "app_packaging_format_not_supported": "Quest'applicazione non può essere installata perché il formato non è supportato dalla vostra versione di YunoHost. Dovreste considerare di aggiornare il vostro sistema.", - "certmanager_domain_not_diagnosed_yet": "Non c'è ancora alcun risultato di diagnosi per il dominio {domain}. Riavvia una diagnosi per la categoria 'DNS records' e 'Web' nella sezione di diagnosi per verificare se il dominio è pronto per Let's Encrypt. (Se sai cosa stai facendo, usa '--no-checks' per disattivare i controlli.)", + "certmanager_domain_not_diagnosed_yet": "Non c’è ancora alcun risultato di diagnosi per il dominio {domain}. Riavvia una diagnosi per la categoria ‘DNS records’ e ‘Web’ nella sezione di diagnosi per verificare se il dominio è pronto per Let’s Encrypt. (Se sai cosa stai facendo, usa ‘--no-checks’ per disattivare i controlli.)", "backup_permission": "Backup dei permessi per {app}", "ask_user_domain": "Dominio da usare per l'indirizzo email e l'account XMPP dell'utente", "app_manifest_install_ask_is_public": "Quest'applicazione dovrà essere visibile ai visitatori anonimi?", @@ -272,8 +272,8 @@ "app_manifest_install_ask_password": "Scegli una password di amministrazione per quest'applicazione", "app_manifest_install_ask_path": "Scegli il percorso URL (dopo il dominio) dove installare quest'applicazione", "app_manifest_install_ask_domain": "Scegli il dominio dove installare quest'app", - "app_argument_password_no_default": "Errore durante il parsing dell'argomento '{name}': l'argomento password non può avere un valore di default per ragioni di sicurezza", - "additional_urls_already_added": "L'URL aggiuntivo '{url}' è già utilizzato come URL aggiuntivo per il permesso '{permission}'", + "app_argument_password_no_default": "Errore registrato processando l’argomento ‘{name}’: l’argomento password non può avere un valore di default per ragioni di sicurezza", + "additional_urls_already_added": "L’URL aggiuntivo ‘{url}’ è già utilizzato come URL aggiuntivo per il permesso ‘{permission}’", "diagnosis_basesystem_ynh_inconsistent_versions": "Stai eseguendo versioni incompatibili dei pacchetti YunoHost... probabilmente a causa di aggiornamenti falliti o parziali.", "diagnosis_basesystem_ynh_main_version": "Il server sta eseguendo YunoHost {main_version} ({repo})", "diagnosis_basesystem_ynh_single_version": "Versione {package}: {version} ({repo})", @@ -282,7 +282,7 @@ "diagnosis_basesystem_hardware": "L'architettura hardware del server è {virt} {arch}", "certmanager_warning_subdomain_dns_record": "Il sottodominio '{subdomain}' non si risolve nello stesso indirizzo IP di '{domain}'. Alcune funzioni non saranno disponibili finchè questa cosa non verrà sistemata e rigenerato il certificato.", "app_label_deprecated": "Questo comando è deprecato! Utilizza il nuovo comando 'yunohost user permission update' per gestire la label dell'app.", - "additional_urls_already_removed": "L'URL aggiuntivo '{url}' è già stato rimosso come URL aggiuntivo per il permesso '{permission}'", + "additional_urls_already_removed": "L’URL aggiuntivo ‘{url}’ è già stato rimosso come URL aggiuntivo per il permesso ‘{permission}’", "diagnosis_services_bad_status_tip": "Puoi provare a riavviare il servizio, e se non funziona, controlla ai log del servizio in amministrazione (dalla linea di comando, puoi farlo con yunohost service restart {service} e yunohost service log {service}).", "diagnosis_services_bad_status": "Il servizio {service} è {status} :(", "diagnosis_services_conf_broken": "Il servizio {service} è mal-configurato!", @@ -634,5 +634,38 @@ "global_settings_setting_smtp_allow_ipv6_help": "Permetti l'utilizzo di IPv6 per ricevere e inviare mail", "global_settings_setting_smtp_relay_enabled_help": "Utilizza SMTP relay per inviare mail al posto di questa instanza yunohost. Utile se sei in una di queste situazioni: la tua porta 25 è bloccata dal tuo provider ISP o VPS; hai un IP residenziale listato su DUHL; non sei puoi configurare il DNS inverso; oppure questo server non è direttamente esposto a Internet e vuoi usarne un'altro per spedire email.", "domain_config_default_app": "Applicazione di default", - "app_change_url_failed": "Non è possibile cambiare l'URL per {app}:{error}" -} \ No newline at end of file + "app_change_url_failed": "Non è possibile cambiare l'URL per {app}:{error}", + "ask_dyndns_recovery_password_explain_during_unsubscribe": "Digita la password di recupero per questo dominio DynDNS.", + "ask_fullname": "Nome completo", + "app_not_enough_disk": "Quest’app richiede {required} di spazio libero.", + "app_resource_failed": "Fallimento della fornitura, della rimozione o dell’aggiornamento di risorse per {app}: {error}", + "apps_failed_to_upgrade_line": "\n * {app_id} (per vedere il log corrispondente, esegui ‘yunohost log show {operation_logger_name}’)", + "app_change_url_script_failed": "È stato registrato un errore eseguendo lo script per la modifica dell’URL", + "certmanager_cert_install_failed": "L’installazione del certificato Let’s Encrypt è fallita per {domains}", + "app_change_url_require_full_domain": "{app} non può essere spostato su questo nuovo URL, poiché richiede un dominio intero (ovvero con percorso /)", + "app_not_upgraded_broken_system_continue": "L’aggiornamento dell’app ‘{failed_app}’ è fallito e ha messo il sistema in uno stato di rottura (dunque, --continue-on-failure è stato ignorato) e di conseguenza gli aggiornamenti delle seguenti app sono stati annullati: {apps}", + "admins": "Amministratori", + "all_users": "Tutti gli utenti di YunoHost", + "app_arch_not_supported": "Quest’app può essere installata su architetture {required} ma l’architettura del tuo server è {current}", + "app_manifest_install_ask_init_main_permission": "Chi dovrebbe aver accesso a quest’app? (Questa scelta potrà esser cambiata in seguito)", + "app_action_failed": "L’esecuzione dell’azione {action} per l’app {app} è fallita", + "app_failed_to_download_asset": "Lo scaricamento della risorsa ‘{source_id}’ ({url}) per l’app {app} è fallito: {out}", + "ask_dyndns_recovery_password_explain_unavailable": "Questo dominio DynDNS è già registrato. Se sei la persona che l’ha originariamente registrato, puoi inserire la password di recupero per ripristinare questo dominio.", + "config_action_disabled": "Impossibile eseguire l’azione ‘{action}’ poiché è disattivata, assicurati di rispettare i suoi vincoli. Aiuto: {help}", + "config_action_failed": "L’esecuzione dell’azione ‘{action}’ è fallita: {error}", + "confirm_notifications_read": "ATTENZIONE: Dovresti controllare le notifiche dell’app qui sopra prima di continuare, potrebbero esserci cose importanti da sapere. [{answers}]", + "app_corrupt_source": "YunoHost è riuscito a scaricare la risorsa ‘{source_id}’ ({url}) per {app}, ma la risorsa non corrisponde al checksum previsto. Questo potrebbe significare che potrebbe essere avvenuto un errore di rete nel tuo server, OPPURE che la risorsa è stata cambiata in qualche modo da chi la mantiene o da una terza parte malevola. Le persone che si occupano del pacchetto YunoHost devono investigare e aggiornare il manifesto dell’app per riflettere questo cambiamento.\n Checksum sha256 previsto: {expected_sha256}\n Checksum sha256 scaricato: {computed_sha256}\n Dimensioni del file scaricato: {size}", + "app_failed_to_upgrade_but_continue": "L’aggiornamento dell’app {failed_app} è fallito. Continuando ora con gli aggiornamenti successivi, come richiesto. Esegui ‘yunohost log show {operation_logger_name}’ per visualizzare il log del fallimento", + "app_manifest_install_ask_init_admin_permission": "Chi dovrebbe aver accesso alle funzionalità di amministrazione per quest’app? (Questa scelta potrà esser cambiata in seguito)", + "app_not_enough_ram": "Quest’app richiede {required} di RAM per essere installata/aggiornata, ma solo {current} sono disponibili al momento.", + "app_not_upgraded_broken_system": "L’aggiornamento dell’app ‘{failed_app}’ è fallito e ha messo il sistema in uno stato di rottura, di conseguenza i gli aggiornamenti delle seguenti app sono stati annullati: {apps}", + "app_yunohost_version_not_supported": "Quest’app richiede YunoHost ≥ {required}, ma la versione installata ora è {current}", + "apps_failed_to_upgrade": "È fallito l’aggiornamento di queste applicazioni: {apps}", + "ask_admin_fullname": "Nome completo dell’utente amministratore", + "ask_dyndns_recovery_password": "Password di recupero per DynDNS", + "certmanager_cert_install_failed_selfsigned": "L’installazione di un certificato auto-firmato è fallita per {domains}", + "ask_admin_username": "Username dell’utente amministratore", + "certmanager_cert_renew_failed": "Il rinnovo del certificato Let’s Encrypt è fallito per {domains}", + "ask_dyndns_recovery_password_explain": "Scegli una password di recupero per il tuo dominio DynDNS, in caso dovessi ripristinarlo successivamente.", + "confirm_app_insufficient_ram": "PERICOLO! Quest’app richiede {required} di RAM per essere installata/aggiornata, ma solo {current} sono disponibili ora. Nonostante l’app possa funzionare, la sua installazione o aggiornamento richiedono una grande quantità di RAM, perciò il tuo server potrebbe bloccarsi o fallire miseramente. Se sei dispostə a prenderti questo rischio comunque, digita ‘{answers}’" +} From c82787738753b361525c4ab88932914a1c260109 Mon Sep 17 00:00:00 2001 From: Kay0u Date: Tue, 20 Feb 2024 23:36:33 +0100 Subject: [PATCH 34/64] Update 11.2.10.1 --- debian/changelog | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/debian/changelog b/debian/changelog index 29bd80c9c..85ffdbb54 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,14 @@ +yunohost (11.2.10.1) stable; urgency=low + + - apps/autoupdate: update docs ([#1776](http://github.com/YunoHost/yunohost/pull/1776)) + - fix: sury apt key/purge all expired apt keys ([#1777](http://github.com/YunoHost/yunohost/pull/1777)) + - helpers/logrotate: fix logs folders perms ([#1774](http://github.com/YunoHost/yunohost/pull/1774)) + - [i18n] Translations updated for Catalan, Italian + + Thanks to all contributors <3 ! (Alexandre Aubin, Bram, Francescc, Kayou, OniriCorpe, Tagada, Tommi, yunohost-bot) + + -- Kay0u Tue, 20 Feb 2024 23:33:20 +0100 + yunohost (11.2.10) stable; urgency=low - helpers: document --after= in for ynh_read_var_in_file and ynh_write_var_in_file ([#1758](https://github.com/yunohost/yunohost/pull/1758)) From 3f735ef3c1d389a767e44116f556ecdc7c09d7bc Mon Sep 17 00:00:00 2001 From: Kay0u Date: Wed, 21 Feb 2024 01:18:42 +0100 Subject: [PATCH 35/64] change REPO_URL so we can use it for all YNH projects, logc doesn't exist --- maintenance/make_changelog.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/maintenance/make_changelog.sh b/maintenance/make_changelog.sh index f5d1572a6..866a815b7 100644 --- a/maintenance/make_changelog.sh +++ b/maintenance/make_changelog.sh @@ -1,7 +1,7 @@ VERSION="?" RELEASE="testing" REPO=$(basename $(git rev-parse --show-toplevel)) -REPO_URL="https://github.com/yunohost/yunohost" +REPO_URL=$(git remote get-url origin) ME=$(git config --global --get user.name) EMAIL=$(git config --global --get user.email) @@ -11,7 +11,7 @@ echo "$REPO ($VERSION) $RELEASE; urgency=low" echo "" git log $LAST_RELEASE.. -n 10000 --first-parent --pretty=tformat:' - %b%s (%h)' \ -| sed -E "s&Merge .*#([0-9]+).*\$& \([#\1]\($REPO_URL/pull/\1\)\)&g" \ +| sed -E "s&Merge .*#([0-9]+).*\$& \([#\1]\(http://github.com/YunoHost/$REPO/pull/\1\)\)&g" \ | grep -v "Translations update from Weblate" \ | tac @@ -22,7 +22,7 @@ TRANSLATIONS=$(git log $LAST_RELEASE... -n 10000 --pretty=format:"%s" \ [[ -z "$TRANSLATIONS" ]] || echo " - [i18n] Translations updated for $TRANSLATIONS" echo "" -CONTRIBUTORS=$(git logc $LAST_RELEASE... -n 10000 --pretty=format:"%an" \ +CONTRIBUTORS=$(git log -n10 --pretty=format:'%Cred%h%Creset %C(bold blue)(%an) %Creset%Cgreen(%cr)%Creset - %s %C(yellow)%d%Creset' --abbrev-commit $LAST_RELEASE... -n 10000 --pretty=format:"%an" \ | sort | uniq | grep -v "$ME" | grep -v 'yunohost-bot' | grep -vi 'weblate' \ | tr '\n' ', ' | sed -e 's/,$//g' -e 's/,/, /g') [[ -z "$CONTRIBUTORS" ]] || echo " Thanks to all contributors <3 ! ($CONTRIBUTORS)" From da5181f057c4693a3308ab44c55fca59ee78f65a Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 24 Feb 2024 02:07:53 +0100 Subject: [PATCH 36/64] Add autoupdate.version_regex to the doc original commit: https://github.com/YunoHost/doc/pull/2408/commits/93793fef44044ec7e5592c8bc8ad825ef32b7aaa --- src/utils/resources.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/utils/resources.py b/src/utils/resources.py index fa4ae2d39..166be46f2 100644 --- a/src/utils/resources.py +++ b/src/utils/resources.py @@ -350,6 +350,15 @@ class SourcesResource(AppResource): It is also possible to define `autoupdate.upstream` to use a different Git repository instead of the code repository from the upstream section of the manifest. This can be useful when, for example, the app uses other assets such as plugin from a different repository. + If the upstream project provides non-standard tag or release names, you can fix this, with a regex with a matching group. + For example, if tags look like `release-v4.1`, put: + + ```toml + autoupdate.version_regex = "^release-v(.*)$" + ``` + + And the autoupdater will use the matched group (here: `4.1`) as the version. + ##### Provision/Update - For elements with `prefetch = true`, will download the asset (for the appropriate architecture) and store them in `/var/cache/yunohost/download/$app/$source_id`, to be later picked up by `ynh_setup_source`. (NB: this only happens during install and upgrade, not restore) From 8906c896cbf790c4e8986c93e179853c955173d0 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sun, 25 Feb 2024 07:00:52 +0100 Subject: [PATCH 37/64] update actions/checkout & peter-evans/create-pull-request to nodejs20 --- .github/workflows/codeql.yml | 2 +- .github/workflows/n_updater.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 01b917f6e..da8ea2f4c 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -27,7 +27,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/n_updater.yml b/.github/workflows/n_updater.yml index a1a835a78..7d4dee940 100644 --- a/.github/workflows/n_updater.yml +++ b/.github/workflows/n_updater.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Fetch the source code - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: token: ${{ secrets.GITHUB_TOKEN }} - name: Run the updater script @@ -33,7 +33,7 @@ jobs: - name: Create Pull Request id: cpr if: ${{ env.PROCEED == 'true' }} - uses: peter-evans/create-pull-request@v3 + uses: peter-evans/create-pull-request@v6 with: token: ${{ secrets.GITHUB_TOKEN }} commit-message: Update n to ${{ env.VERSION }} From 99d23f623523611eb3d1c87d5342cb4373d45510 Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Thu, 29 Feb 2024 05:13:12 +0000 Subject: [PATCH 38/64] Upgrade n to v --- helpers/vendor/n/n | 73 +++++++++++++++++++++++++++++----------------- 1 file changed, 46 insertions(+), 27 deletions(-) diff --git a/helpers/vendor/n/n b/helpers/vendor/n/n index eb276a2f5..7628972c2 100755 --- a/helpers/vendor/n/n +++ b/helpers/vendor/n/n @@ -61,7 +61,7 @@ function n_grep() { # Setup and state # -VERSION="v9.2.0" +VERSION="v9.2.1" N_PREFIX="${N_PREFIX-/usr/local}" N_PREFIX=${N_PREFIX%/} @@ -1425,7 +1425,11 @@ uninstall_installed() { function show_permission_suggestions() { echo "Suggestions:" echo "- run n with sudo, or" - echo "- define N_PREFIX to a writeable location, or" + if [[ "${N_CACHE_PREFIX}" == "${N_PREFIX}" ]]; then + echo "- define N_PREFIX to a writeable location, or" + else + echo "- define N_PREFIX and N_CACHE_PREFIX to writeable locations, or" + fi } # @@ -1556,34 +1560,42 @@ function show_diagnostics() { fi fi - printf "\nChecking permissions for cache folder...\n" - # Most likely problem is ownership rather than than permissions as such. - local cache_root="${N_PREFIX}/n" - if [[ -e "${N_PREFIX}" && ! -w "${N_PREFIX}" && ! -e "${cache_root}" ]]; then - echo_red "You do not have write permission to create: ${cache_root}" - show_permission_suggestions - echo "- make a folder you own:" - echo " sudo mkdir -p \"${cache_root}\"" - echo " sudo chown $(whoami) \"${cache_root}\"" - elif [[ -e "${cache_root}" && ! -w "${cache_root}" ]]; then - echo_red "You do not have write permission to: ${cache_root}" - show_permission_suggestions - echo "- change folder ownership to yourself:" - echo " sudo chown -R $(whoami) \"${cache_root}\"" - elif [[ ! -e "${cache_root}" ]]; then - echo "Cache folder does not exist: ${cache_root}" - echo "This is normal if you have not done an install yet, as cache is only created when needed." - elif [[ -e "${CACHE_DIR}" && ! -w "${CACHE_DIR}" ]]; then - echo_red "You do not have write permission to: ${CACHE_DIR}" - show_permission_suggestions - echo "- change folder ownership to yourself:" - echo " sudo chown -R $(whoami) \"${CACHE_DIR}\"" - else + printf "\nChecking prefix folders...\n" + if [[ ! -e "${N_PREFIX}" ]]; then + echo "Folder does not exist: ${N_PREFIX}" + echo "- This folder will be created when you do an install." + fi + if [[ "${N_PREFIX}" != "${N_CACHE_PREFIX}" && ! -e "${N_CACHE_PREFIX}" ]]; then + echo "Folder does not exist: ${N_CACHE_PREFIX}" + echo "- This folder will be created when you do an install." + fi + if [[ -e "${N_PREFIX}" && -e "${N_CACHE_PREFIX}" ]]; then echo "good" fi + if [[ -e "${N_CACHE_PREFIX}" ]]; then + printf "\nChecking permissions for cache folder...\n" + # Using knowledge cache path ends in /n/versions in following check. + if [[ ! -e "${CACHE_DIR}" && (( -e "${N_CACHE_PREFIX}/n" && ! -w "${N_CACHE_PREFIX}/n" ) || ( ! -e "${N_CACHE_PREFIX}/n" && ! -w "${N_CACHE_PREFIX}" )) ]]; then + echo_red "You do not have write permission to create: ${CACHE_DIR}" + show_permission_suggestions + echo "- make a folder you own:" + echo " sudo mkdir -p \"${CACHE_DIR}\"" + echo " sudo chown $(whoami) \"${CACHE_DIR}\"" + elif [[ ! -e "${CACHE_DIR}" ]]; then + echo "Cache folder does not exist: ${CACHE_DIR}" + echo "- This is normal if you have not done an install yet, as cache is only created when needed." + elif [[ ! -w "${CACHE_DIR}" ]]; then + echo_red "You do not have write permission to: ${CACHE_DIR}" + show_permission_suggestions + echo "- change folder ownership to yourself:" + echo " sudo chown -R $(whoami) \"${CACHE_DIR}\"" + else + echo "good" + fi + fi + if [[ -e "${N_PREFIX}" ]]; then - # Most likely problem is ownership rather than than permissions as such. printf "\nChecking permissions for install folders...\n" local install_writeable="true" for subdir in bin lib include share; do @@ -1592,13 +1604,20 @@ function show_diagnostics() { echo_red "You do not have write permission to: ${N_PREFIX}/${subdir}" break fi + if [[ ! -e "${N_PREFIX}/${subdir}" && ! -w "${N_PREFIX}" ]]; then + install_writeable="false" + echo_red "You do not have write permission to create: ${N_PREFIX}/${subdir}" + break + fi done if [[ "${install_writeable}" = "true" ]]; then echo "good" else show_permission_suggestions echo "- change folder ownerships to yourself:" - echo " (cd \"${N_PREFIX}\" && sudo chown -R $(whoami) bin lib include share)" + echo " cd \"${N_PREFIX}\"" + echo " sudo mkdir -p bin lib include share" + echo " sudo chown -R $(whoami) bin lib include share" fi fi From c5e9cec93335205a1b9cd32b0c78bb1bf537a0c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Pi=C3=A9dallu?= Date: Thu, 29 Feb 2024 16:58:19 +0100 Subject: [PATCH 39/64] Fix readonly questions (display_text, etc): the code did not handle them anymore on the app side --- src/app.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/app.py b/src/app.py index 17a285f24..931e8c97b 100644 --- a/src/app.py +++ b/src/app.py @@ -1168,6 +1168,9 @@ def app_install( # If packaging_format v2+, save all install questions as settings if packaging_format >= 2: for question in questions: + # Except readonly "questions" that don't even have a value + if question.readonly: + continue # Except user-provider passwords # ... which we need to reinject later in the env_dict if question.type == "password": From 349d219a57deed8d339b8118eb546f76ee577893 Mon Sep 17 00:00:00 2001 From: tituspijean Date: Thu, 29 Feb 2024 18:25:14 +0100 Subject: [PATCH 40/64] Fix logs directories access --- helpers/logrotate | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helpers/logrotate b/helpers/logrotate index 1b586d205..efc1137c1 100644 --- a/helpers/logrotate +++ b/helpers/logrotate @@ -88,7 +88,7 @@ EOF # Make sure permissions are correct (otherwise the config file could be ignored and the corresponding logs never rotated) chmod 644 "/etc/logrotate.d/$app" mkdir -p "/var/log/$app" - chmod 640 "/var/log/$app" + chmod 750 "/var/log/$app" } # Remove the app's logrotate config. From 6a84564cdcf08b29cfc9e29384920263e5f8c079 Mon Sep 17 00:00:00 2001 From: "ljf (zamentur)" Date: Thu, 29 Feb 2024 18:36:25 +0100 Subject: [PATCH 41/64] [fix] List root ssh keys --- src/ssh.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ssh.py b/src/ssh.py index bd1132663..ae09b7117 100644 --- a/src/ssh.py +++ b/src/ssh.py @@ -172,7 +172,7 @@ def _get_user_for_ssh(username, attrs=None): "username": "root", "fullname": "", "mail": "", - "home_path": root_unix.pw_dir, + "homeDirectory": root_unix.pw_dir, } # TODO escape input using https://www.python-ldap.org/doc/html/ldap-filter.html From e01c7dcb009eea30db908e60edb931b114fc597e Mon Sep 17 00:00:00 2001 From: YunoHost Bot Date: Thu, 29 Feb 2024 23:09:17 +0100 Subject: [PATCH 42/64] Translations update from Weblate (#1782) Co-authored-by: Christian Wehrli --- locales/de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/de.json b/locales/de.json index afc49f118..b8156f514 100644 --- a/locales/de.json +++ b/locales/de.json @@ -653,7 +653,7 @@ "global_settings_setting_ssh_compatibility_help": "Kompatibilitäts- vs. Sicherheits-Kompromiss für den SSH-Server. Betrifft die Ciphers (und andere sicherheitsrelevante Aspekte). Bei Bedarf können Sie in https://infosec.mozilla.org/guidelines/openssh die Informationen nachlesen.", "global_settings_setting_ssh_password_authentication_help": "Passwort-Authentifizierung für SSH zulassen", "global_settings_setting_ssh_port": "SSH-Port", - "global_settings_setting_webadmin_allowlist_help": "IP-Adressen, die auf die Verwaltungsseite zugreifen dürfen. Kommasepariert.", + "global_settings_setting_webadmin_allowlist_help": "IP-Adressen, die auf die Verwaltungsseite zugreifen dürfen. CIDR Notation ist erlaubt.", "global_settings_setting_webadmin_allowlist_enabled_help": "Erlaube nur bestimmten IP-Adressen den Zugriff auf die Verwaltungsseite.", "global_settings_setting_smtp_allow_ipv6_help": "Erlaube die Nutzung von IPv6 um Mails zu empfangen und zu versenden", "global_settings_setting_smtp_relay_enabled_help": "Zu verwendender SMTP-Relay-Host um E-Mails zu versenden. Er wird anstelle dieser YunoHost-Instanz verwendet. Nützlich, wenn du in einer der folgenden Situationen bist: Dein ISP- oder VPS-Provider hat deinen Port 25 geblockt, eine deinen residentiellen IPs ist auf DUHL gelistet, du kannst keinen Reverse-DNS konfigurieren oder dieser Server ist nicht direkt mit dem Internet verbunden und du möchtest einen anderen verwenden, um E-Mails zu versenden.", From 5c00fdf976a692ac1e0af7fddcb74e08a3f46b64 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Thu, 29 Feb 2024 23:58:33 +0100 Subject: [PATCH 43/64] Update make_changelog.sh --- maintenance/make_changelog.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maintenance/make_changelog.sh b/maintenance/make_changelog.sh index 866a815b7..36e9f2539 100644 --- a/maintenance/make_changelog.sh +++ b/maintenance/make_changelog.sh @@ -2,8 +2,8 @@ VERSION="?" RELEASE="testing" REPO=$(basename $(git rev-parse --show-toplevel)) REPO_URL=$(git remote get-url origin) -ME=$(git config --global --get user.name) -EMAIL=$(git config --global --get user.email) +ME=$(git config --get user.name) +EMAIL=$(git config --get user.email) LAST_RELEASE=$(git tag --list 'debian/11.*' --sort="v:refname" | tail -n 1) From 609819ade8f0904906fc54ab570d9576e2d89014 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Fri, 1 Mar 2024 00:00:54 +0100 Subject: [PATCH 44/64] Update 11.2.10.2 --- debian/changelog | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/debian/changelog b/debian/changelog index 85ffdbb54..f665626da 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,17 @@ +yunohost (11.2.10.2) testing; urgency=low + + - docs: add autoupdate.version_regex to the doc ([#1781](http://github.com/YunoHost/yunohost/pull/1781)) + - chores: update actions/checkout & peter-evans/create-pull-request to nodejs20 ([#1784](http://github.com/YunoHost/yunohost/pull/1784)) + - apps: fix readonly questions at install (display_text, etc) ([#1786](http://github.com/YunoHost/yunohost/pull/1786)) + - chores: upgrade n to v9.2.1 ([#1783](http://github.com/YunoHost/yunohost/pull/1783)) + - helpers/logrotate: fix logs folder permissions ([#1787](http://github.com/YunoHost/yunohost/pull/1787)) + - fix: list root ssh keys ([#1788](http://github.com/YunoHost/yunohost/pull/1788)) + - [i18n] Translations updated for German + + Thanks to all contributors <3 ! (Alexandre Aubin, Félix Piédallu, Kay0u, ljf (zamentur), Tagada, tituspijean, YunoHost Bot) + + -- OniriCorpe Thu, 29 Feb 2024 23:49:11 +0100 + yunohost (11.2.10.1) stable; urgency=low - apps/autoupdate: update docs ([#1776](http://github.com/YunoHost/yunohost/pull/1776)) From 4759ff66a7c93df2f654c11086585131744ad61d Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Fri, 1 Mar 2024 00:24:54 +0100 Subject: [PATCH 45/64] 11.2.10.3 --- debian/changelog | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index f665626da..c9e3537d3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,12 @@ -yunohost (11.2.10.2) testing; urgency=low +yunohost (11.2.10.3) stable; urgency=low + + - fix: latest release was tagged 'testing' by error + + Thanks to all contributors <3 ! (Alexandre Aubin, Tagada, OniriCorpe) + + -- OniriCorpe Thu, 29 Feb 2024 23:49:11 +0100 + +yunohost (11.2.10.2) stable; urgency=low - docs: add autoupdate.version_regex to the doc ([#1781](http://github.com/YunoHost/yunohost/pull/1781)) - chores: update actions/checkout & peter-evans/create-pull-request to nodejs20 ([#1784](http://github.com/YunoHost/yunohost/pull/1784)) From 56d949bb9e3a1f9d9f817fcb9c83fee9f77b89ac Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Fri, 1 Mar 2024 01:48:42 +0100 Subject: [PATCH 46/64] remove "co-authored" lines --- maintenance/make_changelog.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/maintenance/make_changelog.sh b/maintenance/make_changelog.sh index 36e9f2539..9a5781c27 100644 --- a/maintenance/make_changelog.sh +++ b/maintenance/make_changelog.sh @@ -12,6 +12,7 @@ echo "" git log $LAST_RELEASE.. -n 10000 --first-parent --pretty=tformat:' - %b%s (%h)' \ | sed -E "s&Merge .*#([0-9]+).*\$& \([#\1]\(http://github.com/YunoHost/$REPO/pull/\1\)\)&g" \ +| sed -E "/Co-authored-by: .* <.*>/d" \ | grep -v "Translations update from Weblate" \ | tac From 30679c0c57c52a350ea83fa4e75e89dcbd010b23 Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Fri, 1 Mar 2024 01:08:42 +0000 Subject: [PATCH 47/64] [CI] Format code with Black --- src/utils/resources.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/resources.py b/src/utils/resources.py index 166be46f2..ac4e2de12 100644 --- a/src/utils/resources.py +++ b/src/utils/resources.py @@ -350,13 +350,13 @@ class SourcesResource(AppResource): It is also possible to define `autoupdate.upstream` to use a different Git repository instead of the code repository from the upstream section of the manifest. This can be useful when, for example, the app uses other assets such as plugin from a different repository. - If the upstream project provides non-standard tag or release names, you can fix this, with a regex with a matching group. + If the upstream project provides non-standard tag or release names, you can fix this, with a regex with a matching group. For example, if tags look like `release-v4.1`, put: ```toml autoupdate.version_regex = "^release-v(.*)$" ``` - + And the autoupdater will use the matched group (here: `4.1`) as the version. ##### Provision/Update From 105f4dc515cb00d7d8f809848b8b76dd992ac7dc Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Fri, 1 Mar 2024 02:10:08 +0000 Subject: [PATCH 48/64] [CI] Format code with Black --- src/utils/resources.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/resources.py b/src/utils/resources.py index 166be46f2..ac4e2de12 100644 --- a/src/utils/resources.py +++ b/src/utils/resources.py @@ -350,13 +350,13 @@ class SourcesResource(AppResource): It is also possible to define `autoupdate.upstream` to use a different Git repository instead of the code repository from the upstream section of the manifest. This can be useful when, for example, the app uses other assets such as plugin from a different repository. - If the upstream project provides non-standard tag or release names, you can fix this, with a regex with a matching group. + If the upstream project provides non-standard tag or release names, you can fix this, with a regex with a matching group. For example, if tags look like `release-v4.1`, put: ```toml autoupdate.version_regex = "^release-v(.*)$" ``` - + And the autoupdater will use the matched group (here: `4.1`) as the version. ##### Provision/Update From 8f6df354b80ce00a99c840146b725dcf9519fd12 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Fri, 1 Mar 2024 03:31:43 +0100 Subject: [PATCH 49/64] break line --- src/utils/resources.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/utils/resources.py b/src/utils/resources.py index ac4e2de12..5f16a38fa 100644 --- a/src/utils/resources.py +++ b/src/utils/resources.py @@ -351,6 +351,7 @@ class SourcesResource(AppResource): It is also possible to define `autoupdate.upstream` to use a different Git repository instead of the code repository from the upstream section of the manifest. This can be useful when, for example, the app uses other assets such as plugin from a different repository. If the upstream project provides non-standard tag or release names, you can fix this, with a regex with a matching group. + For example, if tags look like `release-v4.1`, put: ```toml From c512425bd99202c53b768a51cafa097806aa2861 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 2 Mar 2024 08:30:57 +0100 Subject: [PATCH 50/64] dog generation: fix markdown --- doc/generate_resource_doc.py | 2 +- doc/helper_doc_template.md | 8 ++-- src/utils/resources.py | 76 ++++++++++++++++++------------------ 3 files changed, 43 insertions(+), 43 deletions(-) diff --git a/doc/generate_resource_doc.py b/doc/generate_resource_doc.py index 4c60d7950..a673c066a 100644 --- a/doc/generate_resource_doc.py +++ b/doc/generate_resource_doc.py @@ -62,7 +62,7 @@ for c in ResourceClasses: for resource_id, doc in sorted(ResourceDocString.items()): - print("----------------") + print("---") print("") print(f"## {resource_id.replace('_', ' ').title()}") print("") diff --git a/doc/helper_doc_template.md b/doc/helper_doc_template.md index ac5d455fb..07d74d08c 100644 --- a/doc/helper_doc_template.md +++ b/doc/helper_doc_template.md @@ -12,7 +12,7 @@ Doc auto-generated by [this script](https://github.com/YunoHost/yunohost/blob/{{ {% for category, helpers in data.helpers %} ## {{ category.upper() }} {% for h in helpers %} -#### {{ h.name }} +### {{ h.name }} [details summary="{{ h.brief }}" class="helper-card-subtitle text-muted"] **Usage**: `{{ h.usage }}` @@ -48,12 +48,12 @@ Doc auto-generated by [this script](https://github.com/YunoHost/yunohost/blob/{{ {%- endif %} {%- if h.details %} -**Details**:
+**Details**: {{ h.details }} {%- endif %} - [Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/{{ current_commit }}/helpers/{{ category }}#L{{ h.line + 1 }}) [/details] ----------------- + +--- {% endfor %} {% endfor %} diff --git a/src/utils/resources.py b/src/utils/resources.py index 166be46f2..5e33c1495 100644 --- a/src/utils/resources.py +++ b/src/utils/resources.py @@ -268,7 +268,7 @@ class SourcesResource(AppResource): Various options are available to accomodate the behavior according to the asset structure - ##### Example + ### Example ```toml [resources.sources] @@ -307,7 +307,7 @@ class SourcesResource(AppResource): ``` - ##### Properties (for each source) + ### Properties (for each source) - `prefetch` : `true` (default) or `false`, wether or not to pre-fetch this asset during the provisioning phase of the resource. If several arch-dependent url are provided, YunoHost will only prefetch the one for the current system architecture. - `url` : the asset's URL @@ -324,7 +324,7 @@ class SourcesResource(AppResource): - `rename`: some string like `whatever_your_want`, to be used for convenience when `extract` is `false` and the default name of the file is not practical - `platform`: for example `linux/amd64` (defaults to `linux/$YNH_ARCH`) to be used in conjonction with `format = "docker"` to specify which architecture to extract for - ###### Regarding `autoupdate` + #### Regarding `autoupdate` Strictly speaking, this has nothing to do with the actual app install. `autoupdate` is expected to contain metadata for automatic maintenance / update of the app sources info in the manifest. It is meant to be a simpler replacement for "autoupdate" Github workflow mechanism. @@ -359,10 +359,10 @@ class SourcesResource(AppResource): And the autoupdater will use the matched group (here: `4.1`) as the version. - ##### Provision/Update + ### Provision/Update - For elements with `prefetch = true`, will download the asset (for the appropriate architecture) and store them in `/var/cache/yunohost/download/$app/$source_id`, to be later picked up by `ynh_setup_source`. (NB: this only happens during install and upgrade, not restore) - ##### Deprovision + ### Deprovision - Nothing (just cleanup the cache) """ @@ -481,7 +481,7 @@ class PermissionsResource(AppResource): The list of allowed user/groups may be initialized using the content of the `init_{perm}_permission` question from the manifest, hence `init_main_permission` replaces the `is_public` question and shall contain a group name (typically, `all_users` or `visitors`). - ##### Example + ### Example ```toml [resources.permissions] main.url = "/" @@ -492,7 +492,7 @@ class PermissionsResource(AppResource): admin.allowed = "admins" # Assuming the "admins" group exists (cf future developments ;)) ``` - ##### Properties (for each perm name) + ### Properties (for each perm name) - `url`: The relative URI corresponding to this permission. Typically `/` or `/something`. This property may be omitted for non-web permissions. - `show_tile`: (default: `true` if `url` is defined) Wether or not a tile should be displayed for that permission in the user portal - `allowed`: (default: nobody) The group initially allowed to access this perm, if `init_{perm}_permission` is not defined in the manifest questions. Note that the admin may tweak who is allowed/unallowed on that permission later on, this is only meant to **initialize** the permission. @@ -500,14 +500,14 @@ class PermissionsResource(AppResource): - `protected`: (default: `false`) Define if this permission is protected. If it is protected the administrator won't be able to add or remove the visitors group of this permission. Defaults to 'false'. - `additional_urls`: (default: none) List of additional URL for which access will be allowed/forbidden - ##### Provision/Update + ### Provision/Update - Delete any permissions that may exist and be related to this app yet is not declared anymore - Loop over the declared permissions and create them if needed or update them with the new values - ##### Deprovision + ### Deprovision - Delete all permission related to this app - ##### Legacy management + ### Legacy management - Legacy `is_public` setting will be deleted if it exists """ @@ -689,23 +689,23 @@ class SystemuserAppResource(AppResource): """ Provision a system user to be used by the app. The username is exactly equal to the app id - ##### Example + ### Example ```toml [resources.system_user] # (empty - defaults are usually okay) ``` - ##### Properties + ### Properties - `allow_ssh`: (default: False) Adds the user to the ssh.app group, allowing SSH connection via this user - `allow_sftp`: (default: False) Adds the user to the sftp.app group, allowing SFTP connection via this user - `allow_email`: (default: False) Enable authentication on the mail stack for the system user and send mail using `__APP__@__DOMAIN__`. A `mail_pwd` setting is automatically defined (similar to `db_pwd` for databases). You can then configure the app to use `__APP__` and `__MAIL_PWD__` as SMTP credentials (with host 127.0.0.1). You can also tweak the user-part of the domain-part of the email used by manually defining a custom setting `mail_user` or `mail_domain` - `home`: (default: `/var/www/__APP__`) Defines the home property for this user. NB: unfortunately you can't simply use `__INSTALL_DIR__` or `__DATA_DIR__` for now - ##### Provision/Update + ### Provision/Update - will create the system user if it doesn't exists yet - will add/remove the ssh/sftp.app groups - ##### Deprovision + ### Deprovision - deletes the user and group """ @@ -837,28 +837,28 @@ class InstalldirAppResource(AppResource): """ Creates a directory to be used by the app as the installation directory, typically where the app sources and assets are located. The corresponding path is stored in the settings as `install_dir` - ##### Example + ### Example ```toml [resources.install_dir] # (empty - defaults are usually okay) ``` - ##### Properties + ### Properties - `dir`: (default: `/var/www/__APP__`) The full path of the install dir - `owner`: (default: `__APP__:rwx`) The owner (and owner permissions) for the install dir - `group`: (default: `__APP__:rx`) The group (and group permissions) for the install dir - ##### Provision/Update + ### Provision/Update - during install, the folder will be deleted if it already exists (FIXME: is this what we want?) - if the dir path changed and a folder exists at the old location, the folder will be `mv`'ed to the new location - otherwise, creates the directory if it doesn't exists yet - (re-)apply permissions (only on the folder itself, not recursively) - save the value of `dir` as `install_dir` in the app's settings, which can be then used by the app scripts (`$install_dir`) and conf templates (`__INSTALL_DIR__`) - ##### Deprovision + ### Deprovision - recursively deletes the directory if it exists - ##### Legacy management + ### Legacy management - In the past, the setting was called `final_path`. The code will automatically rename it as `install_dir`. - As explained in the 'Provision/Update' section, the folder will also be moved if the location changed @@ -952,30 +952,30 @@ class DatadirAppResource(AppResource): """ Creates a directory to be used by the app as the data store directory, typically where the app multimedia or large assets added by users are located. The corresponding path is stored in the settings as `data_dir`. This resource behaves very similarly to install_dir. - ##### Example + ### Example ```toml [resources.data_dir] # (empty - defaults are usually okay) ``` - ##### Properties + ### Properties - `dir`: (default: `/home/yunohost.app/__APP__`) The full path of the data dir - `subdirs`: (default: empty list) A list of subdirs to initialize inside the data dir. For example, `['foo', 'bar']` - `owner`: (default: `__APP__:rwx`) The owner (and owner permissions) for the data dir - `group`: (default: `__APP__:rx`) The group (and group permissions) for the data dir - ##### Provision/Update + ### Provision/Update - if the dir path changed and a folder exists at the old location, the folder will be `mv`'ed to the new location - otherwise, creates the directory if it doesn't exists yet - create each subdir declared and which do not exist already - (re-)apply permissions (only on the folder itself and declared subdirs, not recursively) - save the value of `dir` as `data_dir` in the app's settings, which can be then used by the app scripts (`$data_dir`) and conf templates (`__DATA_DIR__`) - ##### Deprovision + ### Deprovision - (only if the purge option is chosen by the user) recursively deletes the directory if it exists - also delete the corresponding setting - ##### Legacy management + ### Legacy management - In the past, the setting may have been called `datadir`. The code will automatically rename it as `data_dir`. - As explained in the 'Provision/Update' section, the folder will also be moved if the location changed @@ -1067,7 +1067,7 @@ class AptDependenciesAppResource(AppResource): """ Create a virtual package in apt, depending on the list of specified packages that the app needs. The virtual packages is called `$app-ynh-deps` (with `_` being replaced by `-` in the app name, see `ynh_install_app_dependencies`) - ##### Example + ### Example ```toml [resources.apt] packages = ["nyancat", "lolcat", "sl"] @@ -1078,16 +1078,16 @@ class AptDependenciesAppResource(AppResource): extras.yarn.packages = ["yarn"] ``` - ##### Properties + ### Properties - `packages`: List of packages to be installed via `apt` - `packages_from_raw_bash`: A multi-line bash snippet (using triple quotes as open/close) which should echo additional packages to be installed. Meant to be used for packages to be conditionally installed depending on architecture, debian version, install questions, or other logic. - `extras`: A dict of (repo, key, packages) corresponding to "extra" repositories to fetch dependencies from - ##### Provision/Update + ### Provision/Update - The code literally calls the bash helpers `ynh_install_app_dependencies` and `ynh_install_extra_app_dependencies`, similar to what happens in v1. - Note that when `packages` contains some phpX.Y-foobar dependencies, this will automagically define a `phpversion` setting equal to `X.Y` which can therefore be used in app scripts ($phpversion) or templates (`__PHPVERSION__`) - ##### Deprovision + ### Deprovision - The code literally calls the bash helper `ynh_remove_app_dependencies` """ @@ -1175,7 +1175,7 @@ class PortsResource(AppResource): Note that because multiple ports can be booked, each properties is prefixed by the name of the port. `main` is a special name and will correspond to the setting `$port`, whereas for example `xmpp_client` will correspond to the setting `$port_xmpp_client`. - ##### Example + ### Example ```toml [resources.ports] # (empty should be fine for most apps... though you can customize stuff if absolutely needed) @@ -1187,21 +1187,21 @@ class PortsResource(AppResource): xmpp_client.exposed = "TCP" # here, we're telling that the port needs to be publicly exposed on TCP on the firewall ``` - ##### Properties (for every port name) + ### Properties (for every port name) - `default`: The prefered value for the port. If this port is already being used by another process right now, or is booked in another app's setting, the code will increment the value until it finds a free port and store that value as the setting. If no value is specified, a random value between 10000 and 60000 is used. - `exposed`: (default: `false`) Wether this port should be opened on the firewall and be publicly reachable. This should be kept to `false` for the majority of apps than only need a port for internal reverse-proxying! Possible values: `false`, `true`(=`Both`), `Both`, `TCP`, `UDP`. This will result in the port being opened on the firewall, and the diagnosis checking that a program answers on that port. - `fixed`: (default: `false`) Tells that the app absolutely needs the specific value provided in `default`, typically because it's needed for a specific protocol - ##### Provision/Update (for every port name) + ### Provision/Update (for every port name) - If not already booked, look for a free port, starting with the `default` value (or a random value between 10000 and 60000 if no `default` set) - If `exposed` is not `false`, open the port in the firewall accordingly - otherwise make sure it's closed. - The value of the port is stored in the `$port` setting for the `main` port, or `$port_NAME` for other `NAME`s - ##### Deprovision + ### Deprovision - Close the ports on the firewall if relevant - Deletes all the port settings - ##### Legacy management + ### Legacy management - In the past, some settings may have been named `NAME_port` instead of `port_NAME`, in which case the code will automatically rename the old setting. """ @@ -1318,25 +1318,25 @@ class DatabaseAppResource(AppResource): NB2: no automagic migration will happen in an suddenly change `type` from `mysql` to `postgresql` or viceversa in its life - ##### Example + ### Example ```toml [resources.database] type = "mysql" # or : "postgresql". Only these two values are supported ``` - ##### Properties + ### Properties - `type`: The database type, either `mysql` or `postgresql` - ##### Provision/Update + ### Provision/Update - (Re)set the `$db_name` and `$db_user` settings with the sanitized app name (replacing `-` and `.` with `_`) - If `$db_pwd` doesn't already exists, pick a random database password and store it in that setting - If the database doesn't exists yet, create the SQL user and DB using `ynh_mysql_create_db` or `ynh_psql_create_db`. - ##### Deprovision + ### Deprovision - Drop the DB using `ynh_mysql_remove_db` or `ynh_psql_remove_db` - Deletes the `db_name`, `db_user` and `db_pwd` settings - ##### Legacy management + ### Legacy management - In the past, the sql passwords may have been named `mysqlpwd` or `psqlpwd`, in which case it will automatically be renamed as `db_pwd` """ From 0f4c2ba64c19dea14dd0baf65345fc3140023c1d Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Thu, 7 Mar 2024 04:55:59 +0100 Subject: [PATCH 51/64] Change some app_corrupt_source words to be more explicit --- locales/en.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/locales/en.json b/locales/en.json index 1c4463714..41cbfec77 100644 --- a/locales/en.json +++ b/locales/en.json @@ -26,7 +26,7 @@ "app_change_url_success": "{app} URL is now {domain}{path}", "app_config_unable_to_apply": "Failed to apply config panel values.", "app_config_unable_to_read": "Failed to read config panel values.", - "app_corrupt_source": "YunoHost was able to download the asset '{source_id}' ({url}) for {app}, but the asset doesn't match the expected checksum. This could mean that some temporary network failure happened on your server, OR the asset was somehow changed by the upstream maintainer (or a malicious actor?) and YunoHost packagers need to investigate and update the app manifest to reflect this change.\n Expected sha256 checksum: {expected_sha256}\n Downloaded sha256 checksum: {computed_sha256}\n Downloaded file size: {size}", + "app_corrupt_source": "YunoHost was able to download the asset '{source_id}' ({url}) for {app}, but the asset doesn't match the expected checksum. This could mean that some temporary network failure happened on your server, OR the asset was somehow changed by the upstream maintainer (or a malicious actor?) and YunoHost packagers need to investigate and perhaps update the app manifest to take this change into account.\n Expected sha256 checksum: {expected_sha256}\n Downloaded sha256 checksum: {computed_sha256}\n Downloaded file size: {size}", "app_extraction_failed": "Could not extract the installation files", "app_failed_to_download_asset": "Failed to download asset '{source_id}' ({url}) for {app}: {out}", "app_failed_to_upgrade_but_continue": "App {failed_app} failed to upgrade, continue to next upgrades as requested. Run 'yunohost log show {operation_logger_name}' to see failure log", @@ -782,4 +782,4 @@ "yunohost_installing": "Installing YunoHost...", "yunohost_not_installed": "YunoHost is not correctly installed. Please run 'yunohost tools postinstall'", "yunohost_postinstall_end_tip": "The post-install completed! To finalize your setup, please consider:\n - diagnose potential issues through the 'Diagnosis' section of the webadmin (or 'yunohost diagnosis run' in command-line);\n - reading the 'Finalizing your setup' and 'Getting to know YunoHost' parts in the admin documentation: https://yunohost.org/admindoc." -} \ No newline at end of file +} From 47076eca4eb010d60635f3903fa59d1aa6c2e723 Mon Sep 17 00:00:00 2001 From: Christian Wehrli Date: Sat, 2 Mar 2024 08:15:31 +0000 Subject: [PATCH 52/64] Translated using Weblate (German) Currently translated at 100.0% (783 of 783 strings) Translation: YunoHost/core Translate-URL: https://translate.yunohost.org/projects/yunohost/core/de/ --- locales/de.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/locales/de.json b/locales/de.json index b8156f514..529391748 100644 --- a/locales/de.json +++ b/locales/de.json @@ -35,7 +35,7 @@ "custom_app_url_required": "Sie müssen eine URL angeben, um Ihre benutzerdefinierte App {app} zu aktualisieren", "domain_cert_gen_failed": "Zertifikat konnte nicht erzeugt werden", "domain_created": "Domäne erstellt", - "domain_creation_failed": "Konnte Domäne nicht erzeugen", + "domain_creation_failed": "Konnte Domäne {domain} nicht erzeugen: {error}", "domain_deleted": "Domain wurde gelöscht", "domain_deletion_failed": "Domain {domain}: {error} konnte nicht gelöscht werden", "domain_dyndns_already_subscribed": "Du hast dich schon für eine DynDNS-Domäne registriert", @@ -212,7 +212,7 @@ "group_deletion_failed": "Konnte Gruppe '{group}' nicht löschen: {error}", "dyndns_provider_unreachable": "DynDNS-Anbieter {provider} kann nicht erreicht werden: Entweder ist dein YunoHost nicht korrekt mit dem Internet verbunden oder der Dynette-Server ist ausgefallen.", "group_created": "Gruppe '{group}' angelegt", - "group_creation_failed": "Konnte Gruppe '{group}' nicht anlegen", + "group_creation_failed": "Konnte Gruppe '{group}' nicht anlegen: {error}", "group_unknown": "Die Gruppe '{group}' ist unbekannt", "group_updated": "Gruppe '{group}' erneuert", "group_update_failed": "Kann Gruppe '{group}' nicht aktualisieren: {error}", @@ -477,7 +477,7 @@ "regenconf_file_copy_failed": "Die neue Konfigurationsdatei '{new}' kann nicht nach '{conf}' kopiert werden", "regenconf_file_backed_up": "Die Konfigurationsdatei '{conf}' wurde unter '{backup}' gespeichert", "permission_require_account": "Berechtigung {permission} ist nur für Personen mit Konto sinnvoll und kann daher nicht für Gäste aktiviert werden.", - "permission_protected": "Die Berechtigung ist geschützt. Du kannst die Besuchergruppe nicht zu dieser Berechtigung hinzufügen oder daraus entfernen.", + "permission_protected": "Die Berechtigung {permission} ist geschützt. Du kannst die Besuchergruppe nicht zu dieser Berechtigung hinzufügen oder daraus entfernen.", "permission_updated": "Berechtigung '{permission}' aktualisiert", "permission_update_failed": "Die Berechtigung '{permission}' kann nicht aktualisiert werden : {error}", "permission_not_found": "Berechtigung '{permission}' nicht gefunden", From 7e6cbd292b00b83e27989d07eebd144d39405f48 Mon Sep 17 00:00:00 2001 From: xabirequejo Date: Sun, 3 Mar 2024 11:39:23 +0000 Subject: [PATCH 53/64] Translated using Weblate (Basque) Currently translated at 100.0% (783 of 783 strings) Translation: YunoHost/core Translate-URL: https://translate.yunohost.org/projects/yunohost/core/eu/ --- locales/eu.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/locales/eu.json b/locales/eu.json index 3625bf878..6614a57ea 100644 --- a/locales/eu.json +++ b/locales/eu.json @@ -228,7 +228,7 @@ "app_removed": "{app} desinstalatu da", "backup_cleaning_failed": "Ezinezkoa izan da behin-behineko babeskopien karpeta hustea", "certmanager_attempt_to_replace_valid_cert": "{domain} domeinurako egokia eta baliogarria den ziurtagiri bat ordezkatzen saiatzen ari zara! (Erabili --force mezu hau deuseztatu eta ziurtagiria ordezkatzeko)", - "diagnosis_backports_in_sources_list": "Dirudienez apt (pakete kudeatzailea) backports biltegia erabiltzeko konfiguratuta dago. Zertan ari zaren ez badakizu, ez zenuke backports biltegietako aplikaziorik instalatu beharko, ezegonkortasun eta gatazkak eragin ditzaketelako sistemarekin.", + "diagnosis_backports_in_sources_list": "Dirudienez apt (pakete kudeatzailea) backports gordailua erabiltzeko konfiguratuta dago. Zertan ari zaren ez badakizu, ez zenuke backports gurdailuetako aplikaziorik instalatu beharko, ezegonkortasun eta gatazkak eragin ditzaketelako sistemarekin.", "app_restore_failed": "Ezinezkoa izan da {app} lehengoratzea: {error}", "diagnosis_apps_allgood": "Instalatutako aplikazioak bat datoz oinarrizko pakete-jarraibideekin", "diagnosis_apps_bad_quality": "Aplikazio hau hondatuta dagoela dio YunoHosten aplikazioen katalogoak. Agian behin-behineko kontua da arduradunak arazoa konpondu bitartean. Oraingoz, ezin da aplikazioa eguneratu.", @@ -394,7 +394,7 @@ "hook_exec_not_terminated": "Aginduak ez du behar bezala amaitu: {path}", "log_corrupted_md_file": "Erregistroei lotutako YAML metadatu fitxategia kaltetuta dago: '{md_file}\nErrorea: {error}'", "log_letsencrypt_cert_renew": "Berriztu '{}' Let's Encrypt ziurtagiria", - "diagnosis_package_installed_from_sury_details": "Sury izena duen kanpoko biltegi batetik instalatu dira pakete batzuk, nahi gabe. YunoHosten taldeak hobekuntzak egin ditu pakete hauek kudeatzeko, baina litekeena da PHP7.3 aplikazioak Stretch sistema eragilean instalatu zituzten kasu batzuetan arazoak sortzea. Egoera hau konpontzeko, honako komando hau exekutatu beharko zenuke: {cmd_to_fix}", + "diagnosis_package_installed_from_sury_details": "Sury izena duen kanpoko gordailu batetik instalatu dira pakete batzuk, nahi gabe. YunoHosten taldeak hobekuntzak egin ditu pakete hauek kudeatzeko, baina litekeena da PHP7.3 aplikazioak Stretch sistema eragilean instalatu zituzten kasu batzuetan arazoak sortzea. Egoera hau konpontzeko, honako komando hau exekutatu beharko zenuke: {cmd_to_fix}", "log_help_to_get_log": "'{desc}' eragiketaren erregistroa ikusteko, exekutatu 'yunohost log show {name}'", "dpkg_is_broken": "Une honetan ezinezkoa da sistemaren dpkg/APT pakateen kudeatzaileek hondatutako itxura dutelako… Arazoa konpontzeko SSH bidez konektatzen saia zaitezke eta ondoren exekutatu 'sudo apt install --fix-broken' edota 'sudo dpkg --configure -a' edota 'sudo dpkg --audit'.", "domain_cannot_remove_main": "Ezin duzu '{domain}' ezabatu domeinu nagusia delako. Beste domeinu bat ezarri beharko duzu nagusi bezala 'yunohost domain main-domain -n ' erabiliz; honako hauek dituzu aukeran: {other_domains}", @@ -728,7 +728,7 @@ "migration_description_0026_new_admins_group": "Migratu 'administrari bat baino gehiago' sistema berrira", "password_confirmation_not_the_same": "Pasahitzak ez datoz bat", "password_too_long": "Aukeratu 127 karaktere baino laburragoa den pasahitz bat", - "diagnosis_using_stable_codename_details": "Ostatatzaileak zerbait oker ezarri duenean gertatu ohi da hau. Arriskutsua da, Debianen datorren bertsioa 'estable' (egonkorra) bilakatzen denean, apt-k sistemaren pakete guztiak bertsio-berritzen saiatuko da, beharrezko migrazio-prozedurarik burutu gabe. Debianen repositorioan apt iturria editatzen konpontzea da gomendioa, stable gakoa bullseye gakoarekin ordezkatuz. Ezarpen-fitxategia /etc/apt/sources.list izan beharko litzateke, edo /etc/apt/sources.list.d/ direktorioko fitxategiren bat.", + "diagnosis_using_stable_codename_details": "Ostatatzaileak zerbait oker ezarri duenean gertatu ohi da hau. Arriskutsua da, Debianen datorren bertsioa 'estable' (egonkorra) bilakatzen denean, apt-k sistemaren pakete guztiak bertsio-berritzen saiatuko da, beharrezko migrazio-prozedurarik burutu gabe. Debianen gordailuan apt iturria editatzen konpontzea da gomendioa, stable gakoa bullseye gakoarekin ordezkatuz. Ezarpen-fitxategia /etc/apt/sources.list izan beharko litzateke, edo /etc/apt/sources.list.d/ direktorioko fitxategiren bat.", "group_update_aliases": "'{group}' taldearen aliasak eguneratzen", "group_no_change": "Ez da ezer aldatu behar '{group}' talderako", "app_not_enough_ram": "Aplikazio honek {required} RAM behar ditu instalatu edo bertsio-berritzeko, baina {current} bakarrik daude erabilgarri une honetan.", From 38d0f29fc60e61d5ceceee068ab39ec642109b3b Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Thu, 7 Mar 2024 03:45:40 +0000 Subject: [PATCH 54/64] Translated using Weblate (French) Currently translated at 100.0% (783 of 783 strings) Translation: YunoHost/core Translate-URL: https://translate.yunohost.org/projects/yunohost/core/fr/ --- locales/fr.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/locales/fr.json b/locales/fr.json index 6a9d3c74b..0650d3737 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -407,12 +407,12 @@ "diagnosis_ram_low": "Le système n'a plus de {available} ({available_percent}%) RAM sur {total}. Faites attention.", "diagnosis_swap_none": "Le système n'a aucun espace de swap. Vous devriez envisager d'ajouter au moins {recommended} de swap pour éviter les situations où le système manque de mémoire.", "diagnosis_swap_notsomuch": "Le système ne dispose que de {total} de swap. Vous devez envisager d'avoir au moins {recommended} pour éviter les situations où le système manque de mémoire.", - "diagnosis_swap_ok": "Le système dispose de {total} de swap !", + "diagnosis_swap_ok": "Le système dispose de {total} de swap !", "diagnosis_regenconf_manually_modified": "Le fichier de configuration {file} semble avoir été modifié manuellement.", "diagnosis_regenconf_manually_modified_details": "C'est probablement OK si vous savez ce que vous faites ! YunoHost cessera de mettre à jour ce fichier automatiquement ... Mais attention, les mises à jour de YunoHost pourraient contenir d'importantes modifications recommandées. Si vous le souhaitez, vous pouvez inspecter les différences avec yunohost tools regen-conf {category} --dry-run --with-diff et forcer la réinitialisation à la configuration recommandée avec yunohost tools regen-conf {category} --force", "apps_catalog_init_success": "Système de catalogue d'applications initialisé !", "apps_catalog_failed_to_download": "Impossible de télécharger le catalogue des applications {apps_catalog} : {error}", - "diagnosis_mail_outgoing_port_25_blocked": "Le port sortant 25 semble être bloqué. Vous devriez essayer de le débloquer dans le panneau de configuration de votre fournisseur de services Internet (ou hébergeur). En attendant, le serveur ne pourra pas envoyer des emails à d'autres serveurs.", + "diagnosis_mail_outgoing_port_25_blocked": "Le serveur SMTP n'est pas capable d'envoyer de courriel à d'autres serveurs car le port sortant 25 semble être bloqué en IPv{ipversion}.", "domain_cannot_remove_main_add_new_one": "Vous ne pouvez pas supprimer '{domain}' car il s'agit du domaine principal et de votre seul domaine. Vous devez d'abord ajouter un autre domaine à l'aide de 'yunohost domain add ', puis définir comme domaine principal à l'aide de 'yunohost domain main-domain -n ' et vous pouvez ensuite supprimer le domaine '{domain}' à l'aide de 'yunohost domain remove {domain}'.'", "diagnosis_security_vulnerable_to_meltdown_details": "Pour résoudre ce problème, vous devez mettre à jour votre système et le redémarrer pour charger le nouveau noyau linux (ou contacter votre fournisseur de serveur si cela ne fonctionne pas). Voir https://meltdownattack.com/ pour plus d'informations.", "diagnosis_description_basesystem": "Système de base", @@ -547,7 +547,7 @@ "migration_ldap_rollback_success": "Système rétabli dans son état initial.", "permission_cant_add_to_all_users": "L'autorisation {permission} ne peut pas être ajoutée à tous les utilisateurs.", "migration_ldap_migration_failed_trying_to_rollback": "Impossible de migrer... tentative de restauration du système.", - "migration_ldap_can_not_backup_before_migration": "La sauvegarde du système n'a pas pu être terminée avant l'échec de la migration. Erreur : {error }", + "migration_ldap_can_not_backup_before_migration": "La sauvegarde du système n'a pas pu être terminée avant l'échec de la migration. Erreur : {error}", "migration_ldap_backup_before_migration": "Création d'une sauvegarde de la base de données LDAP et des paramètres des applications avant la migration proprement dite.", "diagnosis_sshd_config_inconsistent_details": "Veuillez exécuter yunohost settings set security.ssh.ssh_port -v VOTRE_PORT_SSH pour définir le port SSH, et vérifiez yunohost tools regen-conf ssh --dry-run --with-diff et yunohost tools regen-conf ssh --force pour réinitialiser votre configuration aux recommandations YunoHost.", "diagnosis_sshd_config_inconsistent": "Il semble que le port SSH ait été modifié manuellement dans /etc/ssh/sshd_config. Depuis YunoHost 4.2, un nouveau paramètre global 'security.ssh.ssh_port' est disponible pour éviter de modifier manuellement la configuration.", @@ -764,11 +764,11 @@ "group_user_remove": "L'utilisateur '{user}' sera retiré du groupe '{group}'", "group_mailalias_remove": "L'alias de courrier électronique '{mail}' sera supprimé du groupe '{group}'", "ask_dyndns_recovery_password_explain": "Veuillez choisir un mot de passe de récupération pour votre domaine DynDNS, au cas où vous devriez le réinitialiser plus tard.", - "ask_dyndns_recovery_password": "Mot de passe de récupération DynDNS", + "ask_dyndns_recovery_password": "Mot de passe de récupération pour DynDNS", "ask_dyndns_recovery_password_explain_during_unsubscribe": "Veuillez saisir le mot de passe de récupération pour ce domaine DynDNS.", "dyndns_no_recovery_password": "Aucun mot de passe de récupération n'a été spécifié ! Si vous perdez le contrôle de ce domaine, vous devrez contacter un administrateur de l'équipe YunoHost !", - "dyndns_subscribed": "Domaine DynDNS souscrit/enregistré", - "dyndns_subscribe_failed": "Impossible de souscrire/de s'enregistrer au domaine DynDNS : {error}", + "dyndns_subscribed": "Domaine DynDNS enregistré", + "dyndns_subscribe_failed": "Le nom de domaine DynDNS n'a pas pu être enregistré : {error}", "dyndns_unsubscribe_failed": "Impossible de se désinscrire du domaine DynDNS : {error}", "dyndns_unsubscribed": "Désinscription du domaine DynDNS", "dyndns_unsubscribe_denied": "Échec de la désinscription du domaine : informations d'identification non valides", From 5914317aeb6c9dc2748579313b8028205e12e5e1 Mon Sep 17 00:00:00 2001 From: yolateng0 Date: Thu, 7 Mar 2024 03:45:10 +0000 Subject: [PATCH 55/64] Translated using Weblate (French) Currently translated at 100.0% (783 of 783 strings) Translation: YunoHost/core Translate-URL: https://translate.yunohost.org/projects/yunohost/core/fr/ --- locales/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/fr.json b/locales/fr.json index 0650d3737..7ecf2ba1c 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -758,7 +758,7 @@ "apps_failed_to_upgrade": "Ces applications n'ont pas pu être mises à jour : {apps}", "apps_failed_to_upgrade_line": "\n * {app_id} (pour voir le journal correspondant, faites un 'yunohost log show {operation_logger_name}')", "app_failed_to_download_asset": "Échec du téléchargement de la ressource '{source_id}' ({url}) pour {app} : {out}", - "app_corrupt_source": "YunoHost a pu télécharger la ressource '{source_id}' ({url}) pour {app}, malheureusement celle-ci ne correspond pas à la somme de contrôle attendue. Cela peut signifier qu'une défaillance temporaire du réseau s'est produite sur votre serveur, OU que la ressource a été modifiée par le mainteneur de l'application en amont (ou un acteur malveillant ?) et que les responsables du paquet de cette application pour YunoHost doivent investiguer et mettre à jour le manifeste de l'application pour refléter ce changement.\n Somme de contrôle sha256 attendue : {expected_sha256}\n Somme de contrôle sha256 téléchargée : {computed_sha256}\n Taille du fichier téléchargé : {size}", + "app_corrupt_source": "YunoHost a pu télécharger la ressource '{source_id}' ({url}) pour {app}, malheureusement celle-ci ne correspond pas à la somme des contrôles attendue. Cela peut signifier qu'une défaillance temporaire du réseau s'est produite sur votre serveur, OU que la ressource a été modifiée par le mainteneur de l'application en amont (ou un acteur malveillant ?) et que les responsables du paquet de cette application pour YunoHost doivent investiguer et mettre à jour le manifeste de l'application pour indiquer ce changement.\n Somme de contrôle sha256 attendue : {expected_sha256}\n Somme de contrôle sha256 téléchargée : {computed_sha256}\n Taille du fichier téléchargé : {taille}", "group_mailalias_add": "L'alias de courrier électronique '{mail}' sera ajouté au groupe '{group}'", "group_user_add": "L'utilisateur '{user}' sera ajouté au groupe '{group}'", "group_user_remove": "L'utilisateur '{user}' sera retiré du groupe '{group}'", From 7630b154a3fa15da7f7280f094e75c99d9bbde01 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Thu, 7 Mar 2024 03:50:47 +0000 Subject: [PATCH 56/64] Translated using Weblate (French) Currently translated at 100.0% (783 of 783 strings) Translation: YunoHost/core Translate-URL: https://translate.yunohost.org/projects/yunohost/core/fr/ --- locales/fr.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/locales/fr.json b/locales/fr.json index 7ecf2ba1c..ce2eaeef3 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -758,7 +758,7 @@ "apps_failed_to_upgrade": "Ces applications n'ont pas pu être mises à jour : {apps}", "apps_failed_to_upgrade_line": "\n * {app_id} (pour voir le journal correspondant, faites un 'yunohost log show {operation_logger_name}')", "app_failed_to_download_asset": "Échec du téléchargement de la ressource '{source_id}' ({url}) pour {app} : {out}", - "app_corrupt_source": "YunoHost a pu télécharger la ressource '{source_id}' ({url}) pour {app}, malheureusement celle-ci ne correspond pas à la somme des contrôles attendue. Cela peut signifier qu'une défaillance temporaire du réseau s'est produite sur votre serveur, OU que la ressource a été modifiée par le mainteneur de l'application en amont (ou un acteur malveillant ?) et que les responsables du paquet de cette application pour YunoHost doivent investiguer et mettre à jour le manifeste de l'application pour indiquer ce changement.\n Somme de contrôle sha256 attendue : {expected_sha256}\n Somme de contrôle sha256 téléchargée : {computed_sha256}\n Taille du fichier téléchargé : {taille}", + "app_corrupt_source": "YunoHost a pu télécharger la ressource '{source_id}' ({url}) pour {app}, malheureusement celle-ci ne correspond pas à la somme des contrôles attendue. Cela peut signifier qu'une défaillance temporaire du réseau s'est produite sur votre serveur, OU que la ressource a été modifiée par le mainteneur de l'application en amont (ou un acteur malveillant ?) et que les responsables du paquet de cette application pour YunoHost doivent investiguer et mettre à jour le manifeste de l'application pour indiquer ce changement.\n Somme de contrôle sha256 attendue : {expected_sha256}\n Somme de contrôle sha256 téléchargée : {computed_sha256}\n Taille du fichier téléchargé : {size}", "group_mailalias_add": "L'alias de courrier électronique '{mail}' sera ajouté au groupe '{group}'", "group_user_add": "L'utilisateur '{user}' sera ajouté au groupe '{group}'", "group_user_remove": "L'utilisateur '{user}' sera retiré du groupe '{group}'", @@ -769,10 +769,10 @@ "dyndns_no_recovery_password": "Aucun mot de passe de récupération n'a été spécifié ! Si vous perdez le contrôle de ce domaine, vous devrez contacter un administrateur de l'équipe YunoHost !", "dyndns_subscribed": "Domaine DynDNS enregistré", "dyndns_subscribe_failed": "Le nom de domaine DynDNS n'a pas pu être enregistré : {error}", - "dyndns_unsubscribe_failed": "Impossible de se désinscrire du domaine DynDNS : {error}", - "dyndns_unsubscribed": "Désinscription du domaine DynDNS", - "dyndns_unsubscribe_denied": "Échec de la désinscription du domaine : informations d'identification non valides", - "dyndns_unsubscribe_already_unsubscribed": "Le domaine est déjà retiré", + "dyndns_unsubscribe_failed": "Le nom de domaine DynDNS n'a pas pu être résilié : {error}", + "dyndns_unsubscribed": "Domaine DynDNS résilié", + "dyndns_unsubscribe_denied": "Échec de la résiliation du domaine : informations d'identification non valides", + "dyndns_unsubscribe_already_unsubscribed": "Le domaine a déjà été résilié", "dyndns_set_recovery_password_denied": "Échec de la mise en place du mot de passe de récupération : mot de passe non valide", "dyndns_set_recovery_password_unknown_domain": "Échec de la définition du mot de passe de récupération : le domaine n'est pas enregistré", "dyndns_set_recovery_password_invalid_password": "Échec de la mise en place du mot de passe de récupération : le mot de passe n'est pas assez fort/solide", From b3f12d89376f49b7aaa630b33e7acd84914dfbb9 Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Thu, 7 Mar 2024 07:59:31 +0000 Subject: [PATCH 57/64] [CI] Reformat / remove stale translated strings --- locales/ar.json | 2 +- locales/ca.json | 2 +- locales/de.json | 2 +- locales/en.json | 2 +- locales/es.json | 2 +- locales/eu.json | 2 +- locales/fr.json | 16 ++++++++-------- locales/gl.json | 2 +- locales/it.json | 2 +- locales/ko.json | 2 +- locales/sk.json | 2 +- 11 files changed, 18 insertions(+), 18 deletions(-) diff --git a/locales/ar.json b/locales/ar.json index 5a81b8b10..ad96e8e57 100644 --- a/locales/ar.json +++ b/locales/ar.json @@ -259,4 +259,4 @@ "backup_archive_name_unknown": "أرشيف نسخ احتياطي محلي غير معروف باسم '{name}'", "custom_app_url_required": "يجب عليك تقديم عنوان URL لتحديث تطبيقك المخصص {app}", "backup_copying_to_organize_the_archive": "نسخ {size} ميغا بايت لتنظيم الأرشيف" -} +} \ No newline at end of file diff --git a/locales/ca.json b/locales/ca.json index cf850b549..2c4a624d6 100644 --- a/locales/ca.json +++ b/locales/ca.json @@ -782,4 +782,4 @@ "user_import_partial_failed": "L'operació d'importació dels usuaris ha fallat parcialment", "domain_dns_push_record_failed": "No s'ha pogut {action} el registre {type}/{name}: {error}", "registrar_infos": "Informació del registrador" -} +} \ No newline at end of file diff --git a/locales/de.json b/locales/de.json index 529391748..8cd3f0239 100644 --- a/locales/de.json +++ b/locales/de.json @@ -782,4 +782,4 @@ "dyndns_set_recovery_password_failed": "Konnte Wiederherstellungspasswort nicht einstellen: {error}", "dyndns_set_recovery_password_success": "Wiederherstellungspasswort eingestellt!", "global_settings_setting_ssh_port_help": "Ein Port unter 1024 wird bevorzugt, um Kaperversuche durch Nicht-Administratordienste auf dem Remote-Computer zu verhindern. Sie sollten auch vermeiden, einen bereits verwendeten Port zu verwenden, z. B. 80 oder 443." -} +} \ No newline at end of file diff --git a/locales/en.json b/locales/en.json index 41cbfec77..8b29d3322 100644 --- a/locales/en.json +++ b/locales/en.json @@ -782,4 +782,4 @@ "yunohost_installing": "Installing YunoHost...", "yunohost_not_installed": "YunoHost is not correctly installed. Please run 'yunohost tools postinstall'", "yunohost_postinstall_end_tip": "The post-install completed! To finalize your setup, please consider:\n - diagnose potential issues through the 'Diagnosis' section of the webadmin (or 'yunohost diagnosis run' in command-line);\n - reading the 'Finalizing your setup' and 'Getting to know YunoHost' parts in the admin documentation: https://yunohost.org/admindoc." -} +} \ No newline at end of file diff --git a/locales/es.json b/locales/es.json index d4d18ef56..9364e8e56 100644 --- a/locales/es.json +++ b/locales/es.json @@ -782,4 +782,4 @@ "dyndns_set_recovery_password_success": "¡Password de recuperación establecida!", "global_settings_setting_dns_exposure_help": "NB: Esto afecta únicamente a la configuración recomentada de DNS y en las pruebas de diagnóstico. No afecta a la configuración del sistema.", "global_settings_setting_ssh_port_help": "Un puerto menor a 1024 es preferible para evitar intentos de usurpación por servicios no administrativos en la máquina remota. También debe de evitar usar un puerto ya en uso, como el 80 o 443." -} +} \ No newline at end of file diff --git a/locales/eu.json b/locales/eu.json index 6614a57ea..d38c48586 100644 --- a/locales/eu.json +++ b/locales/eu.json @@ -782,4 +782,4 @@ "dyndns_set_recovery_password_failed": "Berreskuratze-pasahitza ezartzeak huts egin du: {error}", "dyndns_set_recovery_password_success": "Berreskuratze-pasahitza ezarri da!", "global_settings_setting_ssh_port_help": "1024 baino ataka txikiago bat izan beharko litzateke, zerbitzu ez-administratzaileek urruneko makinan usurpazio-saiorik egin ez dezaten. Lehendik ere erabiltzen ari diren atakak ere ekidin beharko zenituzke, 80 edo 443 kasu." -} +} \ No newline at end of file diff --git a/locales/fr.json b/locales/fr.json index ce2eaeef3..5cd77b774 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -407,12 +407,12 @@ "diagnosis_ram_low": "Le système n'a plus de {available} ({available_percent}%) RAM sur {total}. Faites attention.", "diagnosis_swap_none": "Le système n'a aucun espace de swap. Vous devriez envisager d'ajouter au moins {recommended} de swap pour éviter les situations où le système manque de mémoire.", "diagnosis_swap_notsomuch": "Le système ne dispose que de {total} de swap. Vous devez envisager d'avoir au moins {recommended} pour éviter les situations où le système manque de mémoire.", - "diagnosis_swap_ok": "Le système dispose de {total} de swap !", + "diagnosis_swap_ok": "Le système dispose de {total} de swap !", "diagnosis_regenconf_manually_modified": "Le fichier de configuration {file} semble avoir été modifié manuellement.", "diagnosis_regenconf_manually_modified_details": "C'est probablement OK si vous savez ce que vous faites ! YunoHost cessera de mettre à jour ce fichier automatiquement ... Mais attention, les mises à jour de YunoHost pourraient contenir d'importantes modifications recommandées. Si vous le souhaitez, vous pouvez inspecter les différences avec yunohost tools regen-conf {category} --dry-run --with-diff et forcer la réinitialisation à la configuration recommandée avec yunohost tools regen-conf {category} --force", "apps_catalog_init_success": "Système de catalogue d'applications initialisé !", "apps_catalog_failed_to_download": "Impossible de télécharger le catalogue des applications {apps_catalog} : {error}", - "diagnosis_mail_outgoing_port_25_blocked": "Le serveur SMTP n'est pas capable d'envoyer de courriel à d'autres serveurs car le port sortant 25 semble être bloqué en IPv{ipversion}.", + "diagnosis_mail_outgoing_port_25_blocked": "Le serveur SMTP n'est pas capable d'envoyer de email à d'autres serveurs car le port sortant 25 semble être bloqué en IPv{ipversion}.", "domain_cannot_remove_main_add_new_one": "Vous ne pouvez pas supprimer '{domain}' car il s'agit du domaine principal et de votre seul domaine. Vous devez d'abord ajouter un autre domaine à l'aide de 'yunohost domain add ', puis définir comme domaine principal à l'aide de 'yunohost domain main-domain -n ' et vous pouvez ensuite supprimer le domaine '{domain}' à l'aide de 'yunohost domain remove {domain}'.'", "diagnosis_security_vulnerable_to_meltdown_details": "Pour résoudre ce problème, vous devez mettre à jour votre système et le redémarrer pour charger le nouveau noyau linux (ou contacter votre fournisseur de serveur si cela ne fonctionne pas). Voir https://meltdownattack.com/ pour plus d'informations.", "diagnosis_description_basesystem": "Système de base", @@ -547,7 +547,7 @@ "migration_ldap_rollback_success": "Système rétabli dans son état initial.", "permission_cant_add_to_all_users": "L'autorisation {permission} ne peut pas être ajoutée à tous les utilisateurs.", "migration_ldap_migration_failed_trying_to_rollback": "Impossible de migrer... tentative de restauration du système.", - "migration_ldap_can_not_backup_before_migration": "La sauvegarde du système n'a pas pu être terminée avant l'échec de la migration. Erreur : {error}", + "migration_ldap_can_not_backup_before_migration": "La sauvegarde du système n'a pas pu être terminée avant l'échec de la migration. Erreur : {error}", "migration_ldap_backup_before_migration": "Création d'une sauvegarde de la base de données LDAP et des paramètres des applications avant la migration proprement dite.", "diagnosis_sshd_config_inconsistent_details": "Veuillez exécuter yunohost settings set security.ssh.ssh_port -v VOTRE_PORT_SSH pour définir le port SSH, et vérifiez yunohost tools regen-conf ssh --dry-run --with-diff et yunohost tools regen-conf ssh --force pour réinitialiser votre configuration aux recommandations YunoHost.", "diagnosis_sshd_config_inconsistent": "Il semble que le port SSH ait été modifié manuellement dans /etc/ssh/sshd_config. Depuis YunoHost 4.2, un nouveau paramètre global 'security.ssh.ssh_port' est disponible pour éviter de modifier manuellement la configuration.", @@ -758,7 +758,7 @@ "apps_failed_to_upgrade": "Ces applications n'ont pas pu être mises à jour : {apps}", "apps_failed_to_upgrade_line": "\n * {app_id} (pour voir le journal correspondant, faites un 'yunohost log show {operation_logger_name}')", "app_failed_to_download_asset": "Échec du téléchargement de la ressource '{source_id}' ({url}) pour {app} : {out}", - "app_corrupt_source": "YunoHost a pu télécharger la ressource '{source_id}' ({url}) pour {app}, malheureusement celle-ci ne correspond pas à la somme des contrôles attendue. Cela peut signifier qu'une défaillance temporaire du réseau s'est produite sur votre serveur, OU que la ressource a été modifiée par le mainteneur de l'application en amont (ou un acteur malveillant ?) et que les responsables du paquet de cette application pour YunoHost doivent investiguer et mettre à jour le manifeste de l'application pour indiquer ce changement.\n Somme de contrôle sha256 attendue : {expected_sha256}\n Somme de contrôle sha256 téléchargée : {computed_sha256}\n Taille du fichier téléchargé : {size}", + "app_corrupt_source": "YunoHost a pu télécharger la ressource '{source_id}' ({url}) pour {app}, malheureusement celle-ci ne correspond pas à la somme des contrôles attendue. Cela peut signifier qu'une défaillance temporaire du réseau s'est produite sur votre serveur, OU que la ressource a été modifiée par le mainteneur de l'application en amont (ou un acteur malveillant ?) et que les responsables du paquet de cette application pour YunoHost doivent investiguer et mettre à jour le manifeste de l'application pour indiquer ce changement.\n Somme de contrôle sha256 attendue : {expected_sha256}\n Somme de contrôle sha256 téléchargée : {computed_sha256}\n Taille du fichier téléchargé : {size}", "group_mailalias_add": "L'alias de courrier électronique '{mail}' sera ajouté au groupe '{group}'", "group_user_add": "L'utilisateur '{user}' sera ajouté au groupe '{group}'", "group_user_remove": "L'utilisateur '{user}' sera retiré du groupe '{group}'", @@ -768,10 +768,10 @@ "ask_dyndns_recovery_password_explain_during_unsubscribe": "Veuillez saisir le mot de passe de récupération pour ce domaine DynDNS.", "dyndns_no_recovery_password": "Aucun mot de passe de récupération n'a été spécifié ! Si vous perdez le contrôle de ce domaine, vous devrez contacter un administrateur de l'équipe YunoHost !", "dyndns_subscribed": "Domaine DynDNS enregistré", - "dyndns_subscribe_failed": "Le nom de domaine DynDNS n'a pas pu être enregistré : {error}", - "dyndns_unsubscribe_failed": "Le nom de domaine DynDNS n'a pas pu être résilié : {error}", + "dyndns_subscribe_failed": "Le nom de domaine DynDNS n'a pas pu être enregistré : {error}", + "dyndns_unsubscribe_failed": "Le nom de domaine DynDNS n'a pas pu être résilié : {error}", "dyndns_unsubscribed": "Domaine DynDNS résilié", - "dyndns_unsubscribe_denied": "Échec de la résiliation du domaine : informations d'identification non valides", + "dyndns_unsubscribe_denied": "Échec de la résiliation du domaine : informations d'identification non valides", "dyndns_unsubscribe_already_unsubscribed": "Le domaine a déjà été résilié", "dyndns_set_recovery_password_denied": "Échec de la mise en place du mot de passe de récupération : mot de passe non valide", "dyndns_set_recovery_password_unknown_domain": "Échec de la définition du mot de passe de récupération : le domaine n'est pas enregistré", @@ -782,4 +782,4 @@ "dyndns_too_many_requests": "Le service dyndns de YunoHost a reçu trop de requêtes/demandes de votre part, attendez environ 1 heure avant de réessayer.", "ask_dyndns_recovery_password_explain_unavailable": "Ce domaine DynDNS est déjà enregistré. Si vous êtes la personne qui a enregistré ce domaine lors de sa création, vous pouvez entrer le mot de passe de récupération pour récupérer ce domaine.", "global_settings_setting_ssh_port_help": "Il est préférable d'utiliser un port inférieur à 1024 pour éviter les tentatives d'usurpation par des services non administrateurs sur la machine distante. Vous devez également éviter d'utiliser un port déjà utilisé tel que le 80 ou le 443." -} +} \ No newline at end of file diff --git a/locales/gl.json b/locales/gl.json index 6f81e9c28..592e1c0bc 100644 --- a/locales/gl.json +++ b/locales/gl.json @@ -782,4 +782,4 @@ "ask_dyndns_recovery_password_explain_unavailable": "Este dominio DynDNS xa está rexistrado. Se es a persoa que o rexistrou orixinalmente, podes escribir o código de recuperación para reclamar o dominio.", "dyndns_too_many_requests": "O servicio dyndns de YunoHost recibeu demasiadas peticións do teu sistema, agarda 1 hora e volve intentalo.", "global_settings_setting_ssh_port_help": "É recomendable un porto inferior a 1024 para evitar os intentos de apropiación por parte de servizos de non-administración na máquina remota. Tamén deberías evitar elexir un porto que xa está sendo utilizado, como 80 ou 443." -} +} \ No newline at end of file diff --git a/locales/it.json b/locales/it.json index c8264bb57..63d8aab5b 100644 --- a/locales/it.json +++ b/locales/it.json @@ -668,4 +668,4 @@ "certmanager_cert_renew_failed": "Il rinnovo del certificato Let’s Encrypt è fallito per {domains}", "ask_dyndns_recovery_password_explain": "Scegli una password di recupero per il tuo dominio DynDNS, in caso dovessi ripristinarlo successivamente.", "confirm_app_insufficient_ram": "PERICOLO! Quest’app richiede {required} di RAM per essere installata/aggiornata, ma solo {current} sono disponibili ora. Nonostante l’app possa funzionare, la sua installazione o aggiornamento richiedono una grande quantità di RAM, perciò il tuo server potrebbe bloccarsi o fallire miseramente. Se sei dispostə a prenderti questo rischio comunque, digita ‘{answers}’" -} +} \ No newline at end of file diff --git a/locales/ko.json b/locales/ko.json index 0967ef424..9e26dfeeb 100644 --- a/locales/ko.json +++ b/locales/ko.json @@ -1 +1 @@ -{} +{} \ No newline at end of file diff --git a/locales/sk.json b/locales/sk.json index b0fcb0b78..3da68f499 100644 --- a/locales/sk.json +++ b/locales/sk.json @@ -266,4 +266,4 @@ "log_letsencrypt_cert_renew": "Obnoviť '{}' certifikát Let's Encrypt", "domain_config_cert_summary_selfsigned": "UPOZORNENIE: Aktuálny certifikát je vlastnoručne podpísaný. Prehliadače budú návštevníkom zobrazovať strašidelné varovanie!", "global_settings_setting_ssowat_panel_overlay_enabled": "Povoliť malú štvorcovú ikonu portálu „YunoHost“ na aplikáciach" -} +} \ No newline at end of file From 0ab27873a33317d7f7eb30c0e1e8240f612f18af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20M?= Date: Thu, 7 Mar 2024 07:56:02 +0000 Subject: [PATCH 58/64] Translated using Weblate (Galician) Currently translated at 100.0% (783 of 783 strings) Translation: YunoHost/core Translate-URL: https://translate.yunohost.org/projects/yunohost/core/gl/ --- locales/gl.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/gl.json b/locales/gl.json index 592e1c0bc..1e364b2e3 100644 --- a/locales/gl.json +++ b/locales/gl.json @@ -758,7 +758,7 @@ "log_resource_snippet": "Aprovisionamento/desaprovisionamento/actualización dun recurso", "app_resource_failed": "Fallou o aprovisionamento, desaprovisionamento ou actualización de recursos para {app}: {error}", "app_failed_to_download_asset": "Fallou a descarga do recurso '{source_id}' ({url}) para {app}: {out}", - "app_corrupt_source": "YunoHost foi quen de descargar o recurso '{source_id}' ({url}) para {app}, pero a suma de comprobación para o recurso non concorda. Pode significar que houbo un fallo temporal na conexión do servidor á rede, OU que o recurso sufreu, dalgún xeito, cambios desde que os desenvolvedores orixinais (ou unha terceira parte maliciosa?), o equipo de YunoHost ten que investigar e actualizar o manifesto da app para mostrar este cambio.\n Suma sha256 agardada: {expected_sha256} \n Suma sha256 do descargado: {computed_sha256}\n Tamaño do ficheiro: {size}", + "app_corrupt_source": "YunoHost foi quen de descargar o recurso '{source_id}' ({url}) para {app}, pero a suma de comprobación para o recurso non concorda. Pode significar que houbo un fallo temporal na conexión do servidor á rede, OU que o recurso sufreu, dalgún xeito, cambios desde que os desenvolvedores orixinais (ou unha terceira parte maliciosa?), o equipo de YunoHost ten que investigar e podería ter que actualizar o manifesto da app para ter este cambio en conta.\n Suma sha256 agardada: {expected_sha256} \n Suma sha256 do descargado: {computed_sha256}\n Tamaño do ficheiro: {size}", "group_mailalias_add": "Vaise engadir o alias de correo '{mail}' ao grupo '{group}'", "group_mailalias_remove": "Vaise quitar o alias de email '{mail}' do grupo '{group}'", "group_user_add": "Vaise engadir a '{user}' ao grupo '{group}'", From c9d570e6a17b57678a1e2fef39370082df8b19e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Tille?= Date: Tue, 6 Feb 2024 22:08:10 +0100 Subject: [PATCH 59/64] Add generales var in config panel like domain, path, etc --- src/app.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/app.py b/src/app.py index 931e8c97b..8b6e38d11 100644 --- a/src/app.py +++ b/src/app.py @@ -1995,6 +1995,8 @@ ynh_app_config_run $1 "YNH_APP_PACKAGING_FORMAT": str(manifest["packaging_format"]), } ) + app_script_env = _make_environment_for_app_script(app) + env.update(app_script_env) ret, values = hook_exec(config_script, args=[action], env=env) if ret != 0: From 006318effae01b959753637ff9833f7b67ad316f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Tille?= Date: Wed, 14 Feb 2024 21:08:09 +0100 Subject: [PATCH 60/64] Avoid to override new settings --- src/app.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/app.py b/src/app.py index 8b6e38d11..018c339e7 100644 --- a/src/app.py +++ b/src/app.py @@ -1996,7 +1996,10 @@ ynh_app_config_run $1 } ) app_script_env = _make_environment_for_app_script(app) - env.update(app_script_env) + # Note that we only need to update settings wich are not already set + # The settings from config panel should be keep as it is + app_script_env.update(env) + env = app_script_env ret, values = hook_exec(config_script, args=[action], env=env) if ret != 0: From 0c8706366e5d52ce383d35515349ea3c23ef57f0 Mon Sep 17 00:00:00 2001 From: xabirequejo Date: Thu, 7 Mar 2024 16:17:32 +0000 Subject: [PATCH 61/64] Translated using Weblate (Basque) Currently translated at 100.0% (783 of 783 strings) Translation: YunoHost/core Translate-URL: https://translate.yunohost.org/projects/yunohost/core/eu/ --- locales/eu.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/locales/eu.json b/locales/eu.json index d38c48586..1646b03f8 100644 --- a/locales/eu.json +++ b/locales/eu.json @@ -752,7 +752,7 @@ "app_change_url_failed": "Ezin izan da {app} aplikazioaren URLa aldatu: {error}", "app_change_url_require_full_domain": "Ezin da {app} aplikazioa URL berri honetara aldatu domeinu oso bat behar duelako (hots, / bide-izena duena)", "app_change_url_script_failed": "Errorea gertatu da URLa aldatzeko aginduaren barnean", - "app_corrupt_source": "YunoHostek deskargatu du {app} aplikaziorako '{source_id}' ({url}) baliabidea baina ez dator bat espero zen 'checksum'arekin. Agian zerbitzariak interneteko konexioa galdu du tarte batez, EDO baliabidea nolabait moldatua izan da arduradunaren aldetik (edo partehartzaile maltzur baten aldetik?) eta YunoHosten arduradunek egoera aztertu eta aplikazioaren manifestua eguneratu behar dute aldaketa hau kontuan hartzeko.\n Espero zen sha256 checksuma: {expected_sha256}\n Deskargatutakoaren sha256 checksuma: {computed_sha256}\n Deskargatutako fitxategiaren tamaina: {size}", + "app_corrupt_source": "YunoHostek deskargatu du {app} aplikaziorako '{source_id}' ({url}) baliabidea baina ez dator bat espero zen 'checksum'arekin. Agian zerbitzariak interneteko konexioa galdu du tarte batez, EDO baliabidea nolabait moldatua izan da arduradunaren aldetik (edo partehartzaile maltzur baten aldetik?) eta YunoHosten arduradunek egoera aztertu eta agian aplikazioaren manifestua eguneratu behar dute aldaketa hau kontuan hartzeko.\n Espero zen sha256 checksuma: {expected_sha256}\n Deskargatutakoaren sha256 checksuma: {computed_sha256}\n Deskargatutako fitxategiaren tamaina: {size}", "app_failed_to_upgrade_but_continue": "{failed_app} aplikazioaren bertsio-berritzeak huts egin du, jarraitu hurrengo bertsio-berritzeekin, eskatu bezala. Exekutatu 'yunohost log show {operation_logger_name}' errorearen erregistroa ikusteko", "app_not_upgraded_broken_system": "{failed_app} aplikazioaren bertsio-berritzeak huts egin du eta sistema hondatu du, beraz, ondorengo aplikazioen bertsio-berritzeak ezeztatu dira: {apps}", "app_not_upgraded_broken_system_continue": "{failed_app} aplikazioaren bertsio-berritzeak huts egin du eta sistema hondatu du (beraz, --continue-on-failure aukerari muzin egin zaio) eta ondorengo aplikazioen bertsio-berritzeak ezeztatu dira: {apps}", @@ -782,4 +782,4 @@ "dyndns_set_recovery_password_failed": "Berreskuratze-pasahitza ezartzeak huts egin du: {error}", "dyndns_set_recovery_password_success": "Berreskuratze-pasahitza ezarri da!", "global_settings_setting_ssh_port_help": "1024 baino ataka txikiago bat izan beharko litzateke, zerbitzu ez-administratzaileek urruneko makinan usurpazio-saiorik egin ez dezaten. Lehendik ere erabiltzen ari diren atakak ere ekidin beharko zenituzke, 80 edo 443 kasu." -} \ No newline at end of file +} From 415e444f130adc0129c2728adb16068e838a33b6 Mon Sep 17 00:00:00 2001 From: Laurent Peuch Date: Sat, 9 Mar 2024 03:15:04 +0100 Subject: [PATCH 62/64] ci(autoblacks): switch from using gitlab CI to github actions for autoblacking code --- .github/workflows/autoblack.yml | 35 +++++++++++++++++++++++++++++++++ .gitlab/ci/lint.gitlab-ci.yml | 21 -------------------- 2 files changed, 35 insertions(+), 21 deletions(-) create mode 100644 .github/workflows/autoblack.yml diff --git a/.github/workflows/autoblack.yml b/.github/workflows/autoblack.yml new file mode 100644 index 000000000..369f88824 --- /dev/null +++ b/.github/workflows/autoblack.yml @@ -0,0 +1,35 @@ +name: Check / auto apply Black +on: + push: + branches: + - dev +jobs: + black: + name: Check / auto apply black + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Check files using the black formatter + uses: psf/black@stable + id: black + with: + options: "." + continue-on-error: true + - shell: pwsh + id: check_files_changed + run: | + # Diff HEAD with the previous commit + $diff = git diff + $HasDiff = $diff.Length -gt 0 + Write-Host "::set-output name=files_changed::$HasDiff" + - name: Create Pull Request + if: steps.check_files_changed.outputs.files_changed == 'true' + uses: peter-evans/create-pull-request@v6 + with: + token: ${{ secrets.GITHUB_TOKEN }} + title: "Format Python code with Black" + commit-message: ":art: Format Python code with Black" + body: | + This pull request uses the [psf/black](https://github.com/psf/black) formatter. + base: ${{ github.head_ref }} # Creates pull request onto pull request or commit branch + branch: actions/black diff --git a/.gitlab/ci/lint.gitlab-ci.yml b/.gitlab/ci/lint.gitlab-ci.yml index 7a8fbf1fb..bd395ed94 100644 --- a/.gitlab/ci/lint.gitlab-ci.yml +++ b/.gitlab/ci/lint.gitlab-ci.yml @@ -24,24 +24,3 @@ mypy: needs: [] script: - tox -e py39-mypy - -black: - stage: lint - image: "before-install" - needs: [] - before_script: - - apt-get update -y && apt-get install git hub -y - - git config --global user.email "yunohost@yunohost.org" - - git config --global user.name "$GITHUB_USER" - - hub clone --branch ${CI_COMMIT_REF_NAME} "https://$GITHUB_TOKEN:x-oauth-basic@github.com/YunoHost/yunohost.git" github_repo - - cd github_repo - script: - # create a local branch that will overwrite distant one - - git checkout -b "ci-format-${CI_COMMIT_REF_NAME}" --no-track - - tox -e py39-black-run - - '[ $(git diff | wc -l) != 0 ] || exit 0' # stop if there is nothing to commit - - git commit -am "[CI] Format code with Black" || true - - git push -f origin "ci-format-${CI_COMMIT_REF_NAME}":"ci-format-${CI_COMMIT_REF_NAME}" - - hub pull-request -m "[CI] Format code with Black" -b Yunohost:dev -p || true # GITHUB_USER and GITHUB_TOKEN registered here https://gitlab.com/yunohost/yunohost/-/settings/ci_cd - only: - - tags From 00dc340b49e7893feab31e60444d078758dc6ceb Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 9 Mar 2024 06:04:51 +0100 Subject: [PATCH 63/64] Add images alt text, fix some links and some markdown formating --- README.md | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 07ee04de0..b19f741c4 100644 --- a/README.md +++ b/README.md @@ -5,45 +5,43 @@

YunoHost

- ![Version](https://img.shields.io/github/v/tag/yunohost/yunohost?label=version&sort=semver) [![Pipeline status](https://gitlab.com/yunohost/yunohost/badges/dev/pipeline.svg)](https://gitlab.com/yunohost/yunohost/-/pipelines) ![Test coverage](https://gitlab.com/yunohost/yunohost/badges/dev/coverage.svg) [![Project license](https://img.shields.io/gitlab/license/yunohost/yunohost)](https://github.com/YunoHost/yunohost/blob/dev/LICENSE) [![CodeQL](https://github.com/yunohost/yunohost/workflows/CodeQL/badge.svg)](https://github.com/YunoHost/yunohost/security/code-scanning) [![Mastodon Follow](https://img.shields.io/mastodon/follow/28084)](https://mastodon.social/@yunohost) -
YunoHost is an operating system aiming to simplify as much as possible the administration of a server. This repository corresponds to the core code of YunoHost, mainly written in Python and Bash. -- [Project features](https://yunohost.org/#/whatsyunohost) +- [Project features](https://yunohost.org/whatsyunohost) - [Project website](https://yunohost.org) - [Install documentation](https://yunohost.org/install) - [Issue tracker](https://github.com/YunoHost/issues) -# Screenshots +## Screenshots Webadmin ([Yunohost-Admin](https://github.com/YunoHost/yunohost-admin)) | Single sign-on user portal ([SSOwat](https://github.com/YunoHost/ssowat)) ---- | --- -![](https://raw.githubusercontent.com/YunoHost/doc/master/images/webadmin.png) | ![](https://raw.githubusercontent.com/YunoHost/doc/master/images/user_panel.png) +--- | --- +![Web admin insterface screenshot](https://raw.githubusercontent.com/YunoHost/doc/master/images/webadmin.png) | ![User portal screenshot](https://raw.githubusercontent.com/YunoHost/doc/master/images/user_panel.png) ## Contributing - You can learn how to get started with developing on YunoHost by reading [this piece of documentation](https://yunohost.org/dev). -- Come chat with us on the [dev chatroom](https://yunohost.org/#/chat_rooms) ! -- You can help translate YunoHost on our [translation platform](https://translate.yunohost.org/engage/yunohost/?utm_source=widget) +- Come chat with us on the [dev chatroom](https://yunohost.org/chat_rooms)! +- You can help translate YunoHost on our [translation platform](https://translate.yunohost.org/engage/yunohost/?utm_source=widget).

-Translation status +View of the translation rate for the different languages available in YunoHost

## License -As [other components of YunoHost](https://yunohost.org/#/faq_en), this repository is licensed under GNU AGPL v3. +As [other components of YunoHost](https://yunohost.org/faq), this repository is licensed under GNU AGPL v3. ## They support us <3 @@ -51,16 +49,16 @@ We are thankful for our sponsors providing us with infrastructure and grants!

- - - +NLnet Foundation +Next Generation Internet +Code Lutin

- - - - - +Globenet +Gitoyen +tetaneutral.net +LDN (Lorraine Data Network) +NBS System

From b388ca7f43968ae094bd1770312c872ce8ac82d0 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 9 Mar 2024 21:00:55 +0100 Subject: [PATCH 64/64] Meh, fix badges --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index b19f741c4..59971ce59 100644 --- a/README.md +++ b/README.md @@ -5,12 +5,14 @@

YunoHost

+ ![Version](https://img.shields.io/github/v/tag/yunohost/yunohost?label=version&sort=semver) [![Pipeline status](https://gitlab.com/yunohost/yunohost/badges/dev/pipeline.svg)](https://gitlab.com/yunohost/yunohost/-/pipelines) ![Test coverage](https://gitlab.com/yunohost/yunohost/badges/dev/coverage.svg) [![Project license](https://img.shields.io/gitlab/license/yunohost/yunohost)](https://github.com/YunoHost/yunohost/blob/dev/LICENSE) [![CodeQL](https://github.com/yunohost/yunohost/workflows/CodeQL/badge.svg)](https://github.com/YunoHost/yunohost/security/code-scanning) [![Mastodon Follow](https://img.shields.io/mastodon/follow/28084)](https://mastodon.social/@yunohost) +
YunoHost is an operating system aiming to simplify as much as possible the administration of a server.