From 1b62ce024043399d3be998324c2d66e566a5f14f Mon Sep 17 00:00:00 2001
From: "ljf (zamentur)" Doc auto-generated by this script on {{data.date}} (Yunohost version {{data.version}}) Doc auto-generated by this script on {{data.date}} (Yunohost version {{data.version}})App helpers
-
- Dude, show me the code ! + Dude, show me the code !
From 146537dcc13c66d10aef86dabad0bbaff9bdcb1a Mon Sep 17 00:00:00 2001 From: Kay0uDoc auto-generated by this script on {{data.date}} (Yunohost version {{data.version}})
+Doc auto-generated by this script on {{data.date}} (Yunohost version {{data.version}})
{% for category, helpers in data.helpers %} @@ -72,7 +72,7 @@ {% endif %}- Dude, show me the code ! + Dude, show me the code !
From 63166d05fad940db441edf922c4cfaf16120a643 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin{mountpoint}
(sul periferic {device}
) a solament {free} ({free_percent}%). Siatz prudent.",
"migration_description_0014_remove_app_status_json": "Suprimir los fichièrs d’aplicacion status.json eretats",
"dyndns_provider_unreachable": "Impossible d’atenher lo provesidor Dyndns : siá vòstre YunoHost es pas corrèctament connectat a Internet siá lo servidor dynette es copat.",
- "diagnosis_services_bad_status_tip": "Podètz ensajar de reaviar lo servici, e se non fonciona pas, podètz agachar los jornals en utilizant « yunohost service log {service} » o via la seccion « Servicis » de pas la pagina web d’administracion.",
+ "diagnosis_services_bad_status_tip": "Podètz ensajar de reaviar lo servici, e se non fonciona pas, podètz agachar los jornals de servici a la pagina web d’administracion(en linha de comanda podètz utilizar {mountpoint}
(sul periferic {device}
) a solament {free} ({free_percent}%). Deuriatz considerar de liberar un pauc d’espaci.",
"global_settings_setting_pop3_enabled": "Activar lo protocòl POP3 pel servidor de corrièr",
- "diagnosis_diskusage_ok": "Lo lòc d’emmagazinatge {mountpoint} (sul periferic {device}) a encara {free} ({free_percent}%) de liure !",
+ "diagnosis_diskusage_ok": "Lo lòc d’emmagazinatge {mountpoint}
(sul periferic {device}
) a encara {free} ({free_percent}%) de liure !",
"diagnosis_swap_none": "Lo sistèma a pas cap de memòria d’escambi. Auriatz de considerar d’ajustar almens {recommended} d’escambi per evitar las situacions ont lo sistèma manca de memòria.",
"diagnosis_swap_notsomuch": "Lo sistèma a solament {total} de memòria d’escambi. Auriatz de considerar d’ajustar almens {recommended} d’escambi per evitar las situacions ont lo sistèma manca de memòria.",
"diagnosis_description_web": "Web",
From c463cab8294308a519f8a92d3541bd0df95c27b6 Mon Sep 17 00:00:00 2001
From: Kayou {global}
",
"diagnosis_mail_outgoing_port_25_ok": "El servidor de email SMTP puede mandar emails (puerto saliente 25 no está bloqueado).",
- "diagnosis_mail_outgoing_port_25_blocked_details": "Deberías intentar desbloquear el puerto 25 saliente en la interfaz de tu router o en la interfaz de tu provedor de hosting. (Algunos hosting pueden necesitar que les abras un ticket de soporte para esto)."
+ "diagnosis_mail_outgoing_port_25_blocked_details": "Deberías intentar desbloquear el puerto 25 saliente en la interfaz de tu router o en la interfaz de tu provedor de hosting. (Algunos hosting pueden necesitar que les abras un ticket de soporte para esto).",
+ "diagnosis_swap_tip": "Por favor tenga cuidado y sepa que si el servidor contiene swap en una tarjeta SD o un disco duro de estado sólido, esto reducirá drásticamente la vida útil del dispositivo.",
+ "diagnosis_domain_expires_in": "{domain} expira en {days} días.",
+ "diagnosis_domain_expiration_error": "¡Algunos dominios expirarán MUY PRONTO!",
+ "diagnosis_domain_expiration_warning": "¡Algunos dominios expirarán pronto!",
+ "diagnosis_domain_expiration_success": "Sus dominios están registrados y no expirarán pronto.",
+ "diagnosis_domain_expiration_not_found_details": "¿Parece que la información de WHOIS para el dominio {domain} no contiene información sobre la fecha de expiración?",
+ "diagnosis_domain_not_found_details": "¡El dominio {domain} no existe en la base de datos WHOIS o ha expirado!",
+ "diagnosis_domain_expiration_not_found": "No se pudo revisar la fecha de expiración para algunos dominios",
+ "diagnosis_dns_try_dyndns_update_force": "La configuración DNS de este dominio debería ser administrada automáticamente por Yunohost. Si no es el caso, puede intentar forzar una actualización ejecutando {local}
",
+ "diagnosis_ip_no_ipv6_tip": "Tener IPv6 funcionando no es obligatorio para que su servidor funcione, pero es mejor para la salud del Internet en general. IPv6 debería ser configurado automáticamente por el sistema o su proveedor si está disponible. De otra manera, es posible que tenga que configurar varias cosas manualmente, tal y como se explica en esta documentación https://yunohost.org/#/ipv6. Si no puede habilitar IPv6 o si parece demasiado técnico, puede ignorar esta advertencia con toda seguridad.",
+ "diagnosis_display_tip": "Para ver los problemas encontrados, puede ir a la sección de diagnóstico del webadmin, o ejecutar 'yunohost diagnosis show --issues' en la línea de comandos.",
+ "diagnosis_package_installed_from_sury_details": "Algunos paquetes fueron accidentalmente instalados de un repositorio de terceros llamado Sury. El equipo Yunohost ha mejorado la estrategia para manejar estos pquetes, pero es posible que algunas instalaciones con aplicaciones de PHP7.3 en Stretch puedan tener algunas inconsistencias. Para solucionar esta situación, debería intentar ejecutar el siguiente comando: {type}
{name}
{current}
Expected value: {value}",
+ "diagnosis_dns_missing_record": "Stando alla configurazione DNS raccomandata, dovresti aggiungere un record DNS con le seguenti informazioni.
Type: {type}
Name: {name}
Value: {value}",
+ "diagnosis_dns_bad_conf": "Alcuni record DNS sono mancanti o incorretti per il dominio {domain} (categoria {category})",
+ "diagnosis_dns_good_conf": "I recordDNS sono configurati correttamente per il dominio {domain} (categoria {category})",
+ "diagnosis_ip_weird_resolvconf_details": "Il file /etc/resolv.conf
dovrebbe essere un symlink a /etc/resolvconf/run/resolv.conf
che punta a 127.0.0.1
(dnsmasq). Se vuoi configurare manualmente i DNS, modifica /etc/resolv.dnsmasq.conf
.",
+ "diagnosis_ip_weird_resolvconf": "La risoluzione dei nomi di rete sembra funzionare, ma mi pare che tu stia usando un /etc/resolv.conf
personalizzato.",
+ "diagnosis_ip_broken_resolvconf": "La risoluzione dei nomi di rete sembra non funzionare sul tuo server, e sembra collegato a /etc/resolv.conf
che non punta a 127.0.0.1
.",
+ "diagnosis_ip_broken_dnsresolution": "La risoluzione dei nomi di rete sembra non funzionare per qualche ragione... È presente un firewall che blocca le richieste DNS?",
+ "diagnosis_ip_dnsresolution_working": "Risoluzione dei nomi di rete funzionante!",
+ "diagnosis_ip_not_connected_at_all": "Sei sicuro che il server sia collegato ad Internet!?",
+ "diagnosis_ip_local": "IP locale: {local}
",
+ "diagnosis_ip_global": "IP globale: {global}
",
+ "diagnosis_ip_no_ipv6_tip": "Avere IPv6 funzionante non è obbligatorio per far funzionare il server, ma è un bene per Internet stesso. IPv6 dovrebbe essere configurato automaticamente dal sistema o dal tuo provider se è disponibile. Altrimenti, potresti aver bisogno di configurare alcune cose manualmente come è spiegato nella documentazione: https://yunohost.org/#/ipv6. Se non puoi abilitare IPv6 o se ti sembra troppo complicato per te, puoi tranquillamente ignorare questo avvertimento.",
+ "diagnosis_ip_no_ipv6": "Il server non ha IPv6 funzionante.",
+ "diagnosis_ip_connected_ipv6": "Il server è connesso ad Internet tramite IPv6!",
+ "diagnosis_ip_no_ipv4": "Il server non ha IPv4 funzionante.",
+ "diagnosis_ip_connected_ipv4": "Il server è connesso ad Internet tramite IPv4!",
+ "diagnosis_no_cache": "Nessuna diagnosi nella cache per la categoria '{category}'",
+ "diagnosis_found_warnings": "Trovato {warning} oggetti che potrebbero essere migliorati per {category}.",
+ "diagnosis_failed": "Recupero dei risultati della diagnosi per la categoria '{category}' fallito: {error}",
+ "diagnosis_everything_ok": "Tutto ok per {category}!",
+ "diagnosis_found_errors_and_warnings": "Trovato {errors} problemi (e {warnings} alerts) significativi collegati a {category}!",
+ "diagnosis_found_errors": "Trovato {errors} problemi significativi collegati a {category}!",
+ "diagnosis_ignored_issues": "(+ {nb_ignored} problemi ignorati)",
+ "diagnosis_cant_run_because_of_dep": "Impossibile lanciare la diagnosi per {category} mentre ci sono problemi importanti collegati a {dep}.",
+ "diagnosis_cache_still_valid": "(La cache della diagnosi di {category} è ancora valida. Non la ricontrollo di nuovo per ora!)",
+ "diagnosis_failed_for_category": "Diagnosi fallita per la categoria '{category}:{error}",
+ "diagnosis_display_tip": "Per vedere i problemi rilevati, puoi andare alla sezione Diagnosi del amministratore, o eseguire 'yunohost diagnosis show --issues' dalla riga di comando.",
+ "diagnosis_package_installed_from_sury_details": "Alcuni pacchetti sono stati inavvertitamente installati da un repository di terze parti chiamato Sury. Il team di Yunohost ha migliorato la gestione di tali pacchetti, ma ci si aspetta che alcuni setup di app PHP7.3 abbiano delle incompatibilità anche se sono ancora in Stretch. Per sistemare questa situazione, dovresti provare a lanciare il seguente comando: {cmd_to_fix} ",
+ "diagnosis_package_installed_from_sury": "Alcuni pacchetti di sistema dovrebbero fare il downgrade"
}
From a54f99117bb50aa59ab158e6a5a807bed93b3ad4 Mon Sep 17 00:00:00 2001
From: Alexandre Aubin
Date: Sun, 29 Nov 2020 04:53:53 +0100
Subject: [PATCH 062/128] Fix typo in it string
---
locales/it.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/locales/it.json b/locales/it.json
index d2347d3aa..e70f00a37 100644
--- a/locales/it.json
+++ b/locales/it.json
@@ -401,7 +401,7 @@
"diagnosis_ip_no_ipv4": "Il server non ha IPv4 funzionante.",
"diagnosis_ip_connected_ipv4": "Il server è connesso ad Internet tramite IPv4!",
"diagnosis_no_cache": "Nessuna diagnosi nella cache per la categoria '{category}'",
- "diagnosis_found_warnings": "Trovato {warning} oggetti che potrebbero essere migliorati per {category}.",
+ "diagnosis_found_warnings": "Trovato {warnings} oggetti che potrebbero essere migliorati per {category}.",
"diagnosis_failed": "Recupero dei risultati della diagnosi per la categoria '{category}' fallito: {error}",
"diagnosis_everything_ok": "Tutto ok per {category}!",
"diagnosis_found_errors_and_warnings": "Trovato {errors} problemi (e {warnings} alerts) significativi collegati a {category}!",
From 199cc50f66c34c2447b3e64f773474e027f1cf5e Mon Sep 17 00:00:00 2001
From: Alexandre Aubin
Date: Sun, 29 Nov 2020 19:55:39 +0100
Subject: [PATCH 063/128] Ignore stupid warnings from apt
---
src/yunohost/hook.py | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/src/yunohost/hook.py b/src/yunohost/hook.py
index f8aff4f6d..22d1ef623 100644
--- a/src/yunohost/hook.py
+++ b/src/yunohost/hook.py
@@ -319,10 +319,26 @@ def hook_exec(path, args=None, raise_on_error=False, no_trace=False,
if not os.path.isfile(path):
raise YunohostError('file_does_not_exist', path=path)
+ def is_relevant_warning(msg):
+
+ # Ignore empty warning messages...
+ if not msg:
+ return False
+
+ # Some of these are shit sent from apt and we don't give a shit about
+ # them because they ain't actual warnings >_>
+ irrelevant_warnings = [
+ r"invalid value for trace file descriptor",
+ r"Creating config file .* with new version",
+ r"Created symlink /etc/systemd",
+ r"dpkg: warning: while removing .* not empty so not removed"
+ ]
+ return all(not re.search(w, msg) for w in irrelevant_warnings)
+
# Define output loggers and call command
loggers = (
lambda l: logger.debug(l.rstrip() + "\r"),
- lambda l: logger.warning(l.rstrip()) if "invalid value for trace file descriptor" not in 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())
)
From 74272de52c7a02ee6d65edb0aacdd769aabb9ae1 Mon Sep 17 00:00:00 2001
From: Alexandre Aubin
Date: Mon, 30 Nov 2020 23:20:13 +0100
Subject: [PATCH 064/128] We need to have YNH_MANIFEST_VERSION also defined
during backup/restore (#1088)
* We need to have YNH_MANIFEST_VERSION also defined during backup/restore
Co-authored-by: Kayou
---
src/yunohost/app.py | 72 +++++++++++++++++-------------------------
src/yunohost/backup.py | 49 ++++++++--------------------
2 files changed, 43 insertions(+), 78 deletions(-)
diff --git a/src/yunohost/app.py b/src/yunohost/app.py
index b8179eead..71aaca316 100644
--- a/src/yunohost/app.py
+++ b/src/yunohost/app.py
@@ -360,13 +360,7 @@ def app_change_url(operation_logger, app, domain, path):
args_list.append(app)
# Prepare env. var. to pass to script
- env_dict = _make_environment_dict(args_odict)
- app_id, app_instance_nb = _parse_app_instance_name(app)
- env_dict["YNH_APP_ID"] = app_id
- env_dict["YNH_APP_INSTANCE_NAME"] = app
- env_dict["YNH_APP_INSTANCE_NUMBER"] = str(app_instance_nb)
- env_dict["YNH_APP_MANIFEST_VERSION"] = manifest.get("version", "?")
-
+ env_dict = _make_environment_for_app_script(app, args=args_odict)
env_dict["YNH_APP_OLD_DOMAIN"] = old_domain
env_dict["YNH_APP_OLD_PATH"] = old_path
env_dict["YNH_APP_NEW_DOMAIN"] = domain
@@ -528,11 +522,7 @@ def app_upgrade(app=[], url=None, file=None, force=False):
args_list.append(app_instance_name)
# Prepare env. var. to pass to script
- env_dict = _make_environment_dict(args_odict)
- app_id, app_instance_nb = _parse_app_instance_name(app_instance_name)
- env_dict["YNH_APP_ID"] = app_id
- env_dict["YNH_APP_INSTANCE_NAME"] = app_instance_name
- env_dict["YNH_APP_INSTANCE_NUMBER"] = str(app_instance_nb)
+ env_dict = _make_environment_for_app_script(app_instance_name, args=args_odict)
env_dict["YNH_APP_UPGRADE_TYPE"] = upgrade_type
env_dict["YNH_APP_MANIFEST_VERSION"] = str(app_new_version)
env_dict["YNH_APP_CURRENT_VERSION"] = str(app_current_version)
@@ -762,20 +752,6 @@ def app_install(operation_logger, app, label=None, args=None, no_remove_on_failu
# Apply dirty patch to make php5 apps compatible with php7
_patch_legacy_php_versions(extracted_app_folder)
- # Prepare env. var. to pass to script
- env_dict = _make_environment_dict(args_odict)
- env_dict["YNH_APP_ID"] = app_id
- env_dict["YNH_APP_INSTANCE_NAME"] = app_instance_name
- env_dict["YNH_APP_INSTANCE_NUMBER"] = str(instance_number)
- env_dict["YNH_APP_MANIFEST_VERSION"] = manifest.get("version", "?")
-
- env_dict_for_logging = env_dict.copy()
- for arg_name, arg_value_and_type in args_odict.items():
- if arg_value_and_type[1] == "password":
- del env_dict_for_logging["YNH_APP_ARG_%s" % arg_name.upper()]
-
- operation_logger.extra.update({'env': env_dict_for_logging})
-
# We'll check that the app didn't brutally edit some system configuration
manually_modified_files_before_install = manually_modified_files()
@@ -827,6 +803,16 @@ def app_install(operation_logger, app, label=None, args=None, no_remove_on_failu
# will be enabled during the app install. C.f. 'app_register_url()' below.
permission_create(app_instance_name + ".main", allowed=["all_users"], label=label, show_tile=False, protected=False)
+ # Prepare env. var. to pass to script
+ env_dict = _make_environment_for_app_script(app_instance_name, args=args_odict)
+
+ env_dict_for_logging = env_dict.copy()
+ for arg_name, arg_value_and_type in args_odict.items():
+ if arg_value_and_type[1] == "password":
+ del env_dict_for_logging["YNH_APP_ARG_%s" % arg_name.upper()]
+
+ operation_logger.extra.update({'env': env_dict_for_logging})
+
# Execute the app install script
install_failed = True
try:
@@ -1476,12 +1462,7 @@ def app_action_run(operation_logger, app, action, args=None):
args_odict = _parse_args_for_action(actions[action], args=args_dict)
args_list = [value[0] for value in args_odict.values()]
- app_id, app_instance_nb = _parse_app_instance_name(app)
-
- env_dict = _make_environment_dict(args_odict, prefix="ACTION_")
- env_dict["YNH_APP_ID"] = app_id
- env_dict["YNH_APP_INSTANCE_NAME"] = app
- env_dict["YNH_APP_INSTANCE_NUMBER"] = str(app_instance_nb)
+ env_dict = _make_environment_for_app_script(app, args=args_odict, args_prefix="ACTION_")
env_dict["YNH_ACTION"] = action
_, path = tempfile.mkstemp()
@@ -1492,7 +1473,7 @@ def app_action_run(operation_logger, app, action, args=None):
os.chmod(path, 700)
if action_declaration.get("cwd"):
- cwd = action_declaration["cwd"].replace("$app", app_id)
+ cwd = action_declaration["cwd"].replace("$app", app)
else:
cwd = "/etc/yunohost/apps/" + app
@@ -2778,18 +2759,23 @@ def _assert_no_conflicting_apps(domain, path, ignore_app=None, full_domain=False
raise YunohostError('app_location_unavailable', apps="\n".join(apps))
-def _make_environment_dict(args_dict, prefix="APP_ARG_"):
- """
- Convert a dictionnary containing manifest arguments
- to a dictionnary of env. var. to be passed to scripts
+def _make_environment_for_app_script(app, args={}, args_prefix="APP_ARG_"):
- Keyword arguments:
- arg -- A key/value dictionnary of manifest arguments
+ app_setting_path = os.path.join(APPS_SETTING_PATH, app)
+
+ manifest = _get_manifest_of_app(app_setting_path)
+ app_id, app_instance_nb = _parse_app_instance_name(app)
+
+ env_dict = {
+ "YNH_APP_ID": app_id,
+ "YNH_APP_INSTANCE_NAME": app,
+ "YNH_APP_INSTANCE_NUMBER": str(app_instance_nb),
+ "YNH_APP_MANIFEST_VERSION": manifest.get("version", "?")
+ }
+
+ for arg_name, arg_value_and_type in args.items():
+ env_dict["YNH_%s%s" % (args_prefix, arg_name.upper())] = arg_value_and_type[0]
- """
- env_dict = {}
- for arg_name, arg_value_and_type in args_dict.items():
- env_dict["YNH_%s%s" % (prefix, arg_name.upper())] = arg_value_and_type[0]
return env_dict
diff --git a/src/yunohost/backup.py b/src/yunohost/backup.py
index 943fab592..c0f11eae8 100644
--- a/src/yunohost/backup.py
+++ b/src/yunohost/backup.py
@@ -44,7 +44,7 @@ from moulinette.utils.filesystem import read_file, mkdir, write_to_yaml, read_ya
from yunohost.app import (
app_info, _is_installed,
- _parse_app_instance_name,
+ _make_environment_for_app_script,
dump_app_log_extract_for_debugging,
_patch_legacy_helpers,
_patch_legacy_php_versions,
@@ -553,13 +553,8 @@ class BackupManager():
env_var['YNH_BACKUP_CSV'] = tmp_csv
if app is not None:
- app_id, app_instance_nb = _parse_app_instance_name(app)
- env_var["YNH_APP_ID"] = app_id
- env_var["YNH_APP_INSTANCE_NAME"] = app
- env_var["YNH_APP_INSTANCE_NUMBER"] = str(app_instance_nb)
- tmp_app_dir = os.path.join('apps/', app)
- tmp_app_bkp_dir = os.path.join(self.work_dir, tmp_app_dir, 'backup')
- env_var["YNH_APP_BACKUP_DIR"] = tmp_app_bkp_dir
+ env_var.update(_make_environment_for_app_script(app))
+ env_var["YNH_APP_BACKUP_DIR"] = os.path.join(self.work_dir, 'apps', app, 'backup')
return env_var
@@ -1165,7 +1160,10 @@ class RestoreManager():
logger.debug(m18n.n('restore_running_hooks'))
- env_dict = self._get_env_var()
+ env_dict = {
+ 'YNH_BACKUP_DIR': self.work_dir,
+ 'YNH_BACKUP_CSV': os.path.join(self.work_dir, "backup.csv")
+ }
operation_logger.extra['env'] = env_dict
operation_logger.flush()
ret = hook_callback('restore',
@@ -1372,7 +1370,12 @@ class RestoreManager():
migrate_legacy_permission_settings(app=app_instance_name)
# Prepare env. var. to pass to script
- env_dict = self._get_env_var(app_instance_name)
+ env_dict = _make_environment_for_app_script(app_instance_name)
+ env_dict.update({
+ 'YNH_BACKUP_DIR': self.work_dir,
+ 'YNH_BACKUP_CSV': os.path.join(self.work_dir, "backup.csv"),
+ 'YNH_APP_BACKUP_DIR': os.path.join(self.work_dir, 'apps', app_instance_name, 'backup')
+ })
operation_logger.extra['env'] = env_dict
operation_logger.flush()
@@ -1396,11 +1399,7 @@ class RestoreManager():
remove_script = os.path.join(app_scripts_in_archive, 'remove')
# Setup environment for remove script
- app_id, app_instance_nb = _parse_app_instance_name(app_instance_name)
- env_dict_remove = {}
- env_dict_remove["YNH_APP_ID"] = app_id
- env_dict_remove["YNH_APP_INSTANCE_NAME"] = app_instance_name
- env_dict_remove["YNH_APP_INSTANCE_NUMBER"] = str(app_instance_nb)
+ env_dict_remove = _make_environment_for_app_script(app_instance_name)
operation_logger = OperationLogger('remove_on_failed_restore',
[('app', app_instance_name)],
@@ -1432,26 +1431,6 @@ class RestoreManager():
# Cleaning temporary scripts directory
shutil.rmtree(tmp_folder_for_app_restore, ignore_errors=True)
- def _get_env_var(self, app=None):
- """ Define environment variable for hooks call """
- env_var = {}
- env_var['YNH_BACKUP_DIR'] = self.work_dir
- env_var['YNH_BACKUP_CSV'] = os.path.join(self.work_dir, "backup.csv")
-
- if app is not None:
- app_dir_in_archive = os.path.join(self.work_dir, 'apps', app)
- app_backup_in_archive = os.path.join(app_dir_in_archive, 'backup')
-
- # Parse app instance name and id
- app_id, app_instance_nb = _parse_app_instance_name(app)
-
- env_var["YNH_APP_ID"] = app_id
- env_var["YNH_APP_INSTANCE_NAME"] = app
- env_var["YNH_APP_INSTANCE_NUMBER"] = str(app_instance_nb)
- env_var["YNH_APP_BACKUP_DIR"] = app_backup_in_archive
-
- return env_var
-
#
# Backup methods #
#
From b07fc2061ae7826a9dc8061d5a81c0f210803adf Mon Sep 17 00:00:00 2001
From: Alexandre Aubin
Date: Mon, 30 Nov 2020 23:20:45 +0100
Subject: [PATCH 065/128] Do not reload php-fpm if conf breaks it (#1087)
---
data/helpers.d/php | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/data/helpers.d/php b/data/helpers.d/php
index 5df31f32b..95cc15402 100644
--- a/data/helpers.d/php
+++ b/data/helpers.d/php
@@ -256,7 +256,13 @@ WantedBy=multi-user.target
# Restart the service, as this service is either stopped or only for this app
ynh_systemd_action --service_name=$fpm_service --action=restart
else
- # Reload PHP, to not impact other parts of the system using PHP
+ # Validate that the new php conf doesn't break php-fpm entirely
+ php-fpm${phpversion} --test 2>/dev/null \
+ && ynh_systemd_action --service_name=$fpm_service --action=reload \
+ || { php-fpm${phpversion} --test || true;
+ ynh_secure_remove --file="$finalphpconf";
+ ynh_die --message="The new configuration broke php-fpm?"
+ }
ynh_systemd_action --service_name=$fpm_service --action=reload
fi
}
From 57d6f7718a2b2fb740de129bed10c7965b7faa9d Mon Sep 17 00:00:00 2001
From: xaloc33
Date: Wed, 2 Dec 2020 16:04:46 +0000
Subject: [PATCH 066/128] Translated using Weblate (Catalan)
Currently translated at 100.0% (630 of 630 strings)
Translation: YunoHost/core
Translate-URL: https://translate.yunohost.org/projects/yunohost/core/ca/
---
locales/ca.json | 48 ++++++++++++++++++++++++++++++++++++++++++------
1 file changed, 42 insertions(+), 6 deletions(-)
diff --git a/locales/ca.json b/locales/ca.json
index 63426c7a6..a99a8c5f5 100644
--- a/locales/ca.json
+++ b/locales/ca.json
@@ -16,7 +16,7 @@
"app_extraction_failed": "No s'han pogut extreure els fitxers d'instal·lació",
"app_id_invalid": "ID de l'aplicació incorrecte",
"app_install_files_invalid": "Aquests fitxers no es poden instal·lar",
- "app_make_default_location_already_used": "No es pot fer l'aplicació '{app}' per defecte en el domini «{domain}» ja que ja és utilitzat per una altra aplicació '{other_app}'",
+ "app_make_default_location_already_used": "No es pot fer l'aplicació '{app}' l'aplicació per defecte en el domini «{domain}», ja que ja és utilitzat per '{other_app}'",
"app_location_unavailable": "Aquesta URL no està disponible o entra en conflicte amb aplicacions ja instal·lades:\n{apps:s}",
"app_manifest_invalid": "Hi ha algun error amb el manifest de l'aplicació: {error}",
"app_not_correctly_installed": "{app:s} sembla estar mal instal·lada",
@@ -300,7 +300,7 @@
"packages_upgrade_failed": "No s'han pogut actualitzar tots els paquets",
"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 (ex.: algu@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_mailbox_quota": "Ha de ser una mida amb el sufix b/k/M/G/T o 0 per no tenir quota",
@@ -386,7 +386,7 @@
"service_stop_failed": "No s'ha pogut aturar el servei «{service:s}»\n\nRegistres recents: {logs:s}",
"service_stopped": "S'ha aturat el servei «{service:s}»",
"service_unknown": "Servei «{service:s}» desconegut",
- "ssowat_conf_generated": "S'ha generat la configuració SSOwat",
+ "ssowat_conf_generated": "S'ha regenerat la configuració SSOwat",
"ssowat_conf_updated": "S'ha actualitzat la configuració SSOwat",
"system_upgraded": "S'ha actualitzat el sistema",
"system_username_exists": "El nom d'usuari ja existeix en la llista d'usuaris de sistema",
@@ -442,9 +442,9 @@
"migration_description_0011_setup_group_permission": "Configurar els grups d'usuaris i els permisos per les aplicacions i els serveis",
"migration_0011_backup_before_migration": "Creant una còpia de seguretat de la base de dades LDAP i la configuració de les aplicacions abans d'efectuar la migració.",
"migration_0011_can_not_backup_before_migration": "No s'ha pogut completar la còpia de seguretat abans de que la migració fallés. Error: {error:s}",
- "migration_0011_create_group": "Creant un grup per a cada usuari…",
+ "migration_0011_create_group": "Creant un grup per a cada usuari...",
"migration_0011_done": "Migració completada. Ja podeu gestionar grups d'usuaris.",
- "migration_0011_LDAP_update_failed": "Ha fallat l'actualització de LDAP. Error: {error:s}",
+ "migration_0011_LDAP_update_failed": "No s'ha pogut actualitzar LDAP. Error: {error:s}",
"migration_0011_migrate_permission": "Fent la migració dels permisos de la configuració de les aplicacions a LDAP...",
"migration_0011_migration_failed_trying_to_rollback": "No s'ha pogut fer la migració… s'intenta tornar el sistema a l'estat anterior.",
"migration_0011_rollback_success": "S'ha tornat el sistema a l'estat anterior.",
@@ -676,5 +676,41 @@
"migration_0017_postgresql_96_not_installed": "PostgreSQL no està instal·lat en aquest sistema. No s'ha de realitzar cap operació.",
"migration_description_0018_xtable_to_nftable": "Migrar les regles del trànsit de xarxa al nou sistema nftable",
"migration_description_0017_postgresql_9p6_to_11": "Migrar les bases de dades de PosrgreSQL 9.6 a 11",
- "migration_description_0016_php70_to_php73_pools": "Migrar els fitxers de configuració «pool» php7.0-fpm a php7.3"
+ "migration_description_0016_php70_to_php73_pools": "Migrar els fitxers de configuració «pool» php7.0-fpm a php7.3",
+ "global_settings_setting_backup_compress_tar_archives": "Comprimir els arxius (.tar.gz) en lloc d'arxius no comprimits (.tar) al crear noves còpies de seguretat. N.B.: activar aquesta opció permet fer arxius de còpia de seguretat més lleugers, però el procés inicial de còpia de seguretat serà significativament més llarg i més exigent a nivell de CPU.",
+ "global_settings_setting_smtp_relay_host": "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.",
+ "unknown_main_domain_path": "Domini o ruta desconeguda per a «{app}». Heu d'especificar un domini i una ruta per a poder especificar una URL per al permís.",
+ "show_tile_cant_be_enabled_for_regex": "No podeu activar «show_title» ara, perquè la URL per al permís «{permission}» és una expressió regular",
+ "show_tile_cant_be_enabled_for_url_not_defined": "No podeu activar «show_title» ara, perquè primer s'ha de definir una URL per al permís «{permission}»",
+ "regex_with_only_domain": "No podeu utilitzar una expressió regular com a domini, només com a ruta",
+ "regex_incompatible_with_tile": "/!\\ Empaquetadors! El permís «{permission}» té «show_tile» definit a «true» i pertant no pot definir una URL regex com a URL principal",
+ "permission_protected": "El permís {permission} està protegit. No podeu afegir o eliminar el grup visitants a o d'aquest permís.",
+ "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",
+ "migration_0019_slapd_config_will_be_overwritten": "Sembla que heu modificat manualment la configuració sldap. Per a aquesta migració crítica, YunoHist necessita forçar l'actualització de la configuració sldap. Es crearà una còpia de seguretat dels fitxers originals a {conf_backup_folder}.",
+ "migration_0019_rollback_success": "S'ha restaurat el sistema.",
+ "migration_0019_migration_failed_trying_to_rollback": "No s'ha pogut fer la migració... intentant restaurar el sistema.",
+ "migration_0019_can_not_backup_before_migration": "No s'ha pogut completar la còpia de seguretat del sistema abans de que fallés la migració. Error: {error:s}",
+ "migration_0019_backup_before_migration": "Creant una còpia de seguretat de la base de dades LDAP i de la configuració de les aplicacions abans de la migració actual.",
+ "migration_0019_add_new_attributes_in_ldap": "Afegir nous atributs per als permisos en la base de dades LDAP",
+ "migration_description_0019_extend_permissions_features": "Amplia/refés el sistema de gestió dels permisos de l'aplicació",
+ "migrating_legacy_permission_settings": "Migració dels paràmetres de permisos antics...",
+ "invalid_regex": "Regex no vàlid: «{regex:s}»",
+ "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_port": "Port de tramesa SMTP",
+ "domain_name_unknown": "Domini «{domain}» desconegut",
+ "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} ",
+ "diagnosis_package_installed_from_sury": "Alguns paquets del sistema s'han de tornar a versions anteriors",
+ "ask_user_domain": "Domini a utilitzar per l'adreçar de correu electrònic i per al compte XMPP",
+ "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_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",
+ "additional_urls_already_removed": "URL addicional «{url:s}» ja ha estat eliminada per al permís «{permission:s}»",
+ "additional_urls_already_added": "URL addicional «{url:s}» ja ha estat afegida per al permís «{permission:s}»"
}
From 22c1cd8e888e0fb8f7d5f382871625625b6a16fb Mon Sep 17 00:00:00 2001
From: frju365
Date: Thu, 3 Dec 2020 11:59:33 +0100
Subject: [PATCH 067/128] [FIX] New CN for LE.
---
src/yunohost/certificate.py | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/yunohost/certificate.py b/src/yunohost/certificate.py
index 170e5eb3b..bf8311611 100644
--- a/src/yunohost/certificate.py
+++ b/src/yunohost/certificate.py
@@ -651,6 +651,12 @@ def _get_status(domain):
"code": "lets-encrypt",
"verbose": "Let's Encrypt",
}
+
+ elif cert_issuer == "R3":
+ CA_type = {
+ "code": "lets-encrypt",
+ "verbose": "Let's Encrypt",
+ }
elif cert_issuer.startswith("Fake LE"):
CA_type = {
From cc2dbaa6b15599eb75bd777058e3afea3a4679b8 Mon Sep 17 00:00:00 2001
From: frju365
Date: Thu, 3 Dec 2020 12:09:20 +0100
Subject: [PATCH 068/128] [fix] Factorisons...
---
src/yunohost/certificate.py | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/src/yunohost/certificate.py b/src/yunohost/certificate.py
index bf8311611..a0f9d4032 100644
--- a/src/yunohost/certificate.py
+++ b/src/yunohost/certificate.py
@@ -646,13 +646,7 @@ def _get_status(domain):
"verbose": "Self-signed",
}
- elif cert_issuer.startswith("Let's Encrypt"):
- CA_type = {
- "code": "lets-encrypt",
- "verbose": "Let's Encrypt",
- }
-
- elif cert_issuer == "R3":
+ elif cert_issuer.startswith("Let's Encrypt") or cert_issuer == "R3":
CA_type = {
"code": "lets-encrypt",
"verbose": "Let's Encrypt",
From d15ccc6c238555d24623a7083db621bd356a9b6f Mon Sep 17 00:00:00 2001
From: Kay0u
Date: Thu, 3 Dec 2020 14:39:20 +0100
Subject: [PATCH 069/128] use organization name for LE cert
---
src/yunohost/certificate.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/yunohost/certificate.py b/src/yunohost/certificate.py
index a0f9d4032..8fb9fa684 100644
--- a/src/yunohost/certificate.py
+++ b/src/yunohost/certificate.py
@@ -637,6 +637,7 @@ def _get_status(domain):
cert_subject = cert.get_subject().CN
cert_issuer = cert.get_issuer().CN
+ organization_name = cert.get_issuer().O
valid_up_to = datetime.strptime(cert.get_notAfter(), "%Y%m%d%H%M%SZ")
days_remaining = (valid_up_to - datetime.utcnow()).days
@@ -646,7 +647,7 @@ def _get_status(domain):
"verbose": "Self-signed",
}
- elif cert_issuer.startswith("Let's Encrypt") or cert_issuer == "R3":
+ elif organization_name == "Let's Encrypt":
CA_type = {
"code": "lets-encrypt",
"verbose": "Let's Encrypt",
From 7780aa658f4b3467326383be1fcb24ab52eaad35 Mon Sep 17 00:00:00 2001
From: Kay0u
Date: Thu, 3 Dec 2020 14:39:40 +0100
Subject: [PATCH 070/128] fix staging cert url
---
src/yunohost/certificate.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/yunohost/certificate.py b/src/yunohost/certificate.py
index 8fb9fa684..c9451c2be 100644
--- a/src/yunohost/certificate.py
+++ b/src/yunohost/certificate.py
@@ -61,7 +61,7 @@ KEY_SIZE = 3072
VALIDITY_LIMIT = 15 # days
# For tests
-STAGING_CERTIFICATION_AUTHORITY = "https://acme-staging.api.letsencrypt.org"
+STAGING_CERTIFICATION_AUTHORITY = "https://acme-staging-v02.api.letsencrypt.org"
# For prod
PRODUCTION_CERTIFICATION_AUTHORITY = "https://acme-v02.api.letsencrypt.org"
From 6736f25079b96f38dc542b9da53eccb05837feb4 Mon Sep 17 00:00:00 2001
From: frju365
Date: Thu, 3 Dec 2020 11:59:33 +0100
Subject: [PATCH 071/128] [FIX] New CN for LE.
---
src/yunohost/certificate.py | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/yunohost/certificate.py b/src/yunohost/certificate.py
index 2118037d9..cecd0a2ea 100644
--- a/src/yunohost/certificate.py
+++ b/src/yunohost/certificate.py
@@ -647,6 +647,12 @@ def _get_status(domain):
"code": "lets-encrypt",
"verbose": "Let's Encrypt",
}
+
+ elif cert_issuer == "R3":
+ CA_type = {
+ "code": "lets-encrypt",
+ "verbose": "Let's Encrypt",
+ }
elif cert_issuer.startswith("Fake LE"):
CA_type = {
From 59018e4e8b116b56fe4741dd46bccb340d508fcd Mon Sep 17 00:00:00 2001
From: frju365
Date: Thu, 3 Dec 2020 12:09:20 +0100
Subject: [PATCH 072/128] [fix] Factorisons...
---
src/yunohost/certificate.py | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/src/yunohost/certificate.py b/src/yunohost/certificate.py
index cecd0a2ea..e7d877abf 100644
--- a/src/yunohost/certificate.py
+++ b/src/yunohost/certificate.py
@@ -642,13 +642,7 @@ def _get_status(domain):
"verbose": "Self-signed",
}
- elif cert_issuer.startswith("Let's Encrypt"):
- CA_type = {
- "code": "lets-encrypt",
- "verbose": "Let's Encrypt",
- }
-
- elif cert_issuer == "R3":
+ elif cert_issuer.startswith("Let's Encrypt") or cert_issuer == "R3":
CA_type = {
"code": "lets-encrypt",
"verbose": "Let's Encrypt",
From a52b7f0153a174970b63f227320d8c9ed997e87b Mon Sep 17 00:00:00 2001
From: Kay0u
Date: Thu, 3 Dec 2020 14:04:53 +0000
Subject: [PATCH 073/128] Update changelog for 4.0.8.3 release
---
debian/changelog | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/debian/changelog b/debian/changelog
index 846ab8adc..4196e74c8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+yunohost (4.0.8.3) stable; urgency=low
+
+ - [fix] Certificate renewal for LE (#1092)
+
+ Thanks to all contributors <3 ! (frju365)
+
+ -- Kay0u Thu, 03 Dec 2020 14:01:03 +0000
+
yunohost (4.0.8.2) stable; urgency=low
- [fix] intermediate_certificate is now included in signed certificate (#1067)
From 28b8a0ef6ac7dab27bff42942518ab0478cc1c41 Mon Sep 17 00:00:00 2001
From: Kay0u
Date: Thu, 3 Dec 2020 16:38:21 +0100
Subject: [PATCH 074/128] Update changelog for 4.1.0
---
debian/changelog | 36 +++++++++++++++++++++++++++++++++++-
1 file changed, 35 insertions(+), 1 deletion(-)
diff --git a/debian/changelog b/debian/changelog
index c3f72c801..1fa414d9e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,40 @@
yunohost (4.1.0) testing; urgency=low
- - Tmp bump of the version number to fix CI (c.f. Breaks: yunohost(<<4.1) in moulinette)
+ - [enh] Extends permissions features, improve legacy settings handling (YunoHost#861)
+ - [enh] During app installs, add a default answer for user-type questions (YunoHost#982)
+ - [enh] Default questions for common app manifest arguments (YunoHost#981)
+ - [enh] Only upgrade apps if version actually changed (YunoHost#864)
+ - [enh] Create uncompressed backup archives by default (instead of .tar.gz) (YunoHost#1020)
+ - [enh] Add possibility to download backups (YunoHost#1046)
+ - [enh] Asking an email address during user creation was confusing, now define it a username@domain by default (admin only chooses the domain) (YunoHost#962)
+ - [enh] Be able to configure an smtp relay (YunoHost#773)
+ - [enh] Add a diagnosis to detect processes rencently killed by oom_reaper (YunoHost/f5acbffb)
+ - [enh] Simplify operation log list (YunoHost#955)
+ - [enh] Smarter sorting of domain list (YunoHost#860)
+ - [fix] Accept '+' sign in mail forward adresses (YunoHost#818)
+ - [enh] Add x509 fingerprint in /etc/issue (YunoHost#1056)
+ - [enh] Add ynh_add_config helper (YunoHost#1055)
+ - [enh] Upgrade n version (YunoHost#1073)
+ - [enh] Clean /usr/bin/yunohost, make it easier to use yunohost as a python lib (YunoHost#922)
+ - [enh] Lazy loading of smtplib to reduce memory footprint a bit (0f2e9ab1)
+ - [enh] Refactor manifest arguments parsing (YunoHost#1013)
+ - [enh] Detect misformated arguments in getopts (YunoHost#1052)
+ - [enh] Refactor app download process, make it github-independent (YunoHost#1049)
+ - [fix] Test at the beginning of postinstall that iptables is working instead of miserably crashing later (YunoHost/f73ae4ee)
+ - [enh] Service logs: journalctl -x in fact makes everything bloated, the supposedly additional info it displays does not contains anything relevant... (YunoHost/452b178d)
+ - [enh] Add redis hook to enforce permissions on /var/log/redis (YunoHost/a1c1057a)
+ - [enh] Add configuration tests for dnsmasq, fail2ban, slapd (YunoHost/6e69df37)
+ - [enh] Remove some old fail2ban jails that do not exists anymore (YunoHost/2c6736df)
+ - [enh] Get rid of yunohost.local in main domain nginx conf (YunoHost/ba884d5b)
+ - [enh] Ignore some unimportant apt warnings (YunoHost/199cc50)
+ - [enh] Create the helper doc on new version (YunoHost#1080)
+ - [enh] The email "abuse@you_domain.tld" is now unavailable for security reason (YunoHost/67e03e6)
+ - [enh] Remove some warnings during backup (YunoHost#1047)
+ - [i18n] Translations updated for Catalan, Chinese (Simplified), French, German, Italian, Occitan, Portuguese
+
+ Thanks to all contributors <3 ! (Aleks, Augustin T., Baptiste W., Bram, Christian W., Colin W., cyxae, ekhae, Éric G., Félix P., Josué, Julien J., Kayou, Leandro N., ljf, Maniack C, ppr, Quentí, Quentin D., SiM, yalh76, Yifei D., xaloc33)
+
+ -- Kay0u Thu, 03 Dec 2020 16:34:38 +0100
yunohost (4.0.8.3) stable; urgency=low
From 11fb2659c611181909684b250f1c70a7b28f8352 Mon Sep 17 00:00:00 2001
From: "ljf (zamentur)"
Date: Fri, 4 Dec 2020 14:13:21 +0100
Subject: [PATCH 075/128] [fix] Avoid too many recipient
---
data/templates/postfix/main.cf | 3 +++
1 file changed, 3 insertions(+)
diff --git a/data/templates/postfix/main.cf b/data/templates/postfix/main.cf
index 61aa27211..6a1029b71 100644
--- a/data/templates/postfix/main.cf
+++ b/data/templates/postfix/main.cf
@@ -182,6 +182,9 @@ milter_default_action = accept
smtp_destination_concurrency_limit = 2
default_destination_rate_delay = 5s
+# Avoid to be blacklisted due to too many recipient
+smtpd_client_recipient_rate_limit=150
+
# Avoid email adress scanning
# By default it's possible to detect if the email adress exist
# So it's easly possible to scan a server to know which email adress is valid
From 2be911d369a3e824a2fb3e5a2cebf8a97dbdd472 Mon Sep 17 00:00:00 2001
From: ljf
Date: Tue, 8 Dec 2020 12:17:59 +0100
Subject: [PATCH 076/128] [fix] Missing backup conf
---
data/hooks/backup/22-conf_mail | 13 +++++++++++++
data/hooks/restore/22-conf_mail | 5 +++++
2 files changed, 18 insertions(+)
create mode 100644 data/hooks/backup/22-conf_mail
create mode 100644 data/hooks/restore/22-conf_mail
diff --git a/data/hooks/backup/22-conf_mail b/data/hooks/backup/22-conf_mail
new file mode 100644
index 000000000..018a345d9
--- /dev/null
+++ b/data/hooks/backup/22-conf_mail
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+# Exit hook on subcommand error or unset variable
+set -eu
+
+# Source YNH helpers
+source /usr/share/yunohost/helpers
+
+# Backup destination
+backup_dir="${1}/etc/dkim"
+
+# Backup the configuration
+ynh_backup "/etc/dkim" "$backup_dir"
diff --git a/data/hooks/restore/22-conf_mail b/data/hooks/restore/22-conf_mail
new file mode 100644
index 000000000..c069b53db
--- /dev/null
+++ b/data/hooks/restore/22-conf_mail
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+backup_dir="$1/etc/dkim"
+
+cp -a $backup_dir/. /etc/dkim
From f1f97d0235a60ee5661937bf1f64d083b4d116ac Mon Sep 17 00:00:00 2001
From: ljf
Date: Tue, 8 Dec 2020 17:05:51 +0100
Subject: [PATCH 077/128] [fix] DNS conf
---
src/yunohost/domain.py | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/yunohost/domain.py b/src/yunohost/domain.py
index 88fd9e3e9..d3e8c53f0 100644
--- a/src/yunohost/domain.py
+++ b/src/yunohost/domain.py
@@ -258,6 +258,10 @@ def domain_dns_conf(domain, ttl=None):
"""
+ domains = domain_list()
+ if domain not in domain_list()['domains']:
+ raise YunohostError('domain_name_unknown', domain=domain)
+
ttl = 3600 if ttl is None else ttl
dns_conf = _build_dns_conf(domain, ttl)
From 6aebe6faf9ccce329a6c33dd855a4bf5c34541c7 Mon Sep 17 00:00:00 2001
From: ljf
Date: Tue, 8 Dec 2020 17:11:10 +0100
Subject: [PATCH 078/128] [fix] Unused line
---
src/yunohost/domain.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/yunohost/domain.py b/src/yunohost/domain.py
index d3e8c53f0..b771d60ab 100644
--- a/src/yunohost/domain.py
+++ b/src/yunohost/domain.py
@@ -258,7 +258,6 @@ def domain_dns_conf(domain, ttl=None):
"""
- domains = domain_list()
if domain not in domain_list()['domains']:
raise YunohostError('domain_name_unknown', domain=domain)
From 2c9a668afe5da0f2ce7b1d8f2a08faa6dd3c0cfe Mon Sep 17 00:00:00 2001
From: ljf
Date: Tue, 8 Dec 2020 23:45:44 +0100
Subject: [PATCH 079/128] [fix] Unix permission on dkim
---
data/hooks/restore/22-conf_mail | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/data/hooks/restore/22-conf_mail b/data/hooks/restore/22-conf_mail
index c069b53db..312b3f61b 100644
--- a/data/hooks/restore/22-conf_mail
+++ b/data/hooks/restore/22-conf_mail
@@ -3,3 +3,9 @@
backup_dir="$1/etc/dkim"
cp -a $backup_dir/. /etc/dkim
+
+chown -R root:root /etc/dkim
+chown _rspamd:root /etc/dkim
+chown _rspamd:root /etc/dkim/*.mail.key
+chmod 600 /etc/dkim/*.mail.txt
+chmod 400 /etc/dkim/*.mail.key
From 8b53d6562e8a948dcda824ff2480d0eb2fa66f87 Mon Sep 17 00:00:00 2001
From: ljf
Date: Wed, 9 Dec 2020 01:31:17 +0100
Subject: [PATCH 080/128] [fix] Add Dyndns domains keys to backup
---
data/hooks/backup/42-conf_ynh_dyndns | 10 ++++++++++
data/hooks/restore/42-conf_ynh_dyndns | 10 ++++++++++
2 files changed, 20 insertions(+)
create mode 100644 data/hooks/backup/42-conf_ynh_dyndns
create mode 100644 data/hooks/restore/42-conf_ynh_dyndns
diff --git a/data/hooks/backup/42-conf_ynh_dyndns b/data/hooks/backup/42-conf_ynh_dyndns
new file mode 100644
index 000000000..776162ff0
--- /dev/null
+++ b/data/hooks/backup/42-conf_ynh_dyndns
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+source /usr/share/yunohost/helpers
+ynh_abort_if_errors
+YNH_CWD="${YNH_BACKUP_DIR%/}/conf/ynh/dyndns"
+cd "$YNH_CWD"
+
+# Backup the configuration
+ynh_backup --src_path="/etc/yunohost/dyndns" --not_mandatory
+ynh_backup --src_path="/etc/cron.d/yunohost-dyndns" --not_mandatory
diff --git a/data/hooks/restore/42-conf_ynh_dyndns b/data/hooks/restore/42-conf_ynh_dyndns
new file mode 100644
index 000000000..d16d7a67c
--- /dev/null
+++ b/data/hooks/restore/42-conf_ynh_dyndns
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+source /usr/share/yunohost/helpers
+ynh_abort_if_errors
+YNH_CWD="${YNH_BACKUP_DIR%/}/conf/ynh/dyndns"
+cd "$YNH_CWD"
+
+# Restore file if exists
+ynh_restore_file --origin_path="/etc/yunohost/dyndns" --not_mandatory
+ynh_restore_file --origin_path="/etc/cron.d/yunohost-dyndns" --not_mandatory
From ef9cc98d5e07dcc224ead8992bafc26f83c2acbd Mon Sep 17 00:00:00 2001
From: ljf
Date: Wed, 9 Dec 2020 01:35:40 +0100
Subject: [PATCH 081/128] [enh] Use ynh_backup helpers
---
data/hooks/backup/22-conf_mail | 13 ++++---------
data/hooks/restore/22-conf_mail | 6 ++----
2 files changed, 6 insertions(+), 13 deletions(-)
diff --git a/data/hooks/backup/22-conf_mail b/data/hooks/backup/22-conf_mail
index 018a345d9..9db39e0c2 100644
--- a/data/hooks/backup/22-conf_mail
+++ b/data/hooks/backup/22-conf_mail
@@ -1,13 +1,8 @@
#!/bin/bash
-# Exit hook on subcommand error or unset variable
-set -eu
-
-# Source YNH helpers
source /usr/share/yunohost/helpers
+ynh_abort_if_errors
+YNH_CWD="${YNH_BACKUP_DIR%/}/conf/dkim"
+cd "$YNH_CWD"
-# Backup destination
-backup_dir="${1}/etc/dkim"
-
-# Backup the configuration
-ynh_backup "/etc/dkim" "$backup_dir"
+ynh_backup --src_path="/etc/dkim"
diff --git a/data/hooks/restore/22-conf_mail b/data/hooks/restore/22-conf_mail
index 312b3f61b..77e0a4d42 100644
--- a/data/hooks/restore/22-conf_mail
+++ b/data/hooks/restore/22-conf_mail
@@ -1,11 +1,9 @@
#!/bin/bash
-backup_dir="$1/etc/dkim"
+backup_dir="$1/conf/dkim"
-cp -a $backup_dir/. /etc/dkim
+cp -a $backup_dir/etc/dkim/. /etc/dkim
chown -R root:root /etc/dkim
chown _rspamd:root /etc/dkim
chown _rspamd:root /etc/dkim/*.mail.key
-chmod 600 /etc/dkim/*.mail.txt
-chmod 400 /etc/dkim/*.mail.key
From 9a87d8a52da3dc137adacf7997d836acb3dea840 Mon Sep 17 00:00:00 2001
From: ljf
Date: Wed, 9 Dec 2020 01:59:06 +0100
Subject: [PATCH 082/128] [fix] Missing dir
---
data/hooks/backup/22-conf_mail | 1 +
1 file changed, 1 insertion(+)
diff --git a/data/hooks/backup/22-conf_mail b/data/hooks/backup/22-conf_mail
index 9db39e0c2..b604d8aa8 100644
--- a/data/hooks/backup/22-conf_mail
+++ b/data/hooks/backup/22-conf_mail
@@ -3,6 +3,7 @@
source /usr/share/yunohost/helpers
ynh_abort_if_errors
YNH_CWD="${YNH_BACKUP_DIR%/}/conf/dkim"
+mkdir -p "$YNH_CWD"
cd "$YNH_CWD"
ynh_backup --src_path="/etc/dkim"
From 60d838843eeb9b2ed94b19e847fc43ee30e0358b Mon Sep 17 00:00:00 2001
From: ljf
Date: Wed, 9 Dec 2020 02:36:39 +0100
Subject: [PATCH 083/128] [fix] Missing mkdir
---
data/hooks/backup/42-conf_ynh_dyndns | 1 +
1 file changed, 1 insertion(+)
diff --git a/data/hooks/backup/42-conf_ynh_dyndns b/data/hooks/backup/42-conf_ynh_dyndns
index 776162ff0..323464108 100644
--- a/data/hooks/backup/42-conf_ynh_dyndns
+++ b/data/hooks/backup/42-conf_ynh_dyndns
@@ -3,6 +3,7 @@
source /usr/share/yunohost/helpers
ynh_abort_if_errors
YNH_CWD="${YNH_BACKUP_DIR%/}/conf/ynh/dyndns"
+mkdir -p $YNH_CWD
cd "$YNH_CWD"
# Backup the configuration
From 5422a49d82d3b580fabf086ea13f1a5f55acb1ac Mon Sep 17 00:00:00 2001
From: Alexandre Aubin
Date: Thu, 10 Dec 2020 17:25:58 +0100
Subject: [PATCH 084/128] We don't care that 'apt-key output should not be
parsed'
---
src/yunohost/hook.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/yunohost/hook.py b/src/yunohost/hook.py
index 22d1ef623..eafcaf825 100644
--- a/src/yunohost/hook.py
+++ b/src/yunohost/hook.py
@@ -331,7 +331,8 @@ def hook_exec(path, args=None, raise_on_error=False, no_trace=False,
r"invalid value for trace file descriptor",
r"Creating config file .* with new version",
r"Created symlink /etc/systemd",
- r"dpkg: warning: while removing .* not empty so not removed"
+ r"dpkg: warning: while removing .* not empty so not removed",
+ r"apt-key output should not be parsed"
]
return all(not re.search(w, msg) for w in irrelevant_warnings)
From 116a15f9f1b7facc4f127243496e862e74459d68 Mon Sep 17 00:00:00 2001
From: "ljf (zamentur)"
Date: Thu, 10 Dec 2020 18:18:09 +0100
Subject: [PATCH 085/128] [fix] Avoid to define the ip on wildcard subdomains
too
---
data/templates/dnsmasq/domain.tpl | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/data/templates/dnsmasq/domain.tpl b/data/templates/dnsmasq/domain.tpl
index f4c8d6c4c..c4bb56d1d 100644
--- a/data/templates/dnsmasq/domain.tpl
+++ b/data/templates/dnsmasq/domain.tpl
@@ -1,8 +1,8 @@
-address=/{{ domain }}/{{ ipv4 }}
-address=/xmpp-upload.{{ domain }}/{{ ipv4 }}
+host-record={{ domain }},{{ ipv4 }}
+host-record=xmpp-upload.{{ domain }},{{ ipv4 }}
{% if ipv6 %}
-address=/{{ domain }}/{{ ipv6 }}
-address=/xmpp-upload.{{ domain }}/{{ ipv6 }}
+host-record={{ domain }},{{ ipv6 }}
+host-record=xmpp-upload.{{ domain }},{{ ipv6 }}
{% endif %}
txt-record={{ domain }},"v=spf1 mx a -all"
mx-host={{ domain }},{{ domain }},5
From c823f5ffd5f3100f0ac936ebb550b3256de4a90b Mon Sep 17 00:00:00 2001
From: Kay0u
Date: Fri, 11 Dec 2020 15:09:37 +0100
Subject: [PATCH 086/128] indent ssow conf
---
src/yunohost/app.py | 5 ++---
src/yunohost/utils/legacy.py | 2 +-
2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/src/yunohost/app.py b/src/yunohost/app.py
index 71aaca316..2ccd026f5 100644
--- a/src/yunohost/app.py
+++ b/src/yunohost/app.py
@@ -1169,7 +1169,7 @@ def app_makedefault(operation_logger, app, domain=None):
ssowat_conf['redirected_urls'][domain + '/'] = app_domain + app_path
- write_to_json('/etc/ssowat/conf.json.persistent', ssowat_conf)
+ write_to_json('/etc/ssowat/conf.json.persistent', ssowat_conf, sort_keys=True, indent=4)
os.system('chmod 644 /etc/ssowat/conf.json.persistent')
logger.success(m18n.n('ssowat_conf_updated'))
@@ -1405,8 +1405,7 @@ def app_ssowatconf():
'permissions': permissions,
}
- with open('/etc/ssowat/conf.json', 'w+') as f:
- json.dump(conf_dict, f, sort_keys=True, indent=4)
+ write_to_json('/etc/ssowat/conf.json', conf_dict, sort_keys=True, indent=4)
from utils.legacy import translate_legacy_rules_in_ssowant_conf_json_persistent
translate_legacy_rules_in_ssowant_conf_json_persistent()
diff --git a/src/yunohost/utils/legacy.py b/src/yunohost/utils/legacy.py
index a90b9fd74..b8b44135d 100644
--- a/src/yunohost/utils/legacy.py
+++ b/src/yunohost/utils/legacy.py
@@ -269,6 +269,6 @@ def translate_legacy_rules_in_ssowant_conf_json_persistent():
"uris": protected_urls + persistent["permissions"].get("custom_protected", {}).get("uris", []),
}
- write_to_json("/etc/ssowat/conf.json.persistent", persistent)
+ write_to_json("/etc/ssowat/conf.json.persistent", persistent, sort_keys=True, indent=4)
logger.warning("Yunohost automatically translated some legacy rules in /etc/ssowat/conf.json.persistent to match the new permission system")
From 401778f68ed738240ef9bcd96567bb3e58bf702a Mon Sep 17 00:00:00 2001
From: Kay0u
Date: Fri, 11 Dec 2020 16:22:29 +0100
Subject: [PATCH 087/128] fix the fixme
---
src/yunohost/app.py | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/yunohost/app.py b/src/yunohost/app.py
index 2ccd026f5..d6c132535 100644
--- a/src/yunohost/app.py
+++ b/src/yunohost/app.py
@@ -1204,8 +1204,7 @@ def app_setting(app, key, value=None, delete=False):
# GET
if value is None and not delete:
- # FIXME FIXME FIXME : what about the main url ...?
- return ','.join(permission['additional_urls']) if permission else None
+ return ','.join(permission['uris'] + permission['additional_urls']) if permission else None
# DELETE
if delete:
From c3e750a97af3919aa8f0222f0ab2326272a55778 Mon Sep 17 00:00:00 2001
From: Kay0u
Date: Fri, 11 Dec 2020 16:29:10 +0100
Subject: [PATCH 088/128] add all_users in protected_urls
---
src/yunohost/utils/legacy.py | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/yunohost/utils/legacy.py b/src/yunohost/utils/legacy.py
index b8b44135d..1cc0246f3 100644
--- a/src/yunohost/utils/legacy.py
+++ b/src/yunohost/utils/legacy.py
@@ -235,6 +235,8 @@ def translate_legacy_rules_in_ssowant_conf_json_persistent():
protected_urls = persistent.get("protected_urls", []) + ["re:" + r for r in persistent.get("protected_regex", [])]
unprotected_urls = persistent.get("unprotected_urls", []) + ["re:" + r for r in persistent.get("unprotected_regex", [])]
+ known_users = user_list()["users"].keys()
+
for legacy_rule in legacy_rules:
if legacy_rule in persistent:
del persistent[legacy_rule]
@@ -261,7 +263,7 @@ def translate_legacy_rules_in_ssowant_conf_json_persistent():
if protected_urls:
persistent["permissions"]['custom_protected'] = {
- "users": [],
+ "users": known_users,
"label": "Custom permissions - protected",
"show_tile": False,
"auth_header": True,
From b767f4b03301a0d976fb6f9bb5e8c17d3e2ba53e Mon Sep 17 00:00:00 2001
From: Kayou
Date: Fri, 11 Dec 2020 17:11:44 +0100
Subject: [PATCH 089/128] fix tests
---
debian/control | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/debian/control b/debian/control
index 50772f3f7..bfea80ccd 100644
--- a/debian/control
+++ b/debian/control
@@ -11,7 +11,7 @@ Package: yunohost
Essential: yes
Architecture: all
Depends: ${python:Depends}, ${misc:Depends}
- , moulinette (>= 4.1), ssowat (>= 4.0)
+ , moulinette (>= 4.1.0.1), ssowat (>= 4.0)
, python-psutil, python-requests, python-dnspython, python-openssl
, python-miniupnpc, python-dbus, python-jinja2
, python-toml, python-packaging, python-publicsuffix
From c5d06af20e97e5939bb338ca81e6739e32ae943d Mon Sep 17 00:00:00 2001
From: Alexandre Aubin
Date: Fri, 11 Dec 2020 20:40:45 +0100
Subject: [PATCH 090/128] Guess what ... If people manually tweaked their
nginx.conf to enable gzip globally, this will break cert renewal ..
---
data/templates/nginx/plain/acme-challenge.conf.inc | 1 +
1 file changed, 1 insertion(+)
diff --git a/data/templates/nginx/plain/acme-challenge.conf.inc b/data/templates/nginx/plain/acme-challenge.conf.inc
index aae3e0eb3..35c4b80c2 100644
--- a/data/templates/nginx/plain/acme-challenge.conf.inc
+++ b/data/templates/nginx/plain/acme-challenge.conf.inc
@@ -2,4 +2,5 @@ location ^~ '/.well-known/acme-challenge/'
{
default_type "text/plain";
alias /tmp/acme-challenge-public/;
+ gzip off;
}
From 11fe9d7e025248302177b08fafcd73080350153b Mon Sep 17 00:00:00 2001
From: "ljf (zamentur)"
Date: Tue, 15 Dec 2020 22:08:49 +0100
Subject: [PATCH 091/128] [fix] Accept all kind of relay even the unencrypted
---
data/templates/postfix/main.cf | 4 ----
1 file changed, 4 deletions(-)
diff --git a/data/templates/postfix/main.cf b/data/templates/postfix/main.cf
index 6a1029b71..13781881f 100644
--- a/data/templates/postfix/main.cf
+++ b/data/templates/postfix/main.cf
@@ -53,12 +53,8 @@ smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_tls_loglevel=1
# -- TLS for outgoing connections
-{% if relay_host != "" %}
-smtp_tls_security_level = encrypt
-{% else %}
# Use TLS if this is supported by the remote SMTP server, otherwise use plaintext.
smtp_tls_security_level = may
-{% endif %}
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_tls_exclude_ciphers = aNULL, MD5, DES, ADH, RC4, 3DES
smtp_tls_mandatory_ciphers= high
From 8cab56787ea632d01d7fa25d324436b3eac310f3 Mon Sep 17 00:00:00 2001
From: Kay0u
Date: Thu, 17 Dec 2020 16:06:45 +0100
Subject: [PATCH 092/128] handle change php version
---
data/helpers.d/php | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/data/helpers.d/php b/data/helpers.d/php
index 95cc15402..343529d7a 100644
--- a/data/helpers.d/php
+++ b/data/helpers.d/php
@@ -85,6 +85,19 @@ ynh_add_fpm_config () {
# Set the default PHP-FPM version by default
phpversion="${phpversion:-$YNH_PHP_VERSION}"
+ local old_phpversion=$(ynh_app_setting_get --app=$app --key=phpversion)
+
+ # If the PHP version changed, remove the old fpm conf
+ if [ -n "$old_phpversion" ] && [ "$old_phpversion" != "$phpversion" ]
+ then
+ local old_php_fpm_config_dir=$(ynh_app_setting_get --app=$app --key=fpm_config_dir)
+ local old_php_finalphpconf="$old_php_fpm_config_dir/pool.d/$app.conf"
+
+ ynh_backup_if_checksum_is_different --file="$old_php_finalphpconf"
+
+ ynh_remove_fpm_config
+ fi
+
# If the requested PHP version is not the default version for YunoHost
if [ "$phpversion" != "$YNH_DEFAULT_PHP_VERSION" ]
then
@@ -278,7 +291,7 @@ ynh_remove_fpm_config () {
local dedicated_service=$(ynh_app_setting_get --app=$app --key=fpm_dedicated_service)
dedicated_service=${dedicated_service:-0}
# Get the version of PHP used by this app
- local phpversion=$(ynh_app_setting_get $app phpversion)
+ local phpversion=$(ynh_app_setting_get --app=$app --key=phpversion)
# Assume default PHP-FPM version by default
phpversion="${phpversion:-$YNH_DEFAULT_PHP_VERSION}"
@@ -377,7 +390,7 @@ ynh_install_php () {
# Requires YunoHost version 3.8.1 or higher.
ynh_remove_php () {
# Get the version of PHP used by this app
- local phpversion=$(ynh_app_setting_get $app phpversion)
+ local phpversion=$(ynh_app_setting_get --app=$app --key=phpversion)
if [ "$phpversion" == "$YNH_DEFAULT_PHP_VERSION" ] || [ -z "$phpversion" ]
then
From fc1160f242b59aa01ed66e01e289a1e9d629a89f Mon Sep 17 00:00:00 2001
From: Kayou
Date: Thu, 17 Dec 2020 18:45:31 +0100
Subject: [PATCH 093/128] fix version number in tests
---
.gitlab/ci/build.gitlab-ci.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.gitlab/ci/build.gitlab-ci.yml b/.gitlab/ci/build.gitlab-ci.yml
index d2dbbaa80..717a5ee73 100644
--- a/.gitlab/ci/build.gitlab-ci.yml
+++ b/.gitlab/ci/build.gitlab-ci.yml
@@ -38,7 +38,7 @@ build-ssowat:
variables:
PACKAGE: "ssowat"
script:
- - DEBIAN_DEPENDS=$(cat debian/control | tr "," "\n" | grep -Po "ssowat \([>,=,<]+ .*\)" | grep -Po "[0-9]+([.][0-9]+)?" | head -n 1)
+ - DEBIAN_DEPENDS=$(cat debian/control | tr "," "\n" | grep -Po "ssowat \([>,=,<]+ .*\)" | grep -Po "[0-9\.]+")
- git clone $YNH_SOURCE/$PACKAGE -b $CI_COMMIT_REF_NAME $YNH_BUILD_DIR/$PACKAGE --depth 1 || git clone $YNH_SOURCE/$PACKAGE -b $DEBIAN_DEPENDS $YNH_BUILD_DIR/$PACKAGE --depth 1 || git clone $YNH_SOURCE/$PACKAGE $YNH_BUILD_DIR/$PACKAGE --depth 1
- DEBIAN_FRONTEND=noninteractive apt --assume-yes -o Dpkg::Options::="--force-confold" build-dep $(pwd)/$YNH_BUILD_DIR/$PACKAGE
- *build_script
@@ -48,7 +48,7 @@ build-moulinette:
variables:
PACKAGE: "moulinette"
script:
- - DEBIAN_DEPENDS=$(cat debian/control | tr "," "\n" | grep -Po "moulinette \([>,=,<]+ .*\)" | grep -Po "[0-9]+([.][0-9]+)?" | head -n 1)
+ - DEBIAN_DEPENDS=$(cat debian/control | tr "," "\n" | grep -Po "moulinette \([>,=,<]+ .*\)" | grep -Po "[0-9\.]+")
- git clone $YNH_SOURCE/$PACKAGE -b $CI_COMMIT_REF_NAME $YNH_BUILD_DIR/$PACKAGE --depth 1 || git clone $YNH_SOURCE/$PACKAGE -b $DEBIAN_DEPENDS $YNH_BUILD_DIR/$PACKAGE --depth 1 || git clone $YNH_SOURCE/$PACKAGE $YNH_BUILD_DIR/$PACKAGE --depth 1
- DEBIAN_FRONTEND=noninteractive apt --assume-yes -o Dpkg::Options::="--force-confold" build-dep $(pwd)/$YNH_BUILD_DIR/$PACKAGE
- *build_script
From 4f1ea2405d28a5166593f0e99f6e87570317515a Mon Sep 17 00:00:00 2001
From: Kayou
Date: Fri, 18 Dec 2020 15:11:37 +0100
Subject: [PATCH 094/128] fix my mess
---
src/yunohost/app.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/yunohost/app.py b/src/yunohost/app.py
index d6c132535..d32fb59a2 100644
--- a/src/yunohost/app.py
+++ b/src/yunohost/app.py
@@ -1204,7 +1204,7 @@ def app_setting(app, key, value=None, delete=False):
# GET
if value is None and not delete:
- return ','.join(permission['uris'] + permission['additional_urls']) if permission else None
+ return ','.join(permission.get('uris', []) + permission['additional_urls']) if permission else None
# DELETE
if delete:
From ff5d8ebd61c5aa2d0ab25f9723f2fc1c2c5b7005 Mon Sep 17 00:00:00 2001
From: Alexandre Aubin
Date: Fri, 18 Dec 2020 15:29:52 +0100
Subject: [PATCH 095/128] Missing ;, probably
---
data/helpers.d/php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/data/helpers.d/php b/data/helpers.d/php
index 343529d7a..8bb82b5c2 100644
--- a/data/helpers.d/php
+++ b/data/helpers.d/php
@@ -274,7 +274,7 @@ WantedBy=multi-user.target
&& ynh_systemd_action --service_name=$fpm_service --action=reload \
|| { php-fpm${phpversion} --test || true;
ynh_secure_remove --file="$finalphpconf";
- ynh_die --message="The new configuration broke php-fpm?"
+ ynh_die --message="The new configuration broke php-fpm?";
}
ynh_systemd_action --service_name=$fpm_service --action=reload
fi
From 58dcf45bd904380cfeeba8efbc49ed1cb735ede1 Mon Sep 17 00:00:00 2001
From: Kay0u
Date: Fri, 18 Dec 2020 16:55:39 +0100
Subject: [PATCH 096/128] do not reload php7.3 too fast
---
data/helpers.d/php | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/data/helpers.d/php b/data/helpers.d/php
index 8bb82b5c2..bd5608594 100644
--- a/data/helpers.d/php
+++ b/data/helpers.d/php
@@ -270,12 +270,12 @@ WantedBy=multi-user.target
ynh_systemd_action --service_name=$fpm_service --action=restart
else
# Validate that the new php conf doesn't break php-fpm entirely
- php-fpm${phpversion} --test 2>/dev/null \
- && ynh_systemd_action --service_name=$fpm_service --action=reload \
- || { php-fpm${phpversion} --test || true;
- ynh_secure_remove --file="$finalphpconf";
- ynh_die --message="The new configuration broke php-fpm?";
- }
+ if ! php-fpm${phpversion} --test 2>/dev/null
+ then
+ php-fpm${phpversion} --test || true;
+ ynh_secure_remove --file="$finalphpconf";
+ ynh_die --message="The new configuration broke php-fpm?";
+ fi
ynh_systemd_action --service_name=$fpm_service --action=reload
fi
}
From b7c43df661cdc87f32cd424c8315b1d2ffe82378 Mon Sep 17 00:00:00 2001
From: Kay0u
Date: Fri, 18 Dec 2020 17:03:51 +0100
Subject: [PATCH 097/128] no more ;
---
data/helpers.d/php | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/data/helpers.d/php b/data/helpers.d/php
index bd5608594..a2caf5387 100644
--- a/data/helpers.d/php
+++ b/data/helpers.d/php
@@ -272,9 +272,9 @@ WantedBy=multi-user.target
# Validate that the new php conf doesn't break php-fpm entirely
if ! php-fpm${phpversion} --test 2>/dev/null
then
- php-fpm${phpversion} --test || true;
- ynh_secure_remove --file="$finalphpconf";
- ynh_die --message="The new configuration broke php-fpm?";
+ php-fpm${phpversion} --test || true
+ ynh_secure_remove --file="$finalphpconf"
+ ynh_die --message="The new configuration broke php-fpm?"
fi
ynh_systemd_action --service_name=$fpm_service --action=reload
fi
From f9143d531f3623726e8cc364aa5ac366188d5300 Mon Sep 17 00:00:00 2001
From: Alexandre Aubin
Date: Fri, 18 Dec 2020 17:53:05 +0100
Subject: [PATCH 098/128] Fix a small issue where metadata could be None
(because of empty yaml maybe?)
---
src/yunohost/log.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/yunohost/log.py b/src/yunohost/log.py
index 11b9034c6..cf108b989 100644
--- a/src/yunohost/log.py
+++ b/src/yunohost/log.py
@@ -89,14 +89,14 @@ def log_list(limit=None, with_details=False, with_suboperations=False):
pass
try:
- metadata = read_yaml(md_path)
+ metadata = read_yaml(md_path) or {} # Making sure this is a dict and not None..?
except Exception as e:
# If we can't read the yaml for some reason, report an error and ignore this entry...
logger.error(m18n.n('log_corrupted_md_file', md_file=md_path, error=e))
continue
if with_details:
- entry["success"] = metadata.get("success", "?") if metadata else "?"
+ entry["success"] = metadata.get("success", "?")
entry["parent"] = metadata.get("parent")
if with_suboperations:
From 0c98fd0c7e9b1035ce563cc31ab95680312ec95a Mon Sep 17 00:00:00 2001
From: Eric COURTEAU
Date: Fri, 4 Dec 2020 10:16:12 +0000
Subject: [PATCH 099/128] Translated using Weblate (French)
Currently translated at 100.0% (630 of 630 strings)
Translation: YunoHost/core
Translate-URL: https://translate.yunohost.org/projects/yunohost/core/fr/
---
locales/fr.json | 21 ++++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/locales/fr.json b/locales/fr.json
index 6276ff6df..ea7228e41 100644
--- a/locales/fr.json
+++ b/locales/fr.json
@@ -129,7 +129,7 @@
"service_removed": "Le service « {service:s} » a été supprimé",
"service_start_failed": "Impossible de démarrer le service '{service:s}'\n\nJournaux historisés récents : {logs:s}",
"service_started": "Le service « {service:s} » a été démarré",
- "service_stop_failed": "Impossible d’arrêter le service '{service:s}'\n\nJournaux historisés récents : {logs:s}",
+ "service_stop_failed": "Impossible d’arrêter le service '{service:s}'\n\nJournaux récents de service : {logs:s}",
"service_stopped": "Le service « {service:s} » a été arrêté",
"service_unknown": "Le service '{service:s}' est inconnu",
"ssowat_conf_generated": "La configuration de SSOwat a été regénérée",
@@ -252,7 +252,7 @@
"app_upgrade_some_app_failed": "Certaines applications n’ont pas été mises à jour",
"dyndns_could_not_check_provide": "Impossible de vérifier si {provider:s} peut fournir {domain:s}.",
"dyndns_domain_not_provided": "Le fournisseur DynDNS {provider:s} ne peut pas fournir le domaine {domain:s}.",
- "app_make_default_location_already_used": "Impossible de configurer l’application '{app}' par défaut pour le domaine '{domain}' car il est déjà utilisé par l’application '{other_app}'",
+ "app_make_default_location_already_used": "Impossible de configurer l’application '{app}' par défaut pour le domaine '{domain}' car il est déjà utilisé par l'application '{other_app}'",
"app_upgrade_app_name": "Mise à jour de {app}...",
"backup_output_symlink_dir_broken": "Votre répertoire d’archivage '{path:s}' est un lien symbolique brisé. Peut-être avez-vous oublié de re/monter ou de brancher le support de stockage sur lequel il pointe.",
"migrations_list_conflict_pending_done": "Vous ne pouvez pas utiliser --previous et --done simultanément.",
@@ -404,7 +404,7 @@
"dpkg_lock_not_available": "Cette commande ne peut pas être exécutée pour le moment car un autre programme semble utiliser le verrou de dpkg (le gestionnaire de package système)",
"tools_upgrade_cant_unhold_critical_packages": "Impossible d'enlever le drapeau 'hold' pour les paquets critiques…",
"tools_upgrade_special_packages_explanation": "La mise à niveau spécifique à YunoHost se poursuivra en arrière-plan. Veuillez ne pas lancer d'autres actions sur votre serveur pendant les 10 prochaines minutes (selon la vitesse du matériel). Après cela, vous devrez peut-être vous reconnecter à l'administrateur Web. Le journal de mise à niveau sera disponible dans Outils → Journal (dans le webadmin) ou en utilisant la « liste des journaux yunohost » (à partir de la ligne de commande).",
- "update_apt_cache_failed": "Impossible de mettre à jour le cache APT (gestionnaire de paquets Debian). Voici un extrait du fichier sources.list qui pourrait vous aider à identifier les lignes problématiques :\n{sourceslist}",
+ "update_apt_cache_failed": "Impossible de mettre à jour le cache APT (gestionnaire de paquets Debian). Voici un extrait du fichier sources.list qui pourrait vous aider à identifier les lignes problématiques :\n{sourceslist}\n{sourceslist}",
"update_apt_cache_warning": "Des erreurs se sont produites lors de la mise à jour du cache APT (gestionnaire de paquets Debian). Voici un extrait des lignes du fichier sources.list qui pourrait vous aider à identifier les lignes problématiques :\n{sourceslist}",
"backup_permission": "Permission de sauvegarde pour {app:s}",
"group_created": "Le groupe '{group}' a été créé",
@@ -419,7 +419,7 @@
"mailbox_disabled": "La boîte aux lettres est désactivée pour l’utilisateur {user:s}",
"app_action_broke_system": "Cette action semble avoir cassé des services importants : {services}",
"apps_already_up_to_date": "Toutes les applications sont déjà à jour",
- "migration_0011_create_group": "Création d’un groupe pour chaque utilisateur…",
+ "migration_0011_create_group": "Création d'un groupe pour chaque utilisateur…",
"migration_0011_done": "Migration terminée. Vous êtes maintenant en mesure de gérer des groupes d’utilisateurs.",
"migrations_must_provide_explicit_targets": "Vous devez fournir des cibles explicites lorsque vous utilisez '--skip' ou '--force-rerun'",
"migrations_no_such_migration": "Il n’y a pas de migration appelée '{id}'",
@@ -649,8 +649,8 @@
"global_settings_setting_backup_compress_tar_archives": "Compresser les archives (.tar.gz) au lieu des archives non-compressées lors de la création des backups. N.B. : activer cette option permet d'obtenir des sauvegardes plus légères, mais leur création sera significativement plus longue et plus gourmande en CPU.",
"migration_description_0018_xtable_to_nftable": "Migrer les anciennes règles de trafic réseau vers le nouveau système basé sur nftables",
"service_description_php7.3-fpm": "Exécute les applications écrites en PHP avec NGINX",
- "migration_0018_failed_to_reset_legacy_rules": "La réinitialisation des règles iptable legacy a échoué :",
- "migration_0018_failed_to_migrate_iptables_rules": "Échec de la migration des anciennes règles iptables vers nftables : {error}",
+ "migration_0018_failed_to_reset_legacy_rules": "La réinitialisation des règles iptable par défaut a échoué : {error}",
+ "migration_0018_failed_to_migrate_iptables_rules": "La migration des règles iptables héritées vers nftables a échoué: {error}",
"migration_0017_not_enough_space": "Laissez suffisamment d'espace disponible dans {path} avant de lancer la migration.",
"migration_0017_postgresql_11_not_installed": "PostgreSQL 9.6 est installé mais pas posgreSQL 11 ? Il s'est sans doute passé quelque chose d'étrange sur votre système :(...",
"migration_0017_postgresql_96_not_installed": "PostgreSQL n'a pas été installé sur votre système. Aucune opération à effectuer.",
@@ -669,8 +669,8 @@
"diagnosis_package_installed_from_sury_details": "Certains paquets ont été installés par inadvertance à partir d'un dépôt tiers appelé Sury. L'équipe YunoHost a amélioré la stratégie de gestion de ces paquets, mais on s'attend à ce que certaines configurations qui ont installé des applications PHP7.3 tout en étant toujours sur Stretch présentent des incohérences. Pour résoudre cette situation, vous devez essayer d'exécuter la commande suivante : {cmd_to_fix} ",
"app_argument_password_no_default": "Erreur lors de l'analyse de l'argument de mot de passe '{name}' : l'argument de mot de passe ne peut pas avoir de valeur par défaut pour des raisons de sécurité",
"pattern_email_forward": "Il doit s'agir d'une adresse électronique valide, le symbole '+' étant accepté (par exemples : johndoe@exemple.com ou bien johndoe+yunohost@exemple.com)",
- "global_settings_setting_smtp_relay_password": "Mot de passe SMTP du serveur de courrier électronique",
- "diagnosis_package_installed_from_sury": "Certains paquets du système devraient être rétrograder vers une version moins récente",
+ "global_settings_setting_smtp_relay_password": "Mot de passe du relais de l'hôte SMTP",
+ "diagnosis_package_installed_from_sury": "Des paquets du système devraient être rétrogradé de version",
"additional_urls_already_added": "URL supplémentaire '{url:s}' déjà ajoutée pour la permission '{permission:s}'",
"unknown_main_domain_path": "Domaine ou chemin inconnu pour '{app}'. Vous devez spécifier un domaine et un chemin pour pouvoir spécifier une URL pour l'autorisation.",
"show_tile_cant_be_enabled_for_regex": "Vous ne pouvez pas activer 'show_tile' pour le moment, car l'URL de l'autorisation '{permission}' est une expression régulière",
@@ -687,5 +687,8 @@
"invalid_regex": "Regex non valide : '{regex:s}'",
"domain_name_unknown": "Domaine '{domain}' inconnu",
"app_label_deprecated": "Cette commande est obsolète ! Veuillez utiliser la nouvelle commande 'yunohost user permission update' pour gérer l'étiquette de l'application.",
- "additional_urls_already_removed": "URL supplémentaire '{url:s}' déjà supprimée pour la permission '{permission:s}'"
+ "additional_urls_already_removed": "URL supplémentaire '{url:s}' déjà supprimée pour la permission '{permission:s}'",
+ "migration_0019_rollback_success": "Retour à l'état antérieur du système.",
+ "invalid_number": "Doit être un nombre",
+ "migration_description_0019_extend_permissions_features": "Étendre et retravailler le système de gestion des permissions applicatives"
}
From 3608af5912f1505423d79976a33da6e48bb7d07f Mon Sep 17 00:00:00 2001
From: Flavio Cristoforetti
Date: Mon, 7 Dec 2020 16:26:32 +0000
Subject: [PATCH 100/128] Translated using Weblate (Italian)
Currently translated at 41.5% (262 of 630 strings)
Translation: YunoHost/core
Translate-URL: https://translate.yunohost.org/projects/yunohost/core/it/
---
locales/it.json | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/locales/it.json b/locales/it.json
index e70f00a37..892f6e738 100644
--- a/locales/it.json
+++ b/locales/it.json
@@ -412,5 +412,23 @@
"diagnosis_failed_for_category": "Diagnosi fallita per la categoria '{category}:{error}",
"diagnosis_display_tip": "Per vedere i problemi rilevati, puoi andare alla sezione Diagnosi del amministratore, o eseguire 'yunohost diagnosis show --issues' dalla riga di comando.",
"diagnosis_package_installed_from_sury_details": "Alcuni pacchetti sono stati inavvertitamente installati da un repository di terze parti chiamato Sury. Il team di Yunohost ha migliorato la gestione di tali pacchetti, ma ci si aspetta che alcuni setup di app PHP7.3 abbiano delle incompatibilità anche se sono ancora in Stretch. Per sistemare questa situazione, dovresti provare a lanciare il seguente comando: {cmd_to_fix} ",
- "diagnosis_package_installed_from_sury": "Alcuni pacchetti di sistema dovrebbero fare il downgrade"
+ "diagnosis_package_installed_from_sury": "Alcuni pacchetti di sistema dovrebbero fare il downgrade",
+ "diagnosis_mail_ehlo_bad_answer": "Un servizio diverso da SMTP ha risposto sulla porta 25 su IPv{ipversion}",
+ "diagnosis_mail_ehlo_unreachable_details": "Impossibile aprire una connessione sulla porta 25 sul tuo server su IPv{ipversion}. Sembra irraggiungibile.
1. La causa più probabile di questo problema è la porta 25 non correttamente inoltrata al tuo server.
2. Dovresti esser sicuro che il servizio postfix sia attivo.
3. Su setup complessi: assicuratu che nessun firewall o reverse-proxy stia interferendo.",
+ "diagnosis_mail_ehlo_unreachable": "Il server SMTP non è raggiungibile dall'esterno su IPv{ipversion}. Non potrà ricevere email.",
+ "diagnosis_mail_ehlo_ok": "Il server SMTP è raggiungibile dall'esterno e quindi può ricevere email!",
+ "diagnosis_mail_outgoing_port_25_blocked_relay_vpn": "Alcuni provider non ti permettono di aprire la porta 25 in uscita perché non gli importa della Net Neutrality.
- Alcuni mettono a disposizione un alternativa attraverso un mail server relay anche se implica che il relay ha la capacità di leggere il vostro traffico email.
- Un alternativa privacy-friendly è quella di usare una VPN *con un indirizzo IP pubblico dedicato* per bypassare questo tipo di limite. Vedi https://yunohost.org/#/vpn_advantage
- Puoi anche prendere in considerazione di cambiare per un provider pro Net Neutrality",
+ "diagnosis_mail_outgoing_port_25_blocked_details": "Come prima cosa dovresti sbloccare la porta 25 in uscita dall'interfaccia del tuo router internet o del tuo hosting provider. (Alcuni hosting provider potrebbero richiedere l'invio di un ticket di supporto per la richiesta).",
+ "diagnosis_mail_outgoing_port_25_blocked": "Il server SMTP non può inviare email ad altri server perché la porta 25 è bloccata in uscita su IPv{ipversion}.",
+ "diagnosis_mail_outgoing_port_25_ok": "Il server SMTP è abile all'invio delle email (porta 25 in uscita non bloccata).",
+ "diagnosis_swap_tip": "Attenzione. Sii consapevole che se il server ha lo swap su di una memoria SD o un disco SSD, potrebbe drasticamente ridurre la durata di vita del dispositivo.",
+ "diagnosis_swap_ok": "Il sistema ha {total} di memoria swap!",
+ "diagnosis_swap_notsomuch": "Il sistema ha solo {total} di swap. Dovresti considerare almeno di aggiungere {recommended} di memoria swap per evitare situazioni dove il sistema esaurisce la memoria.",
+ "diagnosis_swap_none": "Il sistema non ha lo swap. Dovresti considerare almeno di aggiungere {recommended} di memoria swap per evitare situazioni dove il sistema esaurisce la memoria.",
+ "diagnosis_ram_ok": "Il sistema ha ancora {available} ({available_percent}%) di RAM disponibile su {total}.",
+ "diagnosis_ram_low": "Il sistema ha solo {available} ({available_percent}%) di RAM disponibile (su {total}). Fa attenzione.",
+ "diagnosis_ram_verylow": "Il sistema ha solo {available} ({available_percent}%) di RAM disponibile (su {total})",
+ "diagnosis_diskusage_ok": "Lo storage {mountpoint}
(nel device {device}
ha solo {free} ({free_percent}%) di spazio libero rimanente (su {total})!",
+ "diagnosis_diskusage_low": "Lo storage {mountpoint}
(nel device {device}
ha solo {free} ({free_percent}%) di spazio libero rimanente (su {total}). Fa attenzione.",
+ "diagnosis_diskusage_verylow": "Lo storage {mountpoint}
(nel device {device}
ha solo {free} ({free_percent}%) di spazio libero rimanente (su {total}). Dovresti seriamente considerare di fare un po' di pulizia!"
}
From 1044e826556fa686e9cdd6a91816448b8ecaf931 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Quent=C3=AD?=
Date: Wed, 9 Dec 2020 16:35:27 +0000
Subject: [PATCH 101/128] Translated using Weblate (Occitan)
Currently translated at 54.2% (342 of 630 strings)
Translation: YunoHost/core
Translate-URL: https://translate.yunohost.org/projects/yunohost/core/oc/
---
locales/oc.json | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/locales/oc.json b/locales/oc.json
index 1ef8348bd..17201fefe 100644
--- a/locales/oc.json
+++ b/locales/oc.json
@@ -590,5 +590,8 @@
"app_manifest_install_ask_password": "Causissètz lo senhal administrator per aquesta aplicacion",
"app_manifest_install_ask_path": "Causissètz lo camin ont volètz installar aquesta aplicacion",
"app_manifest_install_ask_domain": "Causissètz lo domeni ont volètz installar aquesta aplicacion",
- "app_argument_password_no_default": "Error pendent l’analisi de l’argument del senhal « {name} » : l’argument de senhal pòt pas aver de valor per defaut per de rason de seguretat"
+ "app_argument_password_no_default": "Error pendent l’analisi de l’argument del senhal « {name} » : l’argument de senhal pòt pas aver de valor per defaut per de rason de seguretat",
+ "app_label_deprecated": "Aquesta comanda es estada renduda obsolèta. Mercés d'utilizar lo nòva \"yunohost user permission update\" per gerir letiquetada de l'aplication",
+ "additional_urls_already_removed": "URL addicionala {url:s} es ja estada elimida per la permission «#permission:s»",
+ "additional_urls_already_added": "URL addicionadal «{url:s}'» es ja estada aponduda per la permission «{permission:s}»"
}
From 9fb7684e0ffc2f912c30cbfa4fba9f7af16aa118 Mon Sep 17 00:00:00 2001
From: Flavio Cristoforetti
Date: Fri, 11 Dec 2020 11:33:43 +0000
Subject: [PATCH 102/128] Translated using Weblate (Italian)
Currently translated at 53.1% (335 of 630 strings)
Translation: YunoHost/core
Translate-URL: https://translate.yunohost.org/projects/yunohost/core/it/
---
locales/it.json | 99 ++++++++++++++++++++++++++-----------------------
1 file changed, 53 insertions(+), 46 deletions(-)
diff --git a/locales/it.json b/locales/it.json
index 892f6e738..085bd506a 100644
--- a/locales/it.json
+++ b/locales/it.json
@@ -9,8 +9,8 @@
"backup_created": "Backup completo",
"backup_invalid_archive": "Archivio di backup non valido",
"backup_output_directory_not_empty": "Dovresti scegliere una cartella di output vuota",
- "domain_created": "Il dominio è stato creato",
- "domain_exists": "Il dominio è già esistente",
+ "domain_created": "Dominio creato",
+ "domain_exists": "Il dominio esiste già",
"ldap_initialized": "LDAP è stato inizializzato",
"pattern_email": "L'indirizzo email deve essere valido (es. someone@domain.org)",
"pattern_mailbox_quota": "La dimensione deve avere un suffisso b/k/M/G/T o 0 per disattivare la quota",
@@ -23,7 +23,7 @@
"service_stop_failed": "Impossibile fermare il servizio '{service:s}'\n\nRegistri di servizio recenti:{logs:s}",
"system_username_exists": "il nome utente esiste già negli utenti del sistema",
"unrestore_app": "L'applicazione '{app:s}' non verrà ripristinata",
- "upgrading_packages": "Aggiornamento dei pacchetti…",
+ "upgrading_packages": "Aggiornamento dei pacchetti...",
"user_deleted": "L'utente è stato cancellato",
"admin_password": "Password dell'amministrazione",
"admin_password_change_failed": "Impossibile cambiare la password",
@@ -63,34 +63,34 @@
"backup_output_directory_required": "Devi fornire una directory di output per il backup",
"backup_running_hooks": "Esecuzione degli hook di backup…",
"custom_app_url_required": "Devi fornire un URL per essere in grado di aggiornare l'applicazione personalizzata {app:s}",
- "domain_creation_failed": "Impossibile creare un dominio",
- "domain_deleted": "Il dominio è stato cancellato",
- "domain_deletion_failed": "Impossibile cancellare il dominio",
+ "domain_creation_failed": "Impossibile creare il dominio {domain}: {error}",
+ "domain_deleted": "Dominio cancellato",
+ "domain_deletion_failed": "Impossibile cancellare il dominio {domain}: {error}",
"domain_dyndns_already_subscribed": "Hai già sottoscritto un dominio DynDNS",
"domain_dyndns_root_unknown": "Dominio radice DynDNS sconosciuto",
"domain_hostname_failed": "La definizione del nuovo hostname è fallita",
- "domain_uninstall_app_first": "Una o più applicazioni sono installate su questo dominio. Disinstalla loro prima di procedere alla cancellazione di un dominio",
+ "domain_uninstall_app_first": "Queste applicazioni sono già installate su questo dominio: {apps}. Disinstallale prima di procedere alla cancellazione di un dominio",
"domain_unknown": "Dominio sconosciuto",
"done": "Terminato",
"domains_available": "Domini disponibili:",
"downloading": "Scaricamento…",
- "dyndns_cron_installed": "Il cronjob DynDNS è stato installato",
- "dyndns_cron_remove_failed": "Impossibile rimuovere il cronjob DynDNS",
- "dyndns_cron_removed": "Il cronjob DynDNS è stato rimosso",
+ "dyndns_cron_installed": "Cronjob DynDNS creato",
+ "dyndns_cron_remove_failed": "Impossibile rimuovere il cronjob DynDNS perchè: {error}",
+ "dyndns_cron_removed": "Cronjob DynDNS rimosso",
"dyndns_ip_update_failed": "Impossibile aggiornare l'indirizzo IP in DynDNS",
- "dyndns_ip_updated": "Il tuo indirizzo IP è stato aggiornato in DynDNS",
- "dyndns_key_generating": "Si sta generando la chiave DNS, potrebbe richiedere del tempo…",
+ "dyndns_ip_updated": "Il tuo indirizzo IP è stato aggiornato su DynDNS",
+ "dyndns_key_generating": "Generando la chiave DNS... Potrebbe richiedere del tempo.",
"dyndns_key_not_found": "La chiave DNS non è stata trovata per il dominio",
- "dyndns_no_domain_registered": "Nessuno dominio è stato registrato con DynDNS",
- "dyndns_registered": "Il dominio DynDNS è stato registrato",
+ "dyndns_no_domain_registered": "Nessuno dominio registrato con DynDNS",
+ "dyndns_registered": "Dominio DynDNS registrato",
"dyndns_registration_failed": "Non è possibile registrare il dominio DynDNS: {error:s}",
- "dyndns_unavailable": "Dominio {domain:s} non disponibile.",
+ "dyndns_unavailable": "Il dominio {domain:s} non disponibile.",
"executing_command": "Esecuzione del comando '{command:s}'…",
"executing_script": "Esecuzione dello script '{script:s}'…",
- "extracting": "Estrazione…",
+ "extracting": "Estrazione...",
"field_invalid": "Campo '{:s}' non valido",
"firewall_reload_failed": "Impossibile ricaricare il firewall",
- "firewall_reloaded": "Il firewall è stato ricaricato",
+ "firewall_reloaded": "Firewall ricaricato",
"firewall_rules_cmd_failed": "Alcune regole del firewall sono fallite. Per ulteriori informazioni, vedi il registro.",
"hook_exec_failed": "L'esecuzione dello script è fallita: {path:s}",
"hook_exec_not_terminated": "L'esecuzione dello script non è stata terminata: {path:s}",
@@ -128,7 +128,7 @@
"user_update_failed": "Impossibile aggiornare l'utente",
"restore_hook_unavailable": "Lo script di ripristino per '{part:s}' non è disponibile per il tuo sistema e non è nemmeno nell'archivio",
"restore_nothings_done": "Non è stato ripristinato nulla",
- "restore_running_app_script": "Esecuzione dello script di ripristino dell'applicazione '{app:s}'…",
+ "restore_running_app_script": "Ripristino dell'app '{app:s}'…",
"restore_running_hooks": "Esecuzione degli hook di ripristino…",
"service_added": "Il servizio '{service:s}' è stato aggiunto",
"service_already_started": "Il servizio '{service:s}' è già stato avviato",
@@ -146,7 +146,7 @@
"unbackup_app": "L'applicazione '{app:s}' non verrà salvata",
"unexpected_error": "Un'errore inaspettata si è verificata",
"unlimit": "Nessuna quota",
- "updating_apt_cache": "Recupero degli aggiornamenti disponibili per i pacchetti di sistema…",
+ "updating_apt_cache": "Recupero degli aggiornamenti disponibili per i pacchetti di sistema...",
"upgrade_complete": "Aggiornamento completo",
"upnp_dev_not_found": "Nessuno supporto UPnP trovato",
"upnp_disabled": "UPnP è stato disattivato",
@@ -161,7 +161,7 @@
"yunohost_already_installed": "YunoHost è già installato",
"yunohost_ca_creation_failed": "Impossibile creare una certificate authority",
"yunohost_configured": "YunoHost è stato configurato",
- "yunohost_installing": "Installazione di YunoHost…",
+ "yunohost_installing": "Installazione di YunoHost...",
"yunohost_not_installed": "YunoHost non è o non corretamente installato. Esegui 'yunohost tools postinstall'",
"domain_cert_gen_failed": "Impossibile generare il certificato",
"certmanager_attempt_to_replace_valid_cert": "Stai provando a sovrascrivere un certificato buono e valido per il dominio {domain:s}! (Usa --force per ignorare)",
@@ -232,7 +232,7 @@
"password_too_simple_3": "La password deve essere lunga almeno 8 caratteri e contenere numeri, maiuscole e minuscole e simboli",
"password_too_simple_4": "La password deve essere lunga almeno 12 caratteri e contenere numeri, maiuscole e minuscole",
"users_available": "Utenti disponibili:",
- "yunohost_ca_creation_success": "L'autorità di certificazione locale è stata creata.",
+ "yunohost_ca_creation_success": "Autorità di certificazione locale creata.",
"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:s}' è un link simbolico interrotto. Probabilmente hai dimenticato di montare o montare nuovamente il supporto al quale punta il link.",
"certmanager_conflicting_nginx_file": "Impossibile preparare il dominio per il controllo ACME: il file di configurazione nginx {filepath:s} è in conflitto e dovrebbe essere prima rimosso",
@@ -247,47 +247,47 @@
"confirm_app_install_warning": "Attenzione: Questa applicazione potrebbe funzionare, ma non è ben integrata in YunoHost. Alcune funzionalità come il single sign-on e il backup/ripristino potrebbero non essere disponibili. Installare comunque? [{answers:s}] ",
"confirm_app_install_danger": "ATTENZIONE! Questa applicazione è ancora sperimentale (se non esplicitamente dichiarata non funzionante)! Probabilmente NON dovresti installarla a meno che tu non sappia cosa stai facendo. NESSUN SUPPORTO verrà dato se quest'app non funziona o se rompe il tuo sistema... Se comunque accetti di prenderti questo rischio,digita '{answers:s}'",
"confirm_app_install_thirdparty": "PERICOLO! Quest'applicazione non fa parte del catalogo Yunohost. Installando app di terze parti potresti compromettere l'integrita e la sicurezza del tuo sistema. Probabilmente NON dovresti installarla a meno che tu non sappia cosa stai facendo. NESSUN SUPPORTO verrà dato se quest'app non funziona o se rompe il tuo sistema... Se comunque accetti di prenderti questo rischio, digita '{answers:s}'",
- "dpkg_is_broken": "Non puoi eseguire questo ora perchè dpkg/apt (i gestori di pacchetti del sistema) sembrano essere in stato danneggiato... Puoi provare a risolvere il problema connettendoti via SSH ed eseguire `sudo dpkg --configure -a`.",
- "domain_cannot_remove_main": "Non è possibile rimuovere il dominio principale ora. Prima imposta un nuovo dominio principale",
- "domain_dns_conf_is_just_a_recommendation": "Questo comando ti mostra qual è la configurazione *raccomandata*. Non ti imposta la configurazione DNS al tuo posto. È tua responsabilità configurare la tua zona DNS nel tuo registrar in accordo con queste raccomandazioni.",
+ "dpkg_is_broken": "Non puoi eseguire questo ora perchè dpkg/APT (i gestori di pacchetti del sistema) sembrano essere in stato danneggiato... Puoi provare a risolvere il problema connettendoti via SSH ed eseguire `sudo apt install --fix-broken` e/o `sudo dpkg --configure -a`.",
+ "domain_cannot_remove_main": "Non puoi rimuovere '{domain:s}' essendo il dominio principale, prima devi impostare un nuovo dominio principale con il comando 'yunohost domain main-domain -n '; ecco la lista dei domini candidati: {other_domains:s}",
+ "domain_dns_conf_is_just_a_recommendation": "Questo comando ti mostra la configurazione *raccomandata*. Non ti imposta la configurazione DNS al tuo posto. È tua responsabilità configurare la tua zona DNS nel tuo registrar in accordo con queste raccomandazioni.",
"dyndns_could_not_check_provide": "Impossibile controllare se {provider:s} possano fornire {domain:s}.",
"dyndns_could_not_check_available": "Impossibile controllare se {domain:s} è disponibile su {provider:s}.",
- "dyndns_domain_not_provided": "Il fornitore Dyndns {provider:s} non può fornire il dominio {domain:s}.",
- "experimental_feature": "Attenzione: questa funzionalità è sperimentale e non è considerata stabile, non dovresti utilizzarla a meno che tu non sappia cosa stai facendo.",
+ "dyndns_domain_not_provided": "Il fornitore DynDNS {provider:s} non può fornire il dominio {domain:s}.",
+ "experimental_feature": "Attenzione: Questa funzionalità è sperimentale e non è considerata stabile, non dovresti utilizzarla a meno che tu non sappia cosa stai facendo.",
"file_does_not_exist": "Il file {path:s} non esiste.",
- "global_settings_bad_choice_for_enum": "Scelta sbagliata per l'impostazione {setting:s}, ricevuta '{choice:s}' ma le scelte disponibili sono : {available_choices:s}",
+ "global_settings_bad_choice_for_enum": "Scelta sbagliata per l'impostazione {setting:s}, ricevuta '{choice:s}', ma le scelte disponibili sono: {available_choices:s}",
"global_settings_bad_type_for_setting": "Tipo errato per l'impostazione {setting:s}, ricevuto {received_type:s}, atteso {expected_type:s}",
"global_settings_cant_open_settings": "Apertura del file delle impostazioni non riuscita, motivo: {reason:s}",
"global_settings_cant_serialize_settings": "Serializzazione dei dati delle impostazioni non riuscita, motivo: {reason:s}",
"global_settings_cant_write_settings": "Scrittura del file delle impostazioni non riuscita, motivo: {reason:s}",
"global_settings_key_doesnt_exists": "La chiave '{settings_key:s}' non esiste nelle impostazioni globali, puoi vedere tutte le chiavi disponibili eseguendo 'yunohost settings list'",
- "global_settings_reset_success": "Successo. Le tue impostazioni precedenti sono state salvate in {path:s}",
+ "global_settings_reset_success": "Le impostazioni precedenti sono state salvate in {path:s}",
"global_settings_setting_example_bool": "Esempio di opzione booleana",
"global_settings_setting_example_enum": "Esempio di opzione enum",
"already_up_to_date": "Niente da fare. Tutto è già aggiornato.",
"global_settings_setting_example_int": "Esempio di opzione int",
"global_settings_setting_example_string": "Esempio di opzione string",
- "global_settings_setting_security_nginx_compatibility": "Bilanciamento tra compatibilità e sicurezza per il server web nginx. Riguarda gli algoritmi di cifratura (e altri aspetti legati alla sicurezza)",
+ "global_settings_setting_security_nginx_compatibility": "Bilanciamento tra compatibilità e sicurezza per il server web NGIX. Riguarda gli algoritmi di cifratura (e altri aspetti legati alla sicurezza)",
"global_settings_setting_security_password_admin_strength": "Complessità della password di amministratore",
"global_settings_setting_security_password_user_strength": "Complessità della password utente",
"global_settings_setting_security_ssh_compatibility": "Bilanciamento tra compatibilità e sicurezza per il server SSH. Riguarda gli algoritmi di cifratura (e altri aspetti legati alla sicurezza)",
"global_settings_unknown_setting_from_settings_file": "Chiave sconosciuta nelle impostazioni: '{setting_key:s}', scartata e salvata in /etc/yunohost/settings-unknown.json",
- "global_settings_setting_service_ssh_allow_deprecated_dsa_hostkey": "Consenti l'uso del (deprecato) hostkey DSA per la configurazione del demone SSH",
+ "global_settings_setting_service_ssh_allow_deprecated_dsa_hostkey": "Consenti l'uso del hostkey DSA (deprecato) per la configurazione del demone SSH",
"global_settings_unknown_type": "Situazione inaspettata, l'impostazione {setting:s} sembra essere di tipo {unknown_type:s} ma non è un tipo supportato dal sistema.",
"good_practices_about_admin_password": "Stai per definire una nuova password di amministratore. La password deve essere almeno di 8 caratteri - anche se è buona pratica utilizzare password più lunghe (es. una frase, una serie di parole) e/o utilizzare vari tipi di caratteri (maiuscole, minuscole, numeri e simboli).",
- "log_corrupted_md_file": "Il file dei metadati yaml associato con i registri è corrotto: '{md_file}'",
+ "log_corrupted_md_file": "Il file dei metadati YAML associato con i registri è danneggiato: '{md_file}'\nErrore: {error}",
"log_category_404": "La categoria di registrazione '{category}' non esiste",
"log_link_to_log": "Registro completo di questa operazione: '{desc}'",
"log_help_to_get_log": "Per vedere il registro dell'operazione '{desc}', usa il comando 'yunohost log display {name}'",
"global_settings_setting_security_postfix_compatibility": "Bilanciamento tra compatibilità e sicurezza per il server Postfix. Riguarda gli algoritmi di cifratura (e altri aspetti legati alla sicurezza)",
- "log_link_to_failed_log": "L'operazione '{desc}' è fallita! Per ottenere aiuto, per favore fornisci il registro completo dell'operazione cliccando qui",
- "log_help_to_get_failed_log": "L'operazione '{desc}' è fallita! Per ottenere aiuto, per favore condividi il registro completo dell'operazione utilizzando il comando 'yunohost log display {name} --share'",
+ "log_link_to_failed_log": "Impossibile completare l'operazione '{desc}'! Per ricevere aiuto, per favore fornisci il registro completo dell'operazione cliccando qui",
+ "log_help_to_get_failed_log": "L'operazione '{desc}' non può essere completata. Per ottenere aiuto, per favore condividi il registro completo dell'operazione utilizzando il comando 'yunohost log display {name} --share'",
"log_does_exists": "Non esiste nessun registro delle operazioni chiamato '{log}', usa 'yunohost log list' per vedere tutti i registri delle operazioni disponibili",
- "log_app_change_url": "Cambia l'url dell'applicazione '{}'",
- "log_app_install": "Installa l'applicazione '{}'",
- "log_app_remove": "Rimuovi l'applicazione '{}'",
- "log_app_upgrade": "Aggiorna l'applicazione '{}'",
- "log_app_makedefault": "Rendi predefinita l'applicazione '{}'",
+ "log_app_change_url": "Cambia l'URL dell'app '{}'",
+ "log_app_install": "Installa l'app '{}'",
+ "log_app_remove": "Rimuovi l'app '{}'",
+ "log_app_upgrade": "Aggiorna l'app '{}'",
+ "log_app_makedefault": "Rendi '{}' l'app predefinita",
"log_available_on_yunopaste": "Questo registro è ora disponibile via {url}",
"log_backup_restore_system": "Ripristina sistema da un archivio di backup",
"log_backup_restore_app": "Ripristina '{}' da un archivio di backup",
@@ -296,16 +296,16 @@
"log_domain_add": "Aggiungi il dominio '{}' nella configurazione di sistema",
"log_domain_remove": "Rimuovi il dominio '{}' dalla configurazione di sistema",
"log_dyndns_subscribe": "Sottoscrivi un sottodominio YunoHost '{}'",
- "log_dyndns_update": "Aggiorna l'ip associato con il tuo sottodominio YunoHost '{}'",
+ "log_dyndns_update": "Aggiorna l'IP associato con il tuo sottodominio YunoHost '{}'",
"log_letsencrypt_cert_install": "Installa un certificato Let's encrypt sul dominio '{}'",
"log_selfsigned_cert_install": "Installa un certificato autofirmato sul dominio '{}'",
- "log_letsencrypt_cert_renew": "Rinnova il certificato Let's encrypt sul dominio '{}'",
+ "log_letsencrypt_cert_renew": "Rinnova il certificato Let's Encrypt sul dominio '{}'",
"log_regen_conf": "Rigenera configurazioni di sistema '{}'",
"log_user_create": "Aggiungi l'utente '{}'",
"log_user_delete": "Elimina l'utente '{}'",
- "log_user_update": "Aggiornate le informazioni dell'utente '{}'",
+ "log_user_update": "Aggiorna le informazioni dell'utente '{}'",
"log_domain_main_domain": "Rendi '{}' dominio principale",
- "log_tools_migrations_migrate_forward": "Migra avanti",
+ "log_tools_migrations_migrate_forward": "Esegui le migrazioni",
"log_tools_postinstall": "Postinstallazione del tuo server YunoHost",
"log_tools_upgrade": "Aggiornamento dei pacchetti di sistema",
"log_tools_shutdown": "Spegni il tuo server",
@@ -334,12 +334,12 @@
"migration_0003_yunohost_upgrade": "Iniziando l'aggiornamento dei pacchetti yunohost… La migrazione terminerà, ma l'aggiornamento attuale avverrà subito dopo. Dopo che l'operazione sarà completata, probabilmente dovrai riaccedere all'interfaccia di amministrazione.",
"migration_0003_not_jessie": "La distribuzione attuale non è Jessie!",
"migration_0003_system_not_fully_up_to_date": "Il tuo sistema non è completamente aggiornato. Per favore prima esegui un aggiornamento normale prima di migrare a stretch.",
- "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 dpkg --configure -a`.",
+ "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_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 state installate sul dominio '{domain}'. Dovresti invece usare un sotto-dominio dedicato per questa app.",
+ "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.",
"app_upgrade_script_failed": "È stato trovato un errore nello script di aggiornamento dell'applicazione",
"apps_already_up_to_date": "Tutte le applicazioni sono aggiornate",
"apps_catalog_init_success": "Catalogo delle applicazioni inizializzato!",
@@ -357,7 +357,7 @@
"app_manifest_install_ask_admin": "Scegli un utente amministratore per quest'applicazione",
"app_manifest_install_ask_password": "Scegli una password di amministrazione per quest'applicazione",
"app_manifest_install_ask_path": "Scegli il percorso dove installare quest'applicazione",
- "app_manifest_install_ask_domain": "Scegli il dominio sotto il quale 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:s}' è già utilizzato come URL aggiuntivo per il permesso '{permission:s}'",
"diagnosis_basesystem_ynh_inconsistent_versions": "Stai eseguendo versioni incompatibili dei pacchetti YunoHost... probabilmente a causa di aggiornamenti falliti o parziali.",
@@ -430,5 +430,12 @@
"diagnosis_ram_verylow": "Il sistema ha solo {available} ({available_percent}%) di RAM disponibile (su {total})",
"diagnosis_diskusage_ok": "Lo storage {mountpoint}
(nel device {device}
ha solo {free} ({free_percent}%) di spazio libero rimanente (su {total})!",
"diagnosis_diskusage_low": "Lo storage {mountpoint}
(nel device {device}
ha solo {free} ({free_percent}%) di spazio libero rimanente (su {total}). Fa attenzione.",
- "diagnosis_diskusage_verylow": "Lo storage {mountpoint}
(nel device {device}
ha solo {free} ({free_percent}%) di spazio libero rimanente (su {total}). Dovresti seriamente considerare di fare un po' di pulizia!"
+ "diagnosis_diskusage_verylow": "Lo storage {mountpoint}
(nel device {device}
ha solo {free} ({free_percent}%) di spazio libero rimanente (su {total}). Dovresti seriamente considerare di fare un po' di pulizia!",
+ "diagnosis_mail_fcrdns_nok_details": "Dovresti prima configurare il DNS inverso con {ehlo_domain}
nell'interfaccia del tuo router internet o del tuo hosting provider. (Alcuni hosting provider potrebbero richiedere l'invio di un ticket di supporto per la richiesta).",
+ "diagnosis_mail_fcrdns_dns_missing": "Nessun DNS inverso è configurato per IPv{ipversion}. Alcune email potrebbero non essere inviate o segnalate come spam.",
+ "diagnosis_mail_fcrdns_ok": "Il tuo DNS inverso è configurato correttamente!",
+ "diagnosis_mail_ehlo_could_not_diagnose_details": "Errore: {error}",
+ "diagnosis_mail_ehlo_could_not_diagnose": "Non è possibile verificare se il server mail postfix è raggiungibile dall'esterno su IPv{ipversion}.",
+ "diagnosis_mail_ehlo_wrong": "Un server mail SMTP diverso sta rispondendo su IPv{ipversion}. Probabilmente il tuo server non può ricevere email.",
+ "diagnosis_mail_ehlo_bad_answer_details": "Potrebbe essere un'altra macchina a rispondere al posto del tuo server."
}
From 6360f46972df369e57923e25993206d4ad524bb5 Mon Sep 17 00:00:00 2001
From: Christian Wehrli
Date: Mon, 14 Dec 2020 19:27:41 +0000
Subject: [PATCH 103/128] Translated using Weblate (German)
Currently translated at 57.4% (362 of 630 strings)
Translation: YunoHost/core
Translate-URL: https://translate.yunohost.org/projects/yunohost/core/de/
---
locales/de.json | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/locales/de.json b/locales/de.json
index d85879bf4..9c8fa33c8 100644
--- a/locales/de.json
+++ b/locales/de.json
@@ -298,7 +298,7 @@
"log_app_makedefault": "Mache '{}' zur Standard-Anwendung",
"hook_json_return_error": "Konnte die Rückkehr vom Einsprungpunkt {path:s} nicht lesen. Fehler: {msg:s}. Unformatierter Inhalt: {raw_content}",
"app_full_domain_unavailable": "Es tut uns leid, aber diese Anwendung erfordert die Installation auf einer eigenen Domain, aber einige andere Anwendungen sind bereits auf der Domäne'{domain}' installiert. Eine mögliche Lösung ist das Hinzufügen und Verwenden einer Subdomain, die dieser Anwendung zugeordnet ist.",
- "app_install_failed": "Installation von {app} fehlgeschlagen: {error}",
+ "app_install_failed": "{app} kann nicht installiert werden: {error}",
"app_install_script_failed": "Im Installationsscript ist ein Fehler aufgetreten",
"app_remove_after_failed_install": "Entfernen der App nach fehlgeschlagener Installation...",
"app_upgrade_script_failed": "Es ist ein Fehler im App-Upgrade-Skript aufgetreten",
@@ -469,5 +469,7 @@
"additional_urls_already_added": "Zusätzliche URL '{url:s}' bereits hinzugefügt in der zusätzlichen URL für Berechtigung '{permission:s}'",
"additional_urls_already_removed": "Zusätzliche URL '{url:s}' bereits entfernt in der zusätzlichen URL für Berechtigung '{permission:s}'",
"app_label_deprecated": "Dieser Befehl ist veraltet! Bitte nutzen Sie den neuen Befehl 'yunohost user permission update' um das Applabel zu verwalten.",
- "diagnosis_http_hairpinning_issue_details": "Das ist wahrscheinlich aufgrund Ihrer ISP Box / Router. Als Konsequenz können Personen von ausserhalb Ihres Netzwerkes aber nicht von innerhalb Ihres lokalen Netzwerkes (wie wahrscheinlich Sie selber?) wie gewohnt auf Ihren Server zugreifen, wenn Sie ihre Domäne oder Ihre öffentliche IP verwenden. Sie können die Situation wahrscheinlich verbessern, indem Sie ein einen Blick in https://yunohost.org/dns_local_network werfen"
+ "diagnosis_http_hairpinning_issue_details": "Das ist wahrscheinlich aufgrund Ihrer ISP Box / Router. Als Konsequenz können Personen von ausserhalb Ihres Netzwerkes aber nicht von innerhalb Ihres lokalen Netzwerkes (wie wahrscheinlich Sie selber?) wie gewohnt auf Ihren Server zugreifen, wenn Sie ihre Domäne oder Ihre öffentliche IP verwenden. Sie können die Situation wahrscheinlich verbessern, indem Sie ein einen Blick in https://yunohost.org/dns_local_network werfen",
+ "diagnosis_http_nginx_conf_not_up_to_date": "Jemand hat anscheinend die Konfiguration von Nginx manuell geändert. Diese Änderung verhindert, dass Yunohost eine Diagnose durchführen kann, wenn er via HTTP erreichbar ist.",
+ "diagnosis_http_bad_status_code": "Anscheinend beantwortet ein anderes Gerät als Ihr Server die Anfrage (Vielleicht ihr Internetrouter).
1. Die häufigste Ursache ist, dass Port 80 (und 443) nicht richtig auf Ihren Server weitergeleitet wird.
2. Bei komplexeren Setups: Vergewissern Sie sich, dass keine Firewall und keine Reverse-Proxy interferieren."
}
From 1a92a905aa52884a7cb04d028857df6ccaf55ee3 Mon Sep 17 00:00:00 2001
From: Flavio Cristoforetti
Date: Mon, 14 Dec 2020 16:13:36 +0000
Subject: [PATCH 104/128] Translated using Weblate (Italian)
Currently translated at 58.4% (368 of 630 strings)
Translation: YunoHost/core
Translate-URL: https://translate.yunohost.org/projects/yunohost/core/it/
---
locales/it.json | 32 ++++++++++++++++----------------
1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/locales/it.json b/locales/it.json
index 085bd506a..b3f2dc718 100644
--- a/locales/it.json
+++ b/locales/it.json
@@ -11,13 +11,13 @@
"backup_output_directory_not_empty": "Dovresti scegliere una cartella di output vuota",
"domain_created": "Dominio creato",
"domain_exists": "Il dominio esiste già",
- "ldap_initialized": "LDAP è stato inizializzato",
- "pattern_email": "L'indirizzo email deve essere valido (es. someone@domain.org)",
+ "ldap_initialized": "LDAP inizializzato",
+ "pattern_email": "L'indirizzo email deve essere valido, senza simboli '+' (es. tizio@dominio.com)",
"pattern_mailbox_quota": "La dimensione deve avere un suffisso b/k/M/G/T o 0 per disattivare la quota",
"port_already_opened": "La porta {port:d} è già aperta per {ip_version:s} connessioni",
"service_add_failed": "Impossibile aggiungere il servizio '{service:s}'",
"service_cmd_exec_failed": "Impossibile eseguire il comando '{command:s}'",
- "service_disabled": "Il servizio '{service:s}' è stato disattivato",
+ "service_disabled": "Il servizio '{service:s}' non partirà più al boot di sistema.",
"service_remove_failed": "Impossibile rimuovere il servizio '{service:s}'",
"service_removed": "Il servizio '{service:s}' è stato rimosso",
"service_stop_failed": "Impossibile fermare il servizio '{service:s}'\n\nRegistri di servizio recenti:{logs:s}",
@@ -68,7 +68,7 @@
"domain_deletion_failed": "Impossibile cancellare il dominio {domain}: {error}",
"domain_dyndns_already_subscribed": "Hai già sottoscritto un dominio DynDNS",
"domain_dyndns_root_unknown": "Dominio radice DynDNS sconosciuto",
- "domain_hostname_failed": "La definizione del nuovo hostname è fallita",
+ "domain_hostname_failed": "Impossibile impostare il nuovo hostname. Potrebbe causare problemi in futuro (o anche no).",
"domain_uninstall_app_first": "Queste applicazioni sono già installate su questo dominio: {apps}. Disinstallale prima di procedere alla cancellazione di un dominio",
"domain_unknown": "Dominio sconosciuto",
"done": "Terminato",
@@ -92,18 +92,18 @@
"firewall_reload_failed": "Impossibile ricaricare il firewall",
"firewall_reloaded": "Firewall ricaricato",
"firewall_rules_cmd_failed": "Alcune regole del firewall sono fallite. Per ulteriori informazioni, vedi il registro.",
- "hook_exec_failed": "L'esecuzione dello script è fallita: {path:s}",
- "hook_exec_not_terminated": "L'esecuzione dello script non è stata terminata: {path:s}",
+ "hook_exec_failed": "Impossibile eseguire lo script: {path:s}",
+ "hook_exec_not_terminated": "Los script non è stato eseguito correttamente: {path:s}",
"hook_name_unknown": "Nome di hook '{name:s}' sconosciuto",
"installation_complete": "Installazione completata",
- "installation_failed": "Installazione fallita",
+ "installation_failed": "Qualcosa è andato storto durante l'installazione",
"ip6tables_unavailable": "Non puoi giocare con ip6tables qui. O sei in un container o il tuo kernel non lo supporta",
"iptables_unavailable": "Non puoi giocare con iptables qui. O sei in un container o il tuo kernel non lo supporta",
"ldap_init_failed_to_create_admin": "L'inizializzazione LDAP non è riuscita a creare un utente admin",
"mail_alias_remove_failed": "Impossibile rimuovere l'alias mail '{mail:s}'",
- "mail_domain_unknown": "Dominio d'indirizzo mail '{domain:s}' sconosciuto",
+ "mail_domain_unknown": "Indirizzo mail non valido per il dominio '{domain:s}'. Usa un dominio gestito da questo server.",
"mail_forward_remove_failed": "Impossibile rimuovere la mail inoltrata '{mail:s}'",
- "mailbox_used_space_dovecot_down": "Il servizio di posta elettronica Dovecot deve essere attivato se vuoi riportare lo spazio usato dalla posta elettronica",
+ "mailbox_used_space_dovecot_down": "La casella di posta elettronica Dovecot deve essere attivato se vuoi recuperare lo spazio usato dalla posta elettronica",
"main_domain_change_failed": "Impossibile cambiare il dominio principale",
"main_domain_changed": "Il dominio principale è stato cambiato",
"no_internet_connection": "Il server non è collegato a Internet",
@@ -119,7 +119,7 @@
"pattern_positive_number": "Deve essere un numero positivo",
"pattern_username": "Caratteri minuscoli alfanumerici o trattini bassi soli",
"port_already_closed": "La porta {port:d} è già chiusa per le connessioni {ip_version:s}",
- "restore_already_installed_app": "Un'applicazione è già installata con l'identificativo '{app:s}'",
+ "restore_already_installed_app": "Un'applicazione con l'ID '{app:s}' è già installata",
"restore_app_failed": "Impossibile ripristinare l'applicazione '{app:s}'",
"restore_cleaning_failed": "Impossibile pulire la directory temporanea di ripristino",
"restore_complete": "Ripristino completo",
@@ -127,15 +127,15 @@
"restore_failed": "Impossibile ripristinare il sistema",
"user_update_failed": "Impossibile aggiornare l'utente",
"restore_hook_unavailable": "Lo script di ripristino per '{part:s}' non è disponibile per il tuo sistema e non è nemmeno nell'archivio",
- "restore_nothings_done": "Non è stato ripristinato nulla",
+ "restore_nothings_done": "Nulla è stato ripristinato",
"restore_running_app_script": "Ripristino dell'app '{app:s}'…",
"restore_running_hooks": "Esecuzione degli hook di ripristino…",
"service_added": "Il servizio '{service:s}' è stato aggiunto",
- "service_already_started": "Il servizio '{service:s}' è già stato avviato",
+ "service_already_started": "Il servizio '{service:s}' è già avviato",
"service_already_stopped": "Il servizio '{service:s}' è già stato fermato",
- "service_disable_failed": "Impossibile disabilitare il servizio '{service:s}'\n\nRegistri di servizio recenti:{logs:s}",
- "service_enable_failed": "Impossibile abilitare il servizio '{service:s}'\n\nRegistri di servizio recenti:{logs:s}",
- "service_enabled": "Il servizio '{service:s}' è stato attivato",
+ "service_disable_failed": "Impossibile disabilitare l'avvio al boot del servizio '{service:s}'\n\nRegistri di servizio recenti:{logs:s}",
+ "service_enable_failed": "Impossibile eseguire il servizio '{service:s}' al boot di sistema.\n\nRegistri di servizio recenti:{logs:s}",
+ "service_enabled": "Il servizio '{service:s}' si avvierà automaticamente al boot di sistema.",
"service_start_failed": "Impossibile eseguire il servizio '{service:s}'\n\nRegistri di servizio recenti:{logs:s}",
"service_started": "Il servizio '{service:s}' è stato avviato",
"service_stopped": "Il servizio '{service:s}' è stato fermato",
@@ -304,7 +304,7 @@
"log_user_create": "Aggiungi l'utente '{}'",
"log_user_delete": "Elimina l'utente '{}'",
"log_user_update": "Aggiorna le informazioni dell'utente '{}'",
- "log_domain_main_domain": "Rendi '{}' dominio principale",
+ "log_domain_main_domain": "Rendi '{}' il dominio principale",
"log_tools_migrations_migrate_forward": "Esegui le migrazioni",
"log_tools_postinstall": "Postinstallazione del tuo server YunoHost",
"log_tools_upgrade": "Aggiornamento dei pacchetti di sistema",
From 602ca3752a2942e4fa386637df2cf6c0a984beaf Mon Sep 17 00:00:00 2001
From: Flavio Cristoforetti
Date: Tue, 15 Dec 2020 10:49:08 +0000
Subject: [PATCH 105/128] Translated using Weblate (Italian)
Currently translated at 63.0% (397 of 630 strings)
Translation: YunoHost/core
Translate-URL: https://translate.yunohost.org/projects/yunohost/core/it/
---
locales/it.json | 46 ++++++++++++++++++++++++----------------------
1 file changed, 24 insertions(+), 22 deletions(-)
diff --git a/locales/it.json b/locales/it.json
index b3f2dc718..fc22b76e7 100644
--- a/locales/it.json
+++ b/locales/it.json
@@ -19,12 +19,12 @@
"service_cmd_exec_failed": "Impossibile eseguire il comando '{command:s}'",
"service_disabled": "Il servizio '{service:s}' non partirà più al boot di sistema.",
"service_remove_failed": "Impossibile rimuovere il servizio '{service:s}'",
- "service_removed": "Il servizio '{service:s}' è stato rimosso",
+ "service_removed": "Servizio '{service:s}' rimosso",
"service_stop_failed": "Impossibile fermare il servizio '{service:s}'\n\nRegistri di servizio recenti:{logs:s}",
- "system_username_exists": "il nome utente esiste già negli utenti del sistema",
- "unrestore_app": "L'applicazione '{app:s}' non verrà ripristinata",
+ "system_username_exists": "Il nome utente esiste già negli utenti del sistema",
+ "unrestore_app": "{app:s} non verrà ripristinata",
"upgrading_packages": "Aggiornamento dei pacchetti...",
- "user_deleted": "L'utente è stato cancellato",
+ "user_deleted": "Utente cancellato",
"admin_password": "Password dell'amministrazione",
"admin_password_change_failed": "Impossibile cambiare la password",
"admin_password_changed": "La password d'amministrazione è stata cambiata",
@@ -110,7 +110,7 @@
"not_enough_disk_space": "Non c'è abbastanza spazio libero in '{path:s}'",
"package_unknown": "Pacchetto '{pkgname}' sconosciuto",
"packages_upgrade_failed": "Impossibile aggiornare tutti i pacchetti",
- "pattern_backup_archive_name": "Deve essere un nome di file valido con caratteri alfanumerici e -_. soli",
+ "pattern_backup_archive_name": "Deve essere un nome di file valido di massimo 30 caratteri di lunghezza, con caratteri alfanumerici e \"-_.\" come unica punteggiatura",
"pattern_domain": "Deve essere un nome di dominio valido (es. il-mio-dominio.org)",
"pattern_firstname": "Deve essere un nome valido",
"pattern_lastname": "Deve essere un cognome valido",
@@ -125,7 +125,7 @@
"restore_complete": "Ripristino completo",
"restore_confirm_yunohost_installed": "Sei sicuro di volere ripristinare un sistema già installato? {answers:s}",
"restore_failed": "Impossibile ripristinare il sistema",
- "user_update_failed": "Impossibile aggiornare l'utente",
+ "user_update_failed": "Impossibile aggiornare l'utente {user}: {error}",
"restore_hook_unavailable": "Lo script di ripristino per '{part:s}' non è disponibile per il tuo sistema e non è nemmeno nell'archivio",
"restore_nothings_done": "Nulla è stato ripristinato",
"restore_running_app_script": "Ripristino dell'app '{app:s}'…",
@@ -137,32 +137,32 @@
"service_enable_failed": "Impossibile eseguire il servizio '{service:s}' al boot di sistema.\n\nRegistri di servizio recenti:{logs:s}",
"service_enabled": "Il servizio '{service:s}' si avvierà automaticamente al boot di sistema.",
"service_start_failed": "Impossibile eseguire il servizio '{service:s}'\n\nRegistri di servizio recenti:{logs:s}",
- "service_started": "Il servizio '{service:s}' è stato avviato",
- "service_stopped": "Il servizio '{service:s}' è stato fermato",
+ "service_started": "Servizio '{service:s}' avviato",
+ "service_stopped": "Servizio '{service:s}' fermato",
"service_unknown": "Servizio '{service:s}' sconosciuto",
- "ssowat_conf_generated": "La configurazione SSOwat è stata generata",
- "ssowat_conf_updated": "La configurazione SSOwat è stata aggiornata",
- "system_upgraded": "Il sistema è stato aggiornato",
- "unbackup_app": "L'applicazione '{app:s}' non verrà salvata",
- "unexpected_error": "Un'errore inaspettata si è verificata",
+ "ssowat_conf_generated": "La configurazione SSOwat rigenerata",
+ "ssowat_conf_updated": "Configurazione SSOwat aggiornata",
+ "system_upgraded": "Sistema aggiornato",
+ "unbackup_app": "{app:s} non verrà salvata",
+ "unexpected_error": "È successo qualcosa di inatteso: {error}",
"unlimit": "Nessuna quota",
"updating_apt_cache": "Recupero degli aggiornamenti disponibili per i pacchetti di sistema...",
"upgrade_complete": "Aggiornamento completo",
"upnp_dev_not_found": "Nessuno supporto UPnP trovato",
"upnp_disabled": "UPnP è stato disattivato",
"upnp_enabled": "UPnP è stato attivato",
- "upnp_port_open_failed": "Impossibile aprire le porte UPnP",
- "user_created": "L'utente è stato creato",
- "user_creation_failed": "Impossibile creare l'utente",
- "user_deletion_failed": "Impossibile cancellare l'utente",
- "user_home_creation_failed": "Impossibile creare la home directory del utente",
+ "upnp_port_open_failed": "Impossibile aprire le porte attraverso UPnP",
+ "user_created": "Utente creato",
+ "user_creation_failed": "Impossibile creare l'utente {user}: {error}",
+ "user_deletion_failed": "Impossibile cancellare l'utente {user}: {error}",
+ "user_home_creation_failed": "Impossibile creare la 'home' directory del utente",
"user_unknown": "Utente sconosciuto: {user:s}",
- "user_updated": "L'utente è stato aggiornato",
+ "user_updated": "Info dell'utente cambiate",
"yunohost_already_installed": "YunoHost è già installato",
"yunohost_ca_creation_failed": "Impossibile creare una certificate authority",
- "yunohost_configured": "YunoHost è stato configurato",
+ "yunohost_configured": "YunoHost ora è configurato",
"yunohost_installing": "Installazione di YunoHost...",
- "yunohost_not_installed": "YunoHost non è o non corretamente installato. Esegui 'yunohost tools postinstall'",
+ "yunohost_not_installed": "YunoHost non è correttamente installato. Esegui 'yunohost tools postinstall'",
"domain_cert_gen_failed": "Impossibile generare il certificato",
"certmanager_attempt_to_replace_valid_cert": "Stai provando a sovrascrivere un certificato buono e valido per il dominio {domain:s}! (Usa --force per ignorare)",
"certmanager_domain_unknown": "Dominio {domain:s} sconosciuto",
@@ -437,5 +437,7 @@
"diagnosis_mail_ehlo_could_not_diagnose_details": "Errore: {error}",
"diagnosis_mail_ehlo_could_not_diagnose": "Non è possibile verificare se il server mail postfix è raggiungibile dall'esterno su IPv{ipversion}.",
"diagnosis_mail_ehlo_wrong": "Un server mail SMTP diverso sta rispondendo su IPv{ipversion}. Probabilmente il tuo server non può ricevere email.",
- "diagnosis_mail_ehlo_bad_answer_details": "Potrebbe essere un'altra macchina a rispondere al posto del tuo server."
+ "diagnosis_mail_ehlo_bad_answer_details": "Potrebbe essere un'altra macchina a rispondere al posto del tuo server.",
+ "diagnosis_mail_fcrdns_nok_alternatives_4": "Alcuni provider non ti permettono di configurare un DNS inverso (o la loro configurazione non funziona...). Se stai avendo problemi a causa di ciò, considera le seguenti soluzioni:
- Alcuni ISP mettono a disposizione un alternativa attraverso un mail server relay anche se implica che il relay ha la capacità di leggere il vostro traffico email.
- Un alternativa privacy-friendly è quella di usare una VPN *con un indirizzo IP pubblico dedicato* per bypassare questo tipo di limite. Vedi https://yunohost.org/#/vpn_advantage
- Puoi anche prendere in considerazione di cambiare internet provider",
+ "diagnosis_mail_ehlo_wrong_details": "L'EHLO ricevuto dalla diagnostica remota su IPv{ipversion} è differente dal dominio del tuo server.
EHLO ricevuto: {wrong_ehlo}
EHLO atteso: {right_ehlo}
La causa più comune di questo problema è la porta 25 non correttamente inoltrata al tuo server. Oppure assicurati che nessun firewall o reverse-proxy stia interferendo."
}
From a26d341d59f2416f4e253f35ab439ba9bbc0c167 Mon Sep 17 00:00:00 2001
From: Flavio Cristoforetti
Date: Wed, 16 Dec 2020 12:37:38 +0000
Subject: [PATCH 106/128] Translated using Weblate (Italian)
Currently translated at 63.6% (401 of 630 strings)
Translation: YunoHost/core
Translate-URL: https://translate.yunohost.org/projects/yunohost/core/it/
---
locales/it.json | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/locales/it.json b/locales/it.json
index fc22b76e7..452876803 100644
--- a/locales/it.json
+++ b/locales/it.json
@@ -439,5 +439,9 @@
"diagnosis_mail_ehlo_wrong": "Un server mail SMTP diverso sta rispondendo su IPv{ipversion}. Probabilmente il tuo server non può ricevere email.",
"diagnosis_mail_ehlo_bad_answer_details": "Potrebbe essere un'altra macchina a rispondere al posto del tuo server.",
"diagnosis_mail_fcrdns_nok_alternatives_4": "Alcuni provider non ti permettono di configurare un DNS inverso (o la loro configurazione non funziona...). Se stai avendo problemi a causa di ciò, considera le seguenti soluzioni:
- Alcuni ISP mettono a disposizione un alternativa attraverso un mail server relay anche se implica che il relay ha la capacità di leggere il vostro traffico email.
- Un alternativa privacy-friendly è quella di usare una VPN *con un indirizzo IP pubblico dedicato* per bypassare questo tipo di limite. Vedi https://yunohost.org/#/vpn_advantage
- Puoi anche prendere in considerazione di cambiare internet provider",
- "diagnosis_mail_ehlo_wrong_details": "L'EHLO ricevuto dalla diagnostica remota su IPv{ipversion} è differente dal dominio del tuo server.
EHLO ricevuto: {wrong_ehlo}
EHLO atteso: {right_ehlo}
La causa più comune di questo problema è la porta 25 non correttamente inoltrata al tuo server. Oppure assicurati che nessun firewall o reverse-proxy stia interferendo."
+ "diagnosis_mail_ehlo_wrong_details": "L'EHLO ricevuto dalla diagnostica remota su IPv{ipversion} è differente dal dominio del tuo server.
EHLO ricevuto: {wrong_ehlo}
EHLO atteso: {right_ehlo}
La causa più comune di questo problema è la porta 25 non correttamente inoltrata al tuo server. Oppure assicurati che nessun firewall o reverse-proxy stia interferendo.",
+ "diagnosis_mail_blacklist_ok": "Gli IP e i domini utilizzati da questo server non sembrano essere nelle blacklist.",
+ "diagnosis_mail_fcrdns_different_from_ehlo_domain_details": "DNS invero corrente: {rdns_domain}
Valore atteso: {ehlo_domain}
",
+ "diagnosis_mail_fcrdns_different_from_ehlo_domain": "Il DNS inverso non è correttamente configurato su IPv{ipversion}. Alcune email potrebbero non essere spedite o segnalate come SPAM.",
+ "diagnosis_mail_fcrdns_nok_alternatives_6": "Alcuni provider non permettono di configurare un DNS inverso (o non è configurato bene...). Se il tuo DNS inverso è correttamente configurato per IPv4, puoi provare a disabilitare l'utilizzo di IPv6 durante l'invio mail eseguendo yunohost settings set smtp.allow_ipv6 -v off . NB: se esegui il comando non sarà più possibile inviare o ricevere email da i pochi IPv6-only server mail esistenti."
}
From 1441ddea5784867d9cb245203d85ed8535388f79 Mon Sep 17 00:00:00 2001
From: Flavio Cristoforetti
Date: Wed, 16 Dec 2020 16:21:22 +0000
Subject: [PATCH 107/128] Translated using Weblate (Italian)
Currently translated at 100.0% (630 of 630 strings)
Translation: YunoHost/core
Translate-URL: https://translate.yunohost.org/projects/yunohost/core/it/
---
locales/it.json | 233 +++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 231 insertions(+), 2 deletions(-)
diff --git a/locales/it.json b/locales/it.json
index 452876803..0a30b5790 100644
--- a/locales/it.json
+++ b/locales/it.json
@@ -440,8 +440,237 @@
"diagnosis_mail_ehlo_bad_answer_details": "Potrebbe essere un'altra macchina a rispondere al posto del tuo server.",
"diagnosis_mail_fcrdns_nok_alternatives_4": "Alcuni provider non ti permettono di configurare un DNS inverso (o la loro configurazione non funziona...). Se stai avendo problemi a causa di ciò, considera le seguenti soluzioni:
- Alcuni ISP mettono a disposizione un alternativa attraverso un mail server relay anche se implica che il relay ha la capacità di leggere il vostro traffico email.
- Un alternativa privacy-friendly è quella di usare una VPN *con un indirizzo IP pubblico dedicato* per bypassare questo tipo di limite. Vedi https://yunohost.org/#/vpn_advantage
- Puoi anche prendere in considerazione di cambiare internet provider",
"diagnosis_mail_ehlo_wrong_details": "L'EHLO ricevuto dalla diagnostica remota su IPv{ipversion} è differente dal dominio del tuo server.
EHLO ricevuto: {wrong_ehlo}
EHLO atteso: {right_ehlo}
La causa più comune di questo problema è la porta 25 non correttamente inoltrata al tuo server. Oppure assicurati che nessun firewall o reverse-proxy stia interferendo.",
- "diagnosis_mail_blacklist_ok": "Gli IP e i domini utilizzati da questo server non sembrano essere nelle blacklist.",
+ "diagnosis_mail_blacklist_ok": "Gli IP e i domini utilizzati da questo server non sembrano essere nelle blacklist",
"diagnosis_mail_fcrdns_different_from_ehlo_domain_details": "DNS invero corrente: {rdns_domain}
Valore atteso: {ehlo_domain}
",
"diagnosis_mail_fcrdns_different_from_ehlo_domain": "Il DNS inverso non è correttamente configurato su IPv{ipversion}. Alcune email potrebbero non essere spedite o segnalate come SPAM.",
- "diagnosis_mail_fcrdns_nok_alternatives_6": "Alcuni provider non permettono di configurare un DNS inverso (o non è configurato bene...). Se il tuo DNS inverso è correttamente configurato per IPv4, puoi provare a disabilitare l'utilizzo di IPv6 durante l'invio mail eseguendo yunohost settings set smtp.allow_ipv6 -v off . NB: se esegui il comando non sarà più possibile inviare o ricevere email da i pochi IPv6-only server mail esistenti."
+ "diagnosis_mail_fcrdns_nok_alternatives_6": "Alcuni provider non permettono di configurare un DNS inverso (o non è configurato bene...). Se il tuo DNS inverso è correttamente configurato per IPv4, puoi provare a disabilitare l'utilizzo di IPv6 durante l'invio mail eseguendo yunohost settings set smtp.allow_ipv6 -v off . NB: se esegui il comando non sarà più possibile inviare o ricevere email da i pochi IPv6-only server mail esistenti.",
+ "yunohost_postinstall_end_tip": "La post-installazione è completata! Per rifinire il tuo setup, considera di:\n\t- aggiungere il primo utente nella sezione 'Utenti' del webadmin (o eseguendo da terminale 'yunohost user create ');\n\t- eseguire una diagnosi alla ricerca di problemi nella sezione 'Diagnosi' del webadmin (o eseguendo da terminale 'yunohost diagnosis run');\n\t- leggere 'Finalizing your setup' e 'Getting to know Yunohost' nella documentazione admin: https://yunohost.org/admindoc.",
+ "user_already_exists": "L'utente '{user}' esiste già",
+ "update_apt_cache_warning": "Qualcosa è andato storto mentre eseguivo l'aggiornamento della cache APT (package manager di Debian). Ecco il dump di sources.list, che potrebbe aiutare ad identificare le linee problematiche:\n{sourceslist}",
+ "update_apt_cache_failed": "Impossibile aggiornare la cache di APT (package manager di Debian). Ecco il dump di sources.list, che potrebbe aiutare ad identificare le linee problematiche:\n{sourceslist}",
+ "unknown_main_domain_path": "Percorso o dominio sconosciuto per '{app}'. Devi specificare un dominio e un percorso per poter specificare un URL per il permesso.",
+ "tools_upgrade_special_packages_completed": "Aggiornamento pacchetti YunoHost completato.\nPremi [Invio] per tornare al terminale",
+ "tools_upgrade_special_packages_explanation": "L'aggiornamento speciale continuerà in background. Per favore non iniziare nessun'altra azione sul tuo server per i prossimi ~10 minuti (dipende dalla velocità hardware). Dopo questo, dovrai ri-loggarti nel webadmin. Il registro di aggiornamento sarà disponibile in Strumenti → Log/Registri (nel webadmin) o dalla linea di comando eseguendo 'yunohost log list'.",
+ "tools_upgrade_special_packages": "Adesso aggiorno i pacchetti 'speciali' (correlati a yunohost)…",
+ "tools_upgrade_regular_packages_failed": "Impossibile aggiornare i pacchetti: {packages_list}",
+ "tools_upgrade_regular_packages": "Adesso aggiorno i pacchetti 'normali' (non correlati a yunohost)…",
+ "tools_upgrade_cant_unhold_critical_packages": "Impossibile annullare il blocco dei pacchetti critici/importanti…",
+ "tools_upgrade_cant_hold_critical_packages": "Impossibile bloccare i pacchetti critici/importanti…",
+ "tools_upgrade_cant_both": "Impossibile aggiornare sia il sistema e le app nello stesso momento",
+ "tools_upgrade_at_least_one": "Specifica '--apps', o '--system'",
+ "show_tile_cant_be_enabled_for_regex": "Non puoi abilitare 'show_tile' in questo momento, perché l'URL del permesso '{permission}' è una regex",
+ "show_tile_cant_be_enabled_for_url_not_defined": "Non puoi abilitare 'show_tile' in questo momento, devi prima definire un URL per il permesso '{permission}'",
+ "service_reloaded_or_restarted": "Il servizio '{service:s}' è stato ricaricato o riavviato",
+ "service_reload_or_restart_failed": "Impossibile ricaricare o riavviare il servizio '{service:s}'\n\nUltimi registri del servizio: {logs:s}",
+ "service_restarted": "Servizio '{service:s}' riavviato",
+ "service_restart_failed": "Impossibile riavviare il servizio '{service:s}'\n\nUltimi registri del servizio: {logs:s}",
+ "service_reloaded": "Servizio '{service:s}' ricaricato",
+ "service_reload_failed": "Impossibile ricaricare il servizio '{service:s}'\n\nUltimi registri del servizio: {logs:s}",
+ "service_regen_conf_is_deprecated": "'yunohost service regen-conf' è obsoleto! Per favore usa 'yunohost tools regen-conf' al suo posto.",
+ "service_description_yunohost-firewall": "Gestisce l'apertura e la chiusura delle porte ai servizi",
+ "service_description_yunohost-api": "Gestisce l'interazione tra l'interfaccia web YunoHost ed il sistema",
+ "service_description_ssh": "Ti consente di accedere da remoto al tuo server attraverso il terminale (protocollo SSH)",
+ "service_description_slapd": "Memorizza utenti, domini e info correlate",
+ "service_description_rspamd": "Filtra SPAM, e altre funzionalità legate alle mail",
+ "service_description_redis-server": "Un database specializzato usato per un veloce accesso ai dati, task queue, e comunicazioni tra programmi",
+ "service_description_postfix": "Usato per inviare e ricevere email",
+ "service_description_php7.3-fpm": "Esegue app scritte in PHP con NGINX",
+ "service_description_nginx": "Serve o permette l'accesso a tutti i siti pubblicati sul tuo server",
+ "service_description_mysql": "Memorizza i dati delle app (database SQL)",
+ "service_description_metronome": "Gestisce gli account di messaggistica instantanea XMPP",
+ "service_description_fail2ban": "Ti protegge dal brute-force e altri tipi di attacchi da Internet",
+ "service_description_dovecot": "Consente ai client mail di accedere/recuperare le email (via IMAP e POP3)",
+ "service_description_dnsmasq": "Gestisce la risoluzione dei domini (DNS)",
+ "service_description_avahi-daemon": "Consente di raggiungere il tuo server eseguendo 'yunohost.local' sulla tua LAN",
+ "server_reboot_confirm": "Il server si riavvierà immediatamente, sei sicuro? [{answers:s}]",
+ "server_reboot": "Il server si riavvierà",
+ "server_shutdown_confirm": "Il server si spegnerà immediatamente, sei sicuro? [{answers:s}]",
+ "server_shutdown": "Il server si spegnerà",
+ "root_password_replaced_by_admin_password": "La tua password di root è stata sostituita dalla tua password d'amministratore.",
+ "root_password_desynchronized": "La password d'amministratore è stata cambiata, ma YunoHost non ha potuto propagarla alla password di root!",
+ "restore_system_part_failed": "Impossibile ripristinare la sezione di sistema '{part:s}'",
+ "restore_removing_tmp_dir_failed": "Impossibile rimuovere una vecchia directory temporanea",
+ "restore_not_enough_disk_space": "Spazio libero insufficiente (spazio: {free_space:d}B, necessario: {needed_space:d}B, margine di sicurezza: {margin:d}B)",
+ "restore_may_be_not_enough_disk_space": "Il tuo sistema non sembra avere abbastanza spazio (libero: {free_space:d}B, necessario: {needed_space:d}B, margine di sicurezza: {margin:d}B)",
+ "restore_extracting": "Sto estraendo i file necessari dall'archivio…",
+ "restore_already_installed_apps": "Le seguenti app non possono essere ripristinate perché sono già installate: {apps}",
+ "regex_with_only_domain": "Non puoi usare una regex per il dominio, solo per i percorsi",
+ "regex_incompatible_with_tile": "/!\\ Packagers! Il permesso '{permission}' ha show_tile impostato su 'true' e perciò non è possibile definire un URL regex per l'URL principale",
+ "regenconf_need_to_explicitly_specify_ssh": "La configurazione ssh è stata modificata manualmente, ma devi specificare la categoria 'ssh' con --force per applicare le modifiche.",
+ "regenconf_pending_applying": "Applico le configurazioni in attesa per la categoria '{category}'...",
+ "regenconf_failed": "Impossibile rigenerare la configurazione per le categorie: {categories}",
+ "regenconf_dry_pending_applying": "Controllo configurazioni in attesa che potrebbero essere applicate alla categoria '{category}'…",
+ "regenconf_would_be_updated": "La configurazione sarebbe stata aggiornata per la categoria '{category}'",
+ "regenconf_updated": "Configurazione aggiornata per '{category}'",
+ "regenconf_up_to_date": "Il file di configurazione è già aggiornato per la categoria '{category}'",
+ "regenconf_now_managed_by_yunohost": "Il file di configurazione '{conf}' da adesso è gestito da YunoHost (categoria {category}).",
+ "regenconf_file_updated": "File di configurazione '{conf}' aggiornato",
+ "regenconf_file_removed": "File di configurazione '{conf}' rimosso",
+ "regenconf_file_remove_failed": "Impossibile rimuovere il file di configurazione '{conf}'",
+ "regenconf_file_manually_removed": "Il file di configurazione '{conf}' è stato rimosso manualmente, e non sarà generato",
+ "regenconf_file_manually_modified": "Il file di configurazione '{conf}' è stato modificato manualmente e non sarà aggiornato",
+ "regenconf_file_kept_back": "Il file di configurazione '{conf}' dovrebbe esser stato cancellato da regen-conf (categoria {category}), ma non è così.",
+ "regenconf_file_copy_failed": "Impossibile copiare il nuovo file di configurazione da '{new}' a '{conf}'",
+ "regenconf_file_backed_up": "File di configurazione '{conf}' salvato in '{backup}'",
+ "permission_require_account": "Il permesso {permission} ha senso solo per gli utenti con un account, quindi non può essere attivato per i visitatori.",
+ "permission_protected": "Il permesso {permission} è protetto. Non puoi aggiungere o rimuovere il gruppo visitatori dal permesso.",
+ "permission_updated": "Permesso '{permission:s}' aggiornato",
+ "permission_update_failed": "Impossibile aggiornare il permesso '{permission}': {error}",
+ "permission_not_found": "Permesso '{permission:s}' non trovato",
+ "permission_deletion_failed": "Impossibile cancellare il permesso '{permission}': {error}",
+ "permission_deleted": "Permesso '{permission:s}' cancellato",
+ "permission_currently_allowed_for_all_users": "Il permesso è attualmente garantito a tutti gli utenti oltre gli altri gruppi. Probabilmente vuoi o rimuovere il permesso 'all_user' o rimuovere gli altri gruppi per cui è garantito attualmente.",
+ "permission_creation_failed": "Impossibile creare i permesso '{permission}': {error}",
+ "permission_created": "Permesso '{permission:s}' creato",
+ "permission_cannot_remove_main": "Non è possibile rimuovere un permesso principale",
+ "permission_already_up_to_date": "Il permesso non è stato aggiornato perché la richiesta di aggiunta/rimozione è già coerente con lo stato attuale.",
+ "permission_already_exist": "Permesso '{permission}' esiste già",
+ "permission_already_disallowed": "Il gruppo '{group}' ha già il permesso '{permission}' disabilitato",
+ "permission_already_allowed": "Il gruppo '{group}' ha già il permesso '{permission}' abilitato",
+ "pattern_password_app": "Mi spiace, le password non possono contenere i seguenti caratteri: {forbidden_chars}",
+ "pattern_email_forward": "Dev'essere un indirizzo mail valido, simbolo '+' accettato (es: tizio+tag@example.com)",
+ "operation_interrupted": "L'operazione è stata interrotta manualmente?",
+ "invalid_number": "Dev'essere un numero",
+ "migrations_to_be_ran_manually": "Migrazione {id} dev'essere eseguita manualmente. Vai in Strumenti → Migrazioni nella pagina webadmin, o esegui `yunohost tools migrations migrate`.",
+ "migrations_success_forward": "Migrazione {id} completata",
+ "migrations_skip_migration": "Salto migrazione {id}...",
+ "migrations_running_forward": "Eseguo migrazione {id}...",
+ "migrations_pending_cant_rerun": "Queste migrazioni sono ancora in attesa, quindi non possono essere eseguite nuovamente: {ids}",
+ "migrations_not_pending_cant_skip": "Queste migrazioni non sono in attesa, quindi non possono essere saltate: {ids}",
+ "migrations_no_such_migration": "Non esiste una migrazione chiamata '{id}'",
+ "migrations_no_migrations_to_run": "Nessuna migrazione da eseguire",
+ "migrations_need_to_accept_disclaimer": "Per eseguire la migrazione {id}, devi accettare il disclaimer seguente:\n---\n{disclaimer}\n---\nSe accetti di eseguire la migrazione, per favore reinserisci il comando con l'opzione '--accept-disclaimer'.",
+ "migrations_must_provide_explicit_targets": "Devi specificare i target quando utilizzi '--skip' o '--force-rerun'",
+ "migrations_migration_has_failed": "Migrazione {id} non completata, annullamento. Errore: {exception}",
+ "migrations_loading_migration": "Caricamento migrazione {id}...",
+ "migrations_list_conflict_pending_done": "Non puoi usare sia '--previous' e '--done' allo stesso tempo.",
+ "migrations_exclusive_options": "'--auto', '--skip', e '--force-rerun' sono opzioni che si escludono a vicenda.",
+ "migrations_failed_to_load_migration": "Impossibile caricare la migrazione {id}: {error}",
+ "migrations_dependencies_not_satisfied": "Esegui queste migrazioni: '{dependencies_id}', prima di {id}.",
+ "migrations_cant_reach_migration_file": "Impossibile accedere ai file di migrazione nel path '%s'",
+ "migrations_already_ran": "Migrazioni già effettuate: {ids}",
+ "migration_0019_slapd_config_will_be_overwritten": "Sembra che tu abbia modificato manualmente la configurazione slapd. Per questa importante migrazione, YunoHost deve forzare l'aggiornamento della configurazione slapd. I file originali verranno back-uppati in {conf_backup_folder}.",
+ "migration_0019_rollback_success": "Sistema ripristinato.",
+ "migration_0019_migration_failed_trying_to_rollback": "Impossibile migrare... sto cercando di ripristinare il sistema.",
+ "migration_0019_can_not_backup_before_migration": "Il backup del sistema non è stato completato prima della migrazione. Errore: {error:s}",
+ "migration_0019_backup_before_migration": "Creando un backup del database LDAP e delle impostazioni delle app prima dell'effettiva migrazione.",
+ "migration_0019_add_new_attributes_in_ldap": "Aggiungi nuovi attributi ai permessi nel database LDAP",
+ "migration_0018_failed_to_reset_legacy_rules": "Impossibile resettare le regole iptables legacy: {error}",
+ "migration_0018_failed_to_migrate_iptables_rules": "Migrazione fallita delle iptables legacy a nftables: {error}",
+ "migration_0017_not_enough_space": "Libera abbastanza spazio in {path} per eseguire la migrazione.",
+ "migration_0017_postgresql_11_not_installed": "PostgreSQL 9.6 è installato, ma non PostgreSQL 11 ?! Qualcosa di strano potrebbe esser successo al tuo sistema :'( ...",
+ "migration_0017_postgresql_96_not_installed": "PostgreSQL non è stato installato sul tuo sistema. Nulla da fare.",
+ "migration_0015_weak_certs": "I seguenti certificati utilizzano ancora un algoritmo di firma debole e dovrebbero essere aggiornati per essere compatibili con la prossima versione di nginx: {certs}",
+ "migration_0015_cleaning_up": "Sto pulendo la cache e i pacchetti non più utili...",
+ "migration_0015_specific_upgrade": "Inizio l'aggiornamento dei pacchetti di sistema che necessitano di essere aggiornati da soli...",
+ "migration_0015_modified_files": "Attenzioni, i seguenti file sembrano esser stati modificati manualmente, e potrebbero essere sovrascritti dopo l'aggiornamento: {manually_modified_files}",
+ "migration_0015_problematic_apps_warning": "Alcune applicazioni potenzialmente problematiche sono state rilevate nel sistema. Sembra che non siano state installate attraverso il catalogo app YunoHost, o non erano flaggate come 'working'/'funzionanti'. Di conseguenza, non è possibile garantire che funzioneranno ancora dopo l'aggiornamento: {problematic_apps}",
+ "migration_0015_general_warning": "Attenzione, sappi che questa migrazione è un'operazione delicata. Il team YunoHost ha fatto del suo meglio nel controllarla e testarla, ma le probabilità che il sistema e/o qualche app si danneggi non sono nulle.\n\nPerciò, ti raccomandiamo di:\n\t- Effettuare un backup di tutti i dati e app importanti. Maggiori informazioni su https://yunohost.org/backup;\n\t- Sii paziente dopo aver lanciato l'operazione: in base alla tua connessione internet e al tuo hardware, potrebbero volerci alcune ore per aggiornare tutto.",
+ "migration_0015_system_not_fully_up_to_date": "Il tuo sistema non è completamente aggiornato. Esegui un aggiornamento classico prima di lanciare la migrazione a Buster.",
+ "migration_0015_not_enough_free_space": "Poco spazio libero disponibile in /var/! Dovresti avere almeno 1GB libero per effettuare questa migrazione.",
+ "migration_0015_not_stretch": "La distribuzione Debian corrente non è Stretch!",
+ "migration_0015_yunohost_upgrade": "Inizio l'aggiornamento del core di YunoHost...",
+ "migration_0015_still_on_stretch_after_main_upgrade": "Qualcosa è andato storto durante l'aggiornamento principale, il sistema sembra essere ancora su Debian Stretch",
+ "migration_0015_main_upgrade": "Inizio l'aggiornamento principale...",
+ "migration_0015_patching_sources_list": "Applico le patch a sources.lists...",
+ "migration_0015_start": "Inizio migrazione a Buster",
+ "migration_0011_failed_to_remove_stale_object": "Impossibile rimuovere l'oggetto {dn}: {error}",
+ "migration_0011_update_LDAP_schema": "Aggiornado lo schema LDAP...",
+ "migration_0011_update_LDAP_database": "Aggiornando il database LDAP...",
+ "migration_0011_migrate_permission": "Migrando permessi dalle impostazioni delle app a LDAP...",
+ "migration_0011_LDAP_update_failed": "Impossibile aggiornare LDAP. Errore: {error:s}",
+ "migration_0011_create_group": "Sto creando un gruppo per ogni utente...",
+ "migration_description_0019_extend_permissions_features": "Estendi il sistema di gestione dei permessi app",
+ "migration_description_0018_xtable_to_nftable": "Migra le vecchie regole di traffico network sul nuovo sistema nftable",
+ "migration_description_0017_postgresql_9p6_to_11": "Migra i database da PostgreSQL 9.6 a 11",
+ "migration_description_0016_php70_to_php73_pools": "MIgra i file di configurazione 'pool' di php7.0-fpm su php7.3",
+ "migration_description_0015_migrate_to_buster": "Aggiorna il sistema a Debian Buster e YunoHost 4.X",
+ "migrating_legacy_permission_settings": "Impostando le impostazioni legacy dei permessi..",
+ "mailbox_disabled": "E-mail disabilitate per l'utente {user:s}",
+ "log_user_permission_reset": "Resetta il permesso '{}'",
+ "log_user_permission_update": "Aggiorna gli accessi del permesso '{}'",
+ "log_user_group_update": "Aggiorna il gruppo '{}'",
+ "log_user_group_delete": "Cancella il gruppo '{}'",
+ "log_user_group_create": "Crea il gruppo '[}'",
+ "log_permission_url": "Aggiorna l'URL collegato al permesso '{}'",
+ "log_permission_delete": "Cancella permesso '{}'",
+ "log_permission_create": "Crea permesso '{}'",
+ "log_app_config_apply": "Applica la configurazione all'app '{}'",
+ "log_app_config_show_panel": "Mostra il pannello di configurazione dell'app '{}'",
+ "log_app_action_run": "Esegui l'azione dell'app '{}'",
+ "log_operation_unit_unclosed_properly": "Operazion unit non è stata chiusa correttamente",
+ "invalid_regex": "Regex invalida:'{regex:s}'",
+ "hook_list_by_invalid": "Questa proprietà non può essere usata per listare gli hooks",
+ "hook_json_return_error": "Impossibile leggere la risposta del hook {path:s}. Errore: {msg:s}. Contenuto raw: {raw_content}",
+ "group_user_not_in_group": "L'utente {user} non è nel gruppo {group}",
+ "group_user_already_in_group": "L'utente {user} è già nel gruppo {group}",
+ "group_update_failed": "Impossibile aggiornare il gruppo '{group}': {error}",
+ "group_updated": "Gruppo '{group}' aggiornato",
+ "group_unknown": "Gruppo '{group:s}' sconosciuto",
+ "group_deletion_failed": "Impossibile cancellare il gruppo '{group}': {error}",
+ "group_deleted": "Gruppo '{group}' cancellato",
+ "group_cannot_be_deleted": "Il gruppo {group} non può essere eliminato manualmente.",
+ "group_cannot_edit_primary_group": "Il gruppo '{group}' non può essere modificato manualmente. È il gruppo principale con lo scopo di contenere solamente uno specifico utente.",
+ "group_cannot_edit_visitors": "Il gruppo 'visitatori' non può essere modificato manualmente. È un gruppo speciale che rappresenta i visitatori anonimi",
+ "group_cannot_edit_all_users": "Il gruppo 'all_users' non può essere modificato manualmente. È un gruppo speciale che contiene tutti gli utenti registrati in YunoHost",
+ "group_creation_failed": "Impossibile creare il gruppo '{group}': {error}",
+ "group_created": "Gruppo '{group}' creato",
+ "group_already_exist_on_system_but_removing_it": "Il gruppo {group} esiste già tra i gruppi di sistema, ma YunoHost lo cancellerà...",
+ "group_already_exist_on_system": "Il gruppo {group} esiste già tra i gruppi di sistema",
+ "group_already_exist": "Il gruppo {group} esiste già",
+ "global_settings_setting_backup_compress_tar_archives": "Quando creo nuovi backup, usa un archivio (.tar.gz) al posto di un archivio non compresso (.tar). NB: abilitare quest'opzione significa create backup più leggeri, ma la procedura durerà di più e il carico CPU sarà maggiore.",
+ "global_settings_setting_smtp_relay_password": "Password del relay SMTP",
+ "global_settings_setting_smtp_relay_user": "User account del relay SMTP",
+ "global_settings_setting_smtp_relay_port": "Porta del relay SMTP",
+ "global_settings_setting_smtp_relay_host": "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.",
+ "global_settings_setting_smtp_allow_ipv6": "Permetti l'utilizzo di IPv6 per ricevere e inviare mail",
+ "global_settings_setting_pop3_enabled": "Abilita il protocollo POP3 per il server mail",
+ "dyndns_provider_unreachable": "Incapace di raggiungere il provider DynDNS {provider}: o il tuo YunoHost non è connesso ad internet o il server dynette è down.",
+ "dpkg_lock_not_available": "Impossibile eseguire il comando in questo momento perché un altro programma sta bloccando dpkg (il package manager di sistema)",
+ "domain_name_unknown": "Dominio '{domain}' sconosciuto",
+ "domain_cannot_remove_main_add_new_one": "Non puoi rimuovere '{domain:s}' visto che è il dominio principale nonché il tuo unico dominio, devi prima aggiungere un altro dominio eseguendo 'yunohost domain add ', impostarlo come dominio principale con 'yunohost domain main-domain n ', e solo allora potrai rimuovere il dominio '{domain:s}' eseguendo 'yunohost domain remove {domain:s}'.'",
+ "domain_cannot_add_xmpp_upload": "Non puoi aggiungere domini che iniziano per 'xmpp-upload.'. Questo tipo di nome è riservato per la funzionalità di upload XMPP integrata in YunoHost.",
+ "diagnosis_processes_killed_by_oom_reaper": "Alcuni processi sono stati terminati dal sistema che era a corto di memoria. Questo è un sintomo di insufficienza di memoria nel sistema o di un processo che richiede troppa memoria. Lista dei processi terminati:\n{kills_summary}",
+ "diagnosis_never_ran_yet": "Sembra che questo server sia stato impostato recentemente e non è presente nessun report di diagnostica. Dovresti partire eseguendo una diagnostica completa, da webadmin o da terminale con il comando 'yunohost diagnosis run'.",
+ "diagnosis_unknown_categories": "Le seguenti categorie sono sconosciute: {categories}",
+ "diagnosis_http_nginx_conf_not_up_to_date_details": "Per sistemare, ispeziona le differenze nel terminale eseguendo yunohost tools regen-conf nginx --dry-run --with-diff e se ti va bene, applica le modifiche con yunohost tools regen-conf ngix --force .",
+ "diagnosis_http_nginx_conf_not_up_to_date": "La configurazione nginx di questo dominio sembra esser stato modificato manualmente, e impedisce a YunoHost di controlalre se è raggiungibile su HTTP.",
+ "diagnosis_http_partially_unreachable": "Il dominio {domain} sembra irraggiungibile attraverso HTTP dall'esterno della tua LAN su IPv{failed}, anche se funziona su IPv{passed}.",
+ "diagnosis_http_unreachable": "Il dominio {domain} sembra irraggiungibile attraverso HTTP dall'esterno della tua LAN.",
+ "diagnosis_http_bad_status_code": "Sembra che un altro dispositivo (forse il tuo router internet) abbia risposto al posto del tuo server
1. La causa più comune è la porta 80 (e 443) non correttamente inoltrata al tuo server.
2. Su setup più complessi: assicurati che nessun firewall o reverse-proxy stia interferendo.",
+ "diagnosis_http_connection_error": "Errore connessione: impossibile connettersi al dominio richiesto, probabilmente è irraggiungibile.",
+ "diagnosis_http_timeout": "Andato in time-out cercando di contattare il server dall'esterno. Sembra essere irraggiungibile.
1. La causa più comune è la porta 80 (e 443) non correttamente inoltrata al tuo server.
2. Dovresti accertarti che il servizio nginx sia attivo.
3. Su setup più complessi: assicurati che nessun firewall o reverse-proxy stia interferendo.",
+ "diagnosis_http_ok": "Il dominio {domain} è raggiungibile attraverso HTTP al di fuori della tua LAN.",
+ "diagnosis_http_could_not_diagnose_details": "Errore: {error}",
+ "diagnosis_http_could_not_diagnose": "Non posso controllare se i domini sono raggiungibili dall'esterno su IPv{ipversion}.",
+ "diagnosis_http_hairpinning_issue_details": "Questo probabilmente è causato dal tuo ISP router. Come conseguenza, persone al di fuori della tua LAN saranno in grado di accedere al tuo server come atteso, ma non le persone all'interno della LAN (tipo te, immagino) utilizzando il dominio internet o l'IP globale. Dovresti essere in grado di migliorare la situazione visitando https://yunohost.org/dns_local_network",
+ "diagnosis_http_hairpinning_issue": "La tua rete locale sembra non avere \"hairpinning\" abilitato.",
+ "diagnosis_ports_forwarding_tip": "Per sistemare questo problema, probabilmente dovresti configurare l'inoltro della porta sul tuo router internet come descritto qui https://yunohost.org/isp_box_config",
+ "diagnosis_ports_needed_by": "Esporre questa porta è necessario per le feature di {category} (servizio {service})",
+ "diagnosis_ports_ok": "La porta {port} è raggiungibile dall'esterno.",
+ "diagnosis_ports_partially_unreachable": "La porta {port} non è raggiungibile dall'esterno su IPv{failed}.",
+ "diagnosis_ports_unreachable": "La porta {port} non è raggiungibile dall'esterno.",
+ "diagnosis_ports_could_not_diagnose_details": "Errore: {error}",
+ "diagnosis_ports_could_not_diagnose": "Impossibile diagnosticare se le porte sono raggiungibili dall'esterno su IPv{ipversion}.",
+ "diagnosis_description_regenconf": "Configurazioni sistema",
+ "diagnosis_description_mail": "Email",
+ "diagnosis_description_web": "Web",
+ "diagnosis_description_ports": "Esposizione porte",
+ "diagnosis_description_systemresources": "Risorse di sistema",
+ "diagnosis_description_services": "Check stato servizi",
+ "diagnosis_description_dnsrecords": "Record DNS",
+ "diagnosis_description_ip": "Connettività internet",
+ "diagnosis_description_basesystem": "Sistema base",
+ "diagnosis_security_vulnerable_to_meltdown_details": "Per sistemare, dovresti aggiornare il tuo sistema e fare il reboot per caricare il nuovo kernel linux (o contatta il tuo server provider se non funziona). Visita https://meltdownattack.com/ per maggiori info.",
+ "diagnosis_security_vulnerable_to_meltdown": "Sembra che tu sia vulnerabile alla vulnerabilità di sicurezza critica \"Meltdown\"",
+ "diagnosis_regenconf_manually_modified_details": "Questo è probabilmente OK se sai cosa stai facendo! YunoHost smetterà di aggiornare automaticamente questo file... Ma sappi che gli aggiornamenti di YunoHost potrebbero contenere importanti cambiamenti. Se vuoi, puoi controllare le differente con yunohost tools regen-conf {category} --dry-run --with-diff e forzare il reset della configurazione raccomandata con yunohost tools regen-conf {category} --force ",
+ "diagnosis_regenconf_manually_modified": "Il file di configurazione {file}
sembra esser stato modificato manualmente.",
+ "diagnosis_regenconf_allgood": "Tutti i file di configurazione sono allineati con le configurazioni raccomandate!",
+ "diagnosis_mail_queue_too_big": "Troppe email in attesa nella coda ({nb_pending} emails)",
+ "diagnosis_mail_queue_unavailable_details": "Errore: {error}",
+ "diagnosis_mail_queue_unavailable": "Impossibile consultare il numero di email in attesa",
+ "diagnosis_mail_queue_ok": "{nb_pending} emails in attesa nelle code",
+ "diagnosis_mail_blacklist_website": "Dopo aver identificato il motivo e averlo risolto, sentiti libero di chiedere di rimuovere il tuo IP o dominio da {blacklist_website}",
+ "diagnosis_mail_blacklist_reason": "Il motivo della blacklist è: {reason}",
+ "diagnosis_mail_blacklist_listed_by": "Il tuo IP o dominio {item}
è nella blacklist {blacklist_name}"
}
From 94c1fc8d417d11fc0e7ca872e7843a257cefd6ff Mon Sep 17 00:00:00 2001
From: Alexandre Aubin
Date: Sat, 19 Dec 2020 01:31:31 +0100
Subject: [PATCH 108/128] Fix duplicated stuff in fr string
---
locales/fr.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/locales/fr.json b/locales/fr.json
index ea7228e41..90190c223 100644
--- a/locales/fr.json
+++ b/locales/fr.json
@@ -404,7 +404,7 @@
"dpkg_lock_not_available": "Cette commande ne peut pas être exécutée pour le moment car un autre programme semble utiliser le verrou de dpkg (le gestionnaire de package système)",
"tools_upgrade_cant_unhold_critical_packages": "Impossible d'enlever le drapeau 'hold' pour les paquets critiques…",
"tools_upgrade_special_packages_explanation": "La mise à niveau spécifique à YunoHost se poursuivra en arrière-plan. Veuillez ne pas lancer d'autres actions sur votre serveur pendant les 10 prochaines minutes (selon la vitesse du matériel). Après cela, vous devrez peut-être vous reconnecter à l'administrateur Web. Le journal de mise à niveau sera disponible dans Outils → Journal (dans le webadmin) ou en utilisant la « liste des journaux yunohost » (à partir de la ligne de commande).",
- "update_apt_cache_failed": "Impossible de mettre à jour le cache APT (gestionnaire de paquets Debian). Voici un extrait du fichier sources.list qui pourrait vous aider à identifier les lignes problématiques :\n{sourceslist}\n{sourceslist}",
+ "update_apt_cache_failed": "Impossible de mettre à jour le cache APT (gestionnaire de paquets Debian). Voici un extrait du fichier sources.list qui pourrait vous aider à identifier les lignes problématiques :\n{sourceslist}",
"update_apt_cache_warning": "Des erreurs se sont produites lors de la mise à jour du cache APT (gestionnaire de paquets Debian). Voici un extrait des lignes du fichier sources.list qui pourrait vous aider à identifier les lignes problématiques :\n{sourceslist}",
"backup_permission": "Permission de sauvegarde pour {app:s}",
"group_created": "Le groupe '{group}' a été créé",
From 6c75aa00742bd459870f5e5dacf5f9046afbd2fe Mon Sep 17 00:00:00 2001
From: Alexandre Aubin
Date: Sat, 19 Dec 2020 01:47:52 +0100
Subject: [PATCH 109/128] Update changelog for 4.1.1
---
debian/changelog | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/debian/changelog b/debian/changelog
index 1fa414d9e..0996629f9 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,29 @@
+yunohost (4.1.1) testing; urgency=low
+
+ - [fix] Backup/restore DKIM keys ([#1098](https://github.com/yunohost/yunohost/pull/1098), [#1100](https://github.com/yunohost/yunohost/pull/1100))
+ - [fix] Backup/restore Dyndns keys ([#1101](https://github.com/yunohost/yunohost/pull/1101))
+ - [fix] mail: Add a max limit to number of recipients ([#1094](https://github.com/yunohost/yunohost/pull/1094))
+ - [fix] mail: Do not enforce encryption for relays .. some don't support it ... (11fe9d7e)
+ - [i18n] Translations updated for French, German, Italian, Occitan
+
+ Misc small fixes:
+
+ - [fix] misc: Prevent running `yunohost domain dns-conf` on arbirary domains ([#1099](https://github.com/yunohost/yunohost/pull/1099))
+ - [enh] misc: We don't care that 'apt-key output should not be parsed' (5422a49d)
+ - [fix] dnsmasq: Avoid to define wildcard records locally ([#1102](https://github.com/yunohost/yunohost/pull/1102))
+ - [fix] ssowat: Fix indent ([#1103](https://github.com/yunohost/yunohost/pull/1103))
+ - [fix] nginx: Force-disable gzip for acme-challenge (c5d06af2)
+ - [enh] app helpers: Handle change php version ([#1107](https://github.com/yunohost/yunohost/pull/1107))
+ - [fix] permissions: Misc fixes ([#1104](https://github.com/yunohost/yunohost/pull/1104), [#1105](https://github.com/yunohost/yunohost/pull/1105))
+ - [fix] certificates: Use organization name to check if from Lets Encrypt ([#1093](https://github.com/yunohost/yunohost/pull/1093))
+ - [enh] ldap: Increase ldap search size limit? ([#1074](https://github.com/yunohost/yunohost/pull/1074))
+ - [fix] app helpers: Avoid unecessarily reloading php7.3 too fast ([#1108](https://github.com/yunohost/yunohost/pull/1108))
+ - [fix] log: Fix a small issue where metadata could be None (because of empty yaml maybe?) (f9143d53)
+
+ Thanks to all contributors <3 ! (Christian Wehrli, Eric COURTEAU, Flavio Cristoforetti, Kay0u, Kayou, ljf, ljf (zamentur), Quentí)
+
+ -- Alexandre Aubin Sat, 19 Dec 2020 01:33:36 +0100
+
yunohost (4.1.0) testing; urgency=low
- [enh] Extends permissions features, improve legacy settings handling (YunoHost#861)
From 6419c2ac64ee1c2854001d3c9f1309a6552e9435 Mon Sep 17 00:00:00 2001
From: Alexandre Aubin
Date: Thu, 24 Dec 2020 15:38:39 +0100
Subject: [PATCH 110/128] Don't mess with Sury's pinning
---
data/helpers.d/apt | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/data/helpers.d/apt b/data/helpers.d/apt
index 59f233c60..7c6de912d 100644
--- a/data/helpers.d/apt
+++ b/data/helpers.d/apt
@@ -460,7 +460,8 @@ ynh_remove_extra_repo () {
name="${name:-$app}"
ynh_secure_remove "/etc/apt/sources.list.d/$name.list"
- ynh_secure_remove "/etc/apt/preferences.d/$name"
+ # Sury pinning is managed by the regenconf in the core...
+ [[ "$name" == "extra_php_version" ]] || ynh_secure_remove "/etc/apt/preferences.d/$name"
ynh_secure_remove "/etc/apt/trusted.gpg.d/$name.gpg" > /dev/null
ynh_secure_remove "/etc/apt/trusted.gpg.d/$name.asc" > /dev/null
@@ -548,6 +549,9 @@ ynh_pin_repo () {
append="tee"
fi
+ # Sury pinning is managed by the regenconf in the core...
+ [[ "$name" != "extra_php_version" ]] || return
+
mkdir --parents "/etc/apt/preferences.d"
echo "Package: $package
Pin: $pin
From 0c977d8c70c454d196cb44576b62df2d57d1f3a0 Mon Sep 17 00:00:00 2001
From: Laurent Peuch
Date: Mon, 28 Dec 2020 01:45:00 +0100
Subject: [PATCH 111/128] [fix] double return prevent new code from working
---
src/yunohost/domain.py | 2 --
1 file changed, 2 deletions(-)
diff --git a/src/yunohost/domain.py b/src/yunohost/domain.py
index b771d60ab..5d47aefe0 100644
--- a/src/yunohost/domain.py
+++ b/src/yunohost/domain.py
@@ -75,8 +75,6 @@ def domain_list(exclude_subdomains=False):
result_list = sorted(result_list, cmp_domain)
- return {'domains': result_list}
-
return {
'domains': result_list,
'main': _get_maindomain()
From bdff5937f09a8bdee95bcd45cc2762c7ac35ecdf Mon Sep 17 00:00:00 2001
From: Alexandre Aubin
Date: Mon, 28 Dec 2020 16:58:50 +0100
Subject: [PATCH 112/128] Handle permission regexes that may start with ^ or \
---
src/yunohost/permission.py | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/yunohost/permission.py b/src/yunohost/permission.py
index 8a5ef7260..547510323 100644
--- a/src/yunohost/permission.py
+++ b/src/yunohost/permission.py
@@ -668,6 +668,9 @@ def _validate_and_sanitize_permission_url(url, app_base_path, app):
For example:
re:/api/[A-Z]*$ -> domain.tld/app/api/[A-Z]*$
re:domain.tld/app/api/[A-Z]*$ -> domain.tld/app/api/[A-Z]*$
+
+ We can also have less-trivial regexes like:
+ re:^\/api\/.*|\/scripts\/api.js$
"""
from yunohost.domain import domain_list
@@ -692,9 +695,9 @@ def _validate_and_sanitize_permission_url(url, app_base_path, app):
if url.startswith('re:'):
# regex without domain
-
- if url.startswith('re:/'):
- validate_regex(url[4:])
+ # we check for the first char after 're:'
+ if url[3] in ['/', '^', '\\']:
+ validate_regex(url[3:])
return url
# regex with domain
From d77d5afb2cb6bb8f70a09845e1930177a340cf99 Mon Sep 17 00:00:00 2001
From: Alexandre Aubin
Date: Mon, 28 Dec 2020 20:05:51 +0100
Subject: [PATCH 113/128] When encountering unknown setting, also save the
regular setting so we don't re-encounter the unknown settings everytime
---
src/yunohost/settings.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/yunohost/settings.py b/src/yunohost/settings.py
index db5f56b45..3c79d7945 100644
--- a/src/yunohost/settings.py
+++ b/src/yunohost/settings.py
@@ -263,6 +263,7 @@ def _get_settings():
if unknown_settings:
try:
_save_settings(unknown_settings, location=unknown_settings_path)
+ _save_settings(settings)
except Exception as e:
logger.warning("Failed to save unknown settings (because %s), aborting." % e)
From b685a274812099523df4f78515cd5a62924e16bf Mon Sep 17 00:00:00 2001
From: Alexandre Aubin
Date: Mon, 28 Dec 2020 22:57:52 +0100
Subject: [PATCH 114/128] [yolo] Detect moar hardware name
---
data/hooks/diagnosis/00-basesystem.py | 10 ++++++++--
locales/en.json | 2 +-
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/data/hooks/diagnosis/00-basesystem.py b/data/hooks/diagnosis/00-basesystem.py
index d56faec98..edfb68beb 100644
--- a/data/hooks/diagnosis/00-basesystem.py
+++ b/data/hooks/diagnosis/00-basesystem.py
@@ -32,11 +32,17 @@ class BaseSystemDiagnoser(Diagnoser):
data={"virt": virt, "arch": arch},
summary="diagnosis_basesystem_hardware")
- # Also possibly the board name
+ # Also possibly the board / hardware name
if os.path.exists("/proc/device-tree/model"):
model = read_file('/proc/device-tree/model').strip().replace('\x00', '')
hardware["data"]["model"] = model
- hardware["details"] = ["diagnosis_basesystem_hardware_board"]
+ hardware["details"] = ["diagnosis_basesystem_hardware_model"]
+ elif os.path.exists("/sys/devices/virtual/dmi/id/sys_vendor"):
+ model = read_file("/sys/devices/virtual/dmi/id/sys_vendor").strip()
+ if os.path.exists("/sys/devices/virtual/dmi/id/product_name"):
+ model = "%s %s" % (model, read_file("/sys/devices/virtual/dmi/id/product_name").strip())
+ hardware["data"]["model"] = model
+ hardware["details"] = ["diagnosis_basesystem_hardware_model"]
yield hardware
diff --git a/locales/en.json b/locales/en.json
index 8510cdf58..c24fc831c 100644
--- a/locales/en.json
+++ b/locales/en.json
@@ -141,7 +141,7 @@
"confirm_app_install_thirdparty": "DANGER! This app is not part of Yunohost's app catalog. Installing third-party apps may compromise the integrity and security of your system. You should probably NOT install it unless you know what you are doing. NO SUPPORT will be provided if this app doesn't work or breaks your system… If you are willing to take that risk anyway, type '{answers:s}'",
"custom_app_url_required": "You must provide a URL to upgrade your custom app {app:s}",
"diagnosis_basesystem_hardware": "Server hardware architecture is {virt} {arch}",
- "diagnosis_basesystem_hardware_board": "Server board model is {model}",
+ "diagnosis_basesystem_hardware_model": "Server model is {model}",
"diagnosis_basesystem_host": "Server is running Debian {debian_version}",
"diagnosis_basesystem_kernel": "Server is running Linux kernel {kernel_version}",
"diagnosis_basesystem_ynh_single_version": "{package} version: {version} ({repo})",
From d6d75c528eaaa85c895fcaf7a3d3d025eaea77ab Mon Sep 17 00:00:00 2001
From: Kayou
Date: Tue, 29 Dec 2020 22:37:59 +0100
Subject: [PATCH 115/128] fix legacy permission migration
---
src/yunohost/utils/legacy.py | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/yunohost/utils/legacy.py b/src/yunohost/utils/legacy.py
index 1cc0246f3..4aaf62179 100644
--- a/src/yunohost/utils/legacy.py
+++ b/src/yunohost/utils/legacy.py
@@ -104,7 +104,7 @@ class SetupGroupPermissions():
allowed = [user for user in permission.split(',') if user in known_users]
else:
allowed = ["all_users"]
- permission_create(app + ".main", url=url, allowed=allowed, protected=False, sync_perm=False)
+ permission_create(app + ".main", url=url, allowed=allowed, show_tile=True, protected=False, sync_perm=False)
app_setting(app, 'allowed_users', delete=True)
@@ -185,12 +185,12 @@ def migrate_legacy_permission_settings(app=None):
if unprotected_urls != []:
permission_create(app + ".legacy_unprotected_uris", additional_urls=unprotected_urls,
auth_header=True, label=legacy_permission_label(app, "unprotected"),
- show_tile=False, allowed='visitors', protected=True, sync_perm=False)
+ show_tile=True, allowed='visitors', protected=False, sync_perm=False)
if protected_urls != []:
permission_create(app + ".legacy_protected_uris", additional_urls=protected_urls,
auth_header=True, label=legacy_permission_label(app, "protected"),
- show_tile=False, allowed=user_permission_list()['permissions'][app + ".main"]['allowed'],
- protected=True, sync_perm=False)
+ show_tile=True, allowed=user_permission_list()['permissions'][app + ".main"]['allowed'],
+ protected=False, sync_perm=False)
legacy_permission_settings = [
"skipped_uris",
From e70f27b7ff2edcd39bdea40a9b620e6978a0b2e7 Mon Sep 17 00:00:00 2001
From: Kayou
Date: Tue, 29 Dec 2020 22:48:10 +0100
Subject: [PATCH 116/128] Update legacy.py
---
src/yunohost/utils/legacy.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/yunohost/utils/legacy.py b/src/yunohost/utils/legacy.py
index 4aaf62179..434746a28 100644
--- a/src/yunohost/utils/legacy.py
+++ b/src/yunohost/utils/legacy.py
@@ -185,12 +185,12 @@ def migrate_legacy_permission_settings(app=None):
if unprotected_urls != []:
permission_create(app + ".legacy_unprotected_uris", additional_urls=unprotected_urls,
auth_header=True, label=legacy_permission_label(app, "unprotected"),
- show_tile=True, allowed='visitors', protected=False, sync_perm=False)
+ show_tile=False, allowed='visitors', protected=True, sync_perm=False)
if protected_urls != []:
permission_create(app + ".legacy_protected_uris", additional_urls=protected_urls,
auth_header=True, label=legacy_permission_label(app, "protected"),
- show_tile=True, allowed=user_permission_list()['permissions'][app + ".main"]['allowed'],
- protected=False, sync_perm=False)
+ show_tile=False, allowed=user_permission_list()['permissions'][app + ".main"]['allowed'],
+ protected=True, sync_perm=False)
legacy_permission_settings = [
"skipped_uris",
From 2b80bac7696eb3909640f12ca4cb03b1215a5d74 Mon Sep 17 00:00:00 2001
From: Kayou
Date: Tue, 29 Dec 2020 23:12:14 +0100
Subject: [PATCH 117/128] Fix restore permission
---
src/yunohost/backup.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/yunohost/backup.py b/src/yunohost/backup.py
index c0f11eae8..7179430e0 100644
--- a/src/yunohost/backup.py
+++ b/src/yunohost/backup.py
@@ -1343,7 +1343,7 @@ class RestoreManager():
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"),
- show_tile=permission_infos.get("show_tile", None),
+ show_tile=permission_infos.get("show_tile", True),
protected=permission_infos.get("protected", True),
sync_perm=False)
From 9e2e5ce55e5a378deddead113a883083632555e6 Mon Sep 17 00:00:00 2001
From: Kayou
Date: Tue, 29 Dec 2020 23:59:13 +0100
Subject: [PATCH 118/128] not protected by default
---
src/yunohost/backup.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/yunohost/backup.py b/src/yunohost/backup.py
index 7179430e0..242cd0bfd 100644
--- a/src/yunohost/backup.py
+++ b/src/yunohost/backup.py
@@ -1344,7 +1344,7 @@ class RestoreManager():
auth_header=permission_infos.get("auth_header"),
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", True),
+ protected=permission_infos.get("protected", False),
sync_perm=False)
permission_sync_to_user()
From 7e096a8aebe96cafd1753a74946a800a757a2874 Mon Sep 17 00:00:00 2001
From: Laurent Peuch
Date: Wed, 30 Dec 2020 11:25:54 +0100
Subject: [PATCH 119/128] [mod](user_create) only ask for one letter for
first/last name
---
data/actionsmap/yunohost.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/data/actionsmap/yunohost.yml b/data/actionsmap/yunohost.yml
index fb569dcd0..31b86c7ae 100644
--- a/data/actionsmap/yunohost.yml
+++ b/data/actionsmap/yunohost.yml
@@ -87,7 +87,7 @@ user:
ask: ask_firstname
required: True
pattern: &pattern_firstname
- - !!str ^([^\W\d_]{2,30}[ ,.'-]{0,3})+$
+ - !!str ^([^\W\d_]{1,30}[ ,.'-]{0,3})+$
- "pattern_firstname"
-l:
full: --lastname
@@ -95,7 +95,7 @@ user:
ask: ask_lastname
required: True
pattern: &pattern_lastname
- - !!str ^([^\W\d_]{2,30}[ ,.'-]{0,3})+$
+ - !!str ^([^\W\d_]{1,30}[ ,.'-]{0,3})+$
- "pattern_lastname"
-m:
full: --mail
From 2e8aa6442e9cd4236859a2c2ac3278a2cad91e13 Mon Sep 17 00:00:00 2001
From: Christian Wehrli
Date: Mon, 21 Dec 2020 15:49:52 +0000
Subject: [PATCH 120/128] Translated using Weblate (German)
Currently translated at 57.6% (363 of 630 strings)
Translation: YunoHost/core
Translate-URL: https://translate.yunohost.org/projects/yunohost/core/de/
---
locales/de.json | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/locales/de.json b/locales/de.json
index 9c8fa33c8..05b6b2a5e 100644
--- a/locales/de.json
+++ b/locales/de.json
@@ -464,12 +464,13 @@
"domain_cannot_add_xmpp_upload": "Eine hinzugefügte Domain darf nicht mit 'xmpp-upload.' beginnen. Dieser Name ist für das XMPP-Upload-Feature von YunoHost reserviert.",
"group_cannot_be_deleted": "Die Gruppe {group} kann nicht manuell entfernt werden.",
"group_cannot_edit_primary_group": "Die Gruppe '{group}' kann nicht manuell bearbeitet werden. Es ist die primäre Gruppe, welche dazu gedacht ist, nur einen spezifischen Benutzer zu enthalten.",
- "diagnosis_processes_killed_by_oom_reaper": "Einige Prozesse wurden vom System beendet, weil nicht genügend Arbeitsspeicher vorhanden ist. Das passiert normalerweise, wenn das System nicht genügend Arbeitsspeicher zur Verfügung hat oder wenn ein Prozess zu viel Speicher verbraucht. Zusammenfassung der beendeten Prozesse: {kills_summary}",
+ "diagnosis_processes_killed_by_oom_reaper": "Das System hat einige Prozesse beendet, weil ihm der Arbeitsspeicher ausgegangen ist. Das passiert normalerweise, wenn das System ingesamt nicht genügend Arbeitsspeicher zur Verfügung hat oder wenn ein einzelner Prozess zu viel Speicher verbraucht. Zusammenfassung der beendeten Prozesse: \n{kills_summary}",
"diagnosis_description_ports": "Offene Ports",
"additional_urls_already_added": "Zusätzliche URL '{url:s}' bereits hinzugefügt in der zusätzlichen URL für Berechtigung '{permission:s}'",
"additional_urls_already_removed": "Zusätzliche URL '{url:s}' bereits entfernt in der zusätzlichen URL für Berechtigung '{permission:s}'",
"app_label_deprecated": "Dieser Befehl ist veraltet! Bitte nutzen Sie den neuen Befehl 'yunohost user permission update' um das Applabel zu verwalten.",
"diagnosis_http_hairpinning_issue_details": "Das ist wahrscheinlich aufgrund Ihrer ISP Box / Router. Als Konsequenz können Personen von ausserhalb Ihres Netzwerkes aber nicht von innerhalb Ihres lokalen Netzwerkes (wie wahrscheinlich Sie selber?) wie gewohnt auf Ihren Server zugreifen, wenn Sie ihre Domäne oder Ihre öffentliche IP verwenden. Sie können die Situation wahrscheinlich verbessern, indem Sie ein einen Blick in https://yunohost.org/dns_local_network werfen",
"diagnosis_http_nginx_conf_not_up_to_date": "Jemand hat anscheinend die Konfiguration von Nginx manuell geändert. Diese Änderung verhindert, dass Yunohost eine Diagnose durchführen kann, wenn er via HTTP erreichbar ist.",
- "diagnosis_http_bad_status_code": "Anscheinend beantwortet ein anderes Gerät als Ihr Server die Anfrage (Vielleicht ihr Internetrouter).
1. Die häufigste Ursache ist, dass Port 80 (und 443) nicht richtig auf Ihren Server weitergeleitet wird.
2. Bei komplexeren Setups: Vergewissern Sie sich, dass keine Firewall und keine Reverse-Proxy interferieren."
+ "diagnosis_http_bad_status_code": "Anscheinend beantwortet ein anderes Gerät als Ihr Server die Anfrage (Vielleicht ihr Internetrouter).
1. Die häufigste Ursache ist, dass Port 80 (und 443) nicht richtig auf Ihren Server weitergeleitet wird.
2. Bei komplexeren Setups: Vergewissern Sie sich, dass keine Firewall und keine Reverse-Proxy interferieren.",
+ "diagnosis_never_ran_yet": "Sie haben kürzlich einen neuen Yunohost-Server installiert aber es gibt davon noch keinen Diagnosereport. Sie sollten eine Diagnose anstossen. Sie können das entweder vom Webadmin aus oder in der Kommandozeile machen. In der Kommandozeile verwenden Sie dafür den Befehl 'yunohost diagnosis run'."
}
From 28b9b672b3f0009c31ca09f04f66c181a98b1b20 Mon Sep 17 00:00:00 2001
From: Alexandre Aubin
Date: Thu, 31 Dec 2020 16:32:13 +0100
Subject: [PATCH 121/128] Update changelog for 4.1.2
---
debian/changelog | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/debian/changelog b/debian/changelog
index 0996629f9..9b824d9de 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,18 @@
+yunohost (4.1.2) testing; urgency=low
+
+ - [enh] diagnosis: Detect moar hardware name (b685a274)
+ - [fix] permissions: Handle regexes that may start with ^ or \ (bdff5937)
+ - [fix] permissions: Tile/protect status for legacy migration ([#1113](https://github.com/yunohost/yunohost/pull/1113))
+ - [fix] domain: double return prevent new code from working (0c977d8c)
+ - [fix] settings: When encountering unknown setting, also save the regular setting so we don't re-encounter the unknown settings everytime (d77d5afb)
+ - [fix] users: only ask for one letter for first/last name ([#1114](https://github.com/yunohost/yunohost/pull/1114))
+ - [fix] apt/sury: Tweak app helpers to not mess with Sury's pinning ([#1110](https://github.com/yunohost/yunohost/pull/1110))
+ - [i18n] Translations updated for German
+
+ Thanks to all contributors <3 ! (Bram, C. Wehrli, Kayou)
+
+ -- Alexandre Aubin Thu, 31 Dec 2020 16:26:51 +0100
+
yunohost (4.1.1) testing; urgency=low
- [fix] Backup/restore DKIM keys ([#1098](https://github.com/yunohost/yunohost/pull/1098), [#1100](https://github.com/yunohost/yunohost/pull/1100))
From 9eb6fa1961c07c319bd6f4ab62f245d0a75f5626 Mon Sep 17 00:00:00 2001
From: Laurent Peuch
Date: Fri, 1 Jan 2021 15:53:50 +0100
Subject: [PATCH 122/128] [enh] display domain_path of app on app list
---
src/yunohost/app.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/yunohost/app.py b/src/yunohost/app.py
index d32fb59a2..f5291e2ac 100644
--- a/src/yunohost/app.py
+++ b/src/yunohost/app.py
@@ -163,6 +163,9 @@ def app_info(app, full=False):
'version': local_manifest.get('version', '-'),
}
+ if "domain" in settings and "path" in settings:
+ ret["domain_path"] = settings["domain"] + settings["path"]
+
if not full:
return ret
From 165d2b32259f03f7c9c7916dc64d9efea54e6fb2 Mon Sep 17 00:00:00 2001
From: Laurent Peuch
Date: Fri, 1 Jan 2021 17:14:53 +0100
Subject: [PATCH 123/128] [mod] no catchall exceptions
---
src/yunohost/domain.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/yunohost/domain.py b/src/yunohost/domain.py
index 5d47aefe0..7dc4ee74d 100644
--- a/src/yunohost/domain.py
+++ b/src/yunohost/domain.py
@@ -162,7 +162,7 @@ def domain_add(operation_logger, domain, dyndns=False):
# Force domain removal silently
try:
domain_remove(domain, True)
- except:
+ except Exception:
pass
raise
From f2dc7bacd115bd72a767bab825215f774b3ccb23 Mon Sep 17 00:00:00 2001
From: Laurent Peuch
Date: Fri, 1 Jan 2021 17:28:08 +0100
Subject: [PATCH 124/128] [doc] tell users how to get all permissions
---
data/actionsmap/yunohost.yml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/data/actionsmap/yunohost.yml b/data/actionsmap/yunohost.yml
index 31b86c7ae..ff56c2ac8 100644
--- a/data/actionsmap/yunohost.yml
+++ b/data/actionsmap/yunohost.yml
@@ -307,7 +307,7 @@ user:
api: GET /users/permissions/
arguments:
permission:
- help: Name of the permission to fetch info about
+ help: Name of the permission to fetch info about (use "yunohost user permission list" and "yunohost user permission -f" to see all the current permissions)
### user_permission_update()
update:
@@ -315,7 +315,7 @@ user:
api: PUT /users/permissions/
arguments:
permission:
- help: Permission to manage (e.g. mail or nextcloud or wordpress.editors)
+ help: Permission to manage (e.g. mail or nextcloud or wordpress.editors) (use "yunohost user permission list" and "yunohost user permission -f" to see all the current permissions)
-a:
full: --add
help: Group or usernames to grant this permission to
@@ -346,7 +346,7 @@ user:
api: DELETE /users/permissions/
arguments:
permission:
- help: Permission to manage (e.g. mail or nextcloud or wordpress.editors)
+ help: Permission to manage (e.g. mail or nextcloud or wordpress.editors) (use "yunohost user permission list" and "yunohost user permission -f" to see all the current permissions)
ssh:
subcategory_help: Manage ssh access
From 2768def391ab580b011d954c880e7c5557d534bc Mon Sep 17 00:00:00 2001
From: Laurent Peuch
Date: Fri, 1 Jan 2021 18:32:41 +0100
Subject: [PATCH 125/128] [mod] avoid calling app_list in user_permission_list
---
src/yunohost/permission.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/yunohost/permission.py b/src/yunohost/permission.py
index 547510323..d213ac61c 100644
--- a/src/yunohost/permission.py
+++ b/src/yunohost/permission.py
@@ -51,7 +51,7 @@ def user_permission_list(short=False, full=False, ignore_system_perms=False, abs
"""
# Fetch relevant informations
- from yunohost.app import app_setting, app_list
+ from yunohost.app import app_setting, _installed_apps
from yunohost.utils.ldap import _get_ldap_interface, _ldap_path_extract
ldap = _get_ldap_interface()
permissions_infos = ldap.search('ou=permission,dc=yunohost,dc=org',
@@ -60,7 +60,7 @@ def user_permission_list(short=False, full=False, ignore_system_perms=False, abs
'URL', 'additionalUrls', 'authHeader', 'label', 'showTile', 'isProtected'])
# Parse / organize information to be outputed
- apps = [app["id"] for app in app_list()["apps"]]
+ apps = sorted(_installed_apps())
apps_base_path = {app: app_setting(app, 'domain') + app_setting(app, 'path')
for app in apps
if app_setting(app, 'domain') and app_setting(app, 'path')}
From effc87da2698eb4aad12485cc076bad1c2be5c14 Mon Sep 17 00:00:00 2001
From: Laurent Peuch
Date: Fri, 1 Jan 2021 18:19:42 +0100
Subject: [PATCH 126/128] [fix] key name of app label wasn't the real label
---
src/yunohost/app.py | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/yunohost/app.py b/src/yunohost/app.py
index f5291e2ac..89480d40d 100644
--- a/src/yunohost/app.py
+++ b/src/yunohost/app.py
@@ -154,12 +154,13 @@ def app_info(app, full=False):
raise YunohostError('app_not_installed', app=app, all_apps=_get_all_installed_apps_id())
local_manifest = _get_manifest_of_app(os.path.join(APPS_SETTING_PATH, app))
+ permissions = user_permission_list(full=True, absolute_urls=True)["permissions"]
settings = _get_app_settings(app)
ret = {
'description': _value_for_locale(local_manifest['description']),
- 'name': local_manifest['name'],
+ 'name': permissions.get(app + ".main", {}).get("label", local_manifest['name']),
'version': local_manifest.get('version', '-'),
}
@@ -180,9 +181,10 @@ def app_info(app, full=False):
ret['supports_backup_restore'] = (os.path.exists(os.path.join(APPS_SETTING_PATH, app, "scripts", "backup")) and
os.path.exists(os.path.join(APPS_SETTING_PATH, app, "scripts", "restore")))
ret['supports_multi_instance'] = is_true(local_manifest.get("multi_instance", False))
- permissions = user_permission_list(full=True, absolute_urls=True)["permissions"]
+
ret['permissions'] = {p: i for p, i in permissions.items() if p.startswith(app + ".")}
ret['label'] = permissions.get(app + ".main", {}).get("label")
+
if not ret['label']:
logger.warning("Failed to get label for app %s ?" % app)
return ret
From c7d315c7e0f8d2e441f129f6a0c2529b2c6b1275 Mon Sep 17 00:00:00 2001
From: Laurent Peuch
Date: Fri, 1 Jan 2021 17:44:07 +0100
Subject: [PATCH 127/128] [mod] also display app label on remove_domain with
apps
---
src/yunohost/domain.py | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/yunohost/domain.py b/src/yunohost/domain.py
index 7dc4ee74d..2bd195f53 100644
--- a/src/yunohost/domain.py
+++ b/src/yunohost/domain.py
@@ -182,7 +182,7 @@ def domain_remove(operation_logger, domain, force=False):
"""
from yunohost.hook import hook_callback
- from yunohost.app import app_ssowatconf
+ from yunohost.app import app_ssowatconf, app_info
from yunohost.utils.ldap import _get_ldap_interface
if not force and domain not in domain_list()['domains']:
@@ -204,8 +204,9 @@ def domain_remove(operation_logger, domain, force=False):
for app in _installed_apps():
settings = _get_app_settings(app)
+ label = app_info(app)["name"]
if settings.get("domain") == domain:
- apps_on_that_domain.append("%s (on https://%s%s)" % (app, domain, settings["path"]) if "path" in settings else app)
+ apps_on_that_domain.append("%s \"%s\" (on https://%s%s)" % (app, label, domain, settings["path"]) if "path" in settings else app)
if apps_on_that_domain:
raise YunohostError('domain_uninstall_app_first', apps=", ".join(apps_on_that_domain))
From e51a1b670e050c1a1842e44039e8e5fb64adae87 Mon Sep 17 00:00:00 2001
From: Laurent Peuch
Date: Fri, 1 Jan 2021 19:13:43 +0100
Subject: [PATCH 128/128] [ux] add command instructions and suggest change-url
for domain_uninstall_app_first
---
locales/en.json | 2 +-
src/yunohost/domain.py | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/locales/en.json b/locales/en.json
index c24fc831c..f8f296a7b 100644
--- a/locales/en.json
+++ b/locales/en.json
@@ -277,7 +277,7 @@
"domain_dyndns_root_unknown": "Unknown DynDNS root domain",
"domain_exists": "The domain already exists",
"domain_hostname_failed": "Unable to set new hostname. This might cause an issue later (it might be fine).",
- "domain_uninstall_app_first": "Those applications are still installed on your domain: {apps}. Please uninstall them before proceeding to domain removal",
+ "domain_uninstall_app_first": "Those applications are still installed on your domain:\n{apps}\n\nPlease uninstall them using 'yunohost app remove the_app_id' or move them to another domain using 'yunohost app change-url the_app_id' before proceeding to domain removal",
"domain_name_unknown": "Domain '{domain}' unknown",
"domain_unknown": "Unknown domain",
"domains_available": "Available domains:",
diff --git a/src/yunohost/domain.py b/src/yunohost/domain.py
index 2bd195f53..d581b8426 100644
--- a/src/yunohost/domain.py
+++ b/src/yunohost/domain.py
@@ -206,10 +206,10 @@ def domain_remove(operation_logger, domain, force=False):
settings = _get_app_settings(app)
label = app_info(app)["name"]
if settings.get("domain") == domain:
- apps_on_that_domain.append("%s \"%s\" (on https://%s%s)" % (app, label, domain, settings["path"]) if "path" in settings else app)
+ apps_on_that_domain.append(" - %s \"%s\" on https://%s%s" % (app, label, domain, settings["path"]) if "path" in settings else app)
if apps_on_that_domain:
- raise YunohostError('domain_uninstall_app_first', apps=", ".join(apps_on_that_domain))
+ raise YunohostError('domain_uninstall_app_first', apps="\n".join(apps_on_that_domain))
operation_logger.start()
ldap = _get_ldap_interface()