From cb1d02243e10c31c4dd59d1391068a82bab663a5 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Wed, 14 Oct 2020 01:31:01 +0200 Subject: [PATCH 01/58] Do not advertise upgrades for bad-quality apps --- src/yunohost/app.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/yunohost/app.py b/src/yunohost/app.py index 7d5d36c4d..8039d5a7f 100644 --- a/src/yunohost/app.py +++ b/src/yunohost/app.py @@ -182,19 +182,29 @@ def _app_upgradable(app_infos): from packaging import version # Determine upgradability - # In case there is neither update_time nor install_time, we assume the app can/has to be upgraded - # Firstly use the version to know if an upgrade is available - app_is_in_catalog = bool(app_infos.get("from_catalog")) + app_in_catalog = app_infos.get("from_catalog") installed_version = version.parse(app_infos.get("version", "0~ynh0")) version_in_catalog = version.parse(app_infos.get("from_catalog", {}).get("manifest", {}).get("version", "0~ynh0")) - if app_is_in_catalog and '~ynh' in str(installed_version) and '~ynh' in str(version_in_catalog): + if not app_in_catalog: + return "url_required" + + # Do not advertise upgrades for bad-quality apps + if not app_in_catalog.get("level", -1) >= 5 or app_in_catalog.get("state") != "working": + return "bad_quality" + + # If the app uses the standard version scheme, use it to determine + # upgradability + if '~ynh' in str(installed_version) and '~ynh' in str(version_in_catalog): if installed_version < version_in_catalog: return "yes" + else: + return "no" - if not app_is_in_catalog: - return "url_required" + # Legacy stuff for app with old / non-standard version numbers... + + # In case there is neither update_time nor install_time, we assume the app can/has to be upgraded if not app_infos["from_catalog"].get("lastUpdate") or not app_infos["from_catalog"].get("git"): return "url_required" From 1cb75497c431dd635318c17a42e1c5f90103d5e9 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Tue, 17 Nov 2020 15:29:24 +0100 Subject: [PATCH 02/58] Increase ldap size limit? --- data/templates/slapd/ldap.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/templates/slapd/ldap.conf b/data/templates/slapd/ldap.conf index 09aeb8b4f..dfcb17e41 100644 --- a/data/templates/slapd/ldap.conf +++ b/data/templates/slapd/ldap.conf @@ -8,7 +8,7 @@ BASE dc=yunohost,dc=org URI ldap://localhost:389 -#SIZELIMIT 12 +SIZELIMIT 10000 #TIMELIMIT 15 #DEREF never From d15ccc6c238555d24623a7083db621bd356a9b6f Mon Sep 17 00:00:00 2001 From: Kay0u Date: Thu, 3 Dec 2020 14:39:20 +0100 Subject: [PATCH 03/58] 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 04/58] 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 11fb2659c611181909684b250f1c70a7b28f8352 Mon Sep 17 00:00:00 2001 From: "ljf (zamentur)" Date: Fri, 4 Dec 2020 14:13:21 +0100 Subject: [PATCH 05/58] [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 06/58] [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 07/58] [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 08/58] [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 09/58] [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 10/58] [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 11/58] [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 12/58] [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 13/58] [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 14/58] 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 15/58] [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 16/58] 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 17/58] 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 18/58] 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 19/58] 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 20/58] 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 21/58] [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 22/58] 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 23/58] 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 24/58] 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 25/58] 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 26/58] 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 27/58] 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 28/58] 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 29/58] 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 30/58] 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 31/58] 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 32/58] 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 33/58] 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 34/58] 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 35/58] 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 36/58] 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 37/58] 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 38/58] 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 39/58] 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 40/58] 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 41/58] [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 42/58] 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 43/58] 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 44/58] [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 45/58] 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 46/58] 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 47/58] 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 48/58] 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 49/58] [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 50/58] 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 51/58] 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 52/58] [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 53/58] [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 54/58] [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 55/58] [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 56/58] [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 57/58] [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 58/58] [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()