Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[enh] Refactor global settings to use the new config panel framework #1459

Merged
merged 37 commits into from Sep 4, 2022
Merged
Show file tree
Hide file tree
Changes from 31 commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
b6085fe
wip
Tagadda Jan 29, 2022
3fd14a4
wip
Tagadda Jan 30, 2022
35c5015
Update locales
Tagadda Jan 30, 2022
6428417
clean unused code
Tagadda Jan 30, 2022
f3349d4
settings migration wip
Tagadda Jan 30, 2022
2156fb4
settings migration
Tagadda Jan 31, 2022
1d782b3
Update locales again
Tagadda Feb 14, 2022
eb747cc
Search and replace old settings, first pass
Tagadda Feb 14, 2022
f0bf8dd
settings: use email.smtp.smtp_relay_enabled
Tagadda Feb 14, 2022
133ba3f
settings: backup settings.yml
Tagadda Feb 14, 2022
6563ebb
typo
Tagadda Feb 14, 2022
2bf3fed
settings: password stength...what could go wrong ?
Tagadda Feb 14, 2022
fbadceb
settings: use True and False for booleans
Tagadda Feb 14, 2022
0bad639
migration wip
Tagadda Feb 15, 2022
2d92c93
settings: use the yml when necessary
Tagadda Feb 16, 2022
dcb01a2
wip unit tests
Tagadda Feb 17, 2022
607a22d
use moulinette instead of os.system, os.chown, os.chmod
Tagadda Feb 25, 2022
c4d1882
wip tests
Tagadda Feb 26, 2022
7c97045
More explicit setting description
alexAubin Aug 4, 2022
5494ce5
Simplify code
alexAubin Aug 4, 2022
91b5618
Set 'entity_type' as 'global' for global config panel
alexAubin Aug 4, 2022
cae7e5b
Merge branch 'dev' into enh-global-settings-configpanel
alexAubin Aug 4, 2022
5d685ce
Unused imports, black
alexAubin Aug 4, 2022
76238db
config_settings.toml -> config_global.toml
alexAubin Aug 4, 2022
ce0362e
black settings.py
alexAubin Aug 4, 2022
9482373
Fix tests for global settings
alexAubin Aug 4, 2022
7f45b38
Fix logic bug, bool('False') in fact equals True é_è
alexAubin Aug 4, 2022
73ed031
global settings: fix moar tests ... disabling the failing ones becaus…
alexAubin Aug 4, 2022
fded695
Adapt script for missing i18n key following the change in setting nom…
alexAubin Aug 5, 2022
ed865dd
global settings: various fixes
alexAubin Aug 5, 2022
03eaad4
Rename i18n keys for global settings in translations to not loose pre…
alexAubin Aug 5, 2022
0ed05e2
i18n: fix weird phrasing for fr translation...
alexAubin Aug 6, 2022
133d8b6
global settings: misc naming/ui/ux/i18n improvements
alexAubin Aug 6, 2022
66901e4
global settings: drop the support old DSA hostkey support
alexAubin Aug 6, 2022
025df08
Merge remote-tracking branch 'origin/dev' into enh-global-settings-co…
alexAubin Aug 9, 2022
324c03e
Move setting migration to 0025 instead of 0024 because of the new pyt…
alexAubin Aug 9, 2022
38234c9
Merge branch 'dev' into enh-global-settings-configpanel
alexAubin Sep 3, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 2 additions & 2 deletions conf/postfix/main.cf
Expand Up @@ -81,7 +81,7 @@ alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydomain = {{ main_domain }}
mydestination = localhost
{% if relay_host == "" %}
{% if relay_enabled != "True" %}
relayhost =
{% else %}
relayhost = [{{ relay_host }}]:{{ relay_port }}
Expand Down Expand Up @@ -198,7 +198,7 @@ smtpd_client_recipient_rate_limit=150
# and after to send spam
disable_vrfy_command = yes

{% if relay_user != "" %}
{% if relay_enabled == "True" %}
# Relay email through an other smtp account
# enable SASL authentication
smtp_sasl_auth_enable = yes
Expand Down
4 changes: 2 additions & 2 deletions conf/ssh/sshd_config
Expand Up @@ -3,7 +3,7 @@

Protocol 2
# PLEASE: if you wish to change the ssh port properly in YunoHost, use this command:
# yunohost settings set security.ssh.port -v <port>
# yunohost settings set security.ssh.ssh_port -v <port>
Port {{ port }}

{% if ipv6_enabled == "true" %}ListenAddress ::{% endif %}
Expand Down Expand Up @@ -56,7 +56,7 @@ ChallengeResponseAuthentication no
UsePAM yes

# PLEASE: if you wish to force everybody to authenticate using ssh keys, run this command:
# yunohost settings set security.ssh.password_authentication -v no
# yunohost settings set security.ssh.ssh_password_authentication -v no
{% if password_authentication == "False" %}
PasswordAuthentication no
{% else %}
Expand Down
2 changes: 1 addition & 1 deletion hooks/backup/20-conf_ynh_settings
Expand Up @@ -13,6 +13,6 @@ backup_dir="${1}/conf/ynh"
ynh_backup "/etc/yunohost/firewall.yml" "${backup_dir}/firewall.yml"
ynh_backup "/etc/yunohost/current_host" "${backup_dir}/current_host"
[ ! -d "/etc/yunohost/domains" ] || ynh_backup "/etc/yunohost/domains" "${backup_dir}/domains"
[ ! -e "/etc/yunohost/settings.json" ] || ynh_backup "/etc/yunohost/settings.json" "${backup_dir}/settings.json"
[ ! -e "/etc/yunohost/settings.yml" ] || ynh_backup "/etc/yunohost/settings.yml" "${backup_dir}/settings.yml"
[ ! -d "/etc/yunohost/dyndns" ] || ynh_backup "/etc/yunohost/dyndns" "${backup_dir}/dyndns"
[ ! -d "/etc/dkim" ] || ynh_backup "/etc/dkim" "${backup_dir}/dkim"
8 changes: 4 additions & 4 deletions hooks/conf_regen/03-ssh
Expand Up @@ -15,14 +15,14 @@ do_pre_regen() {
ssh_keys=$(ls /etc/ssh/ssh_host_{ed25519,rsa,ecdsa}_key 2>/dev/null || true)

# Support legacy setting (this setting might be disabled by a user during a migration)
if [[ "$(yunohost settings get 'service.ssh.allow_deprecated_dsa_hostkey')" == "True" ]]; then
if [[ "$(yunohost settings get 'security.ssh.ssh_allow_deprecated_dsa_hostkey')" == "True" ]]; then
ssh_keys="$ssh_keys $(ls /etc/ssh/ssh_host_dsa_key 2>/dev/null || true)"
fi

# Support different strategy for security configurations
export compatibility="$(yunohost settings get 'security.ssh.compatibility')"
export port="$(yunohost settings get 'security.ssh.port')"
export password_authentication="$(yunohost settings get 'security.ssh.password_authentication')"
export compatibility="$(yunohost settings get 'security.ssh.ssh_compatibility')"
export port="$(yunohost settings get 'security.ssh.ssh_port')"
export password_authentication="$(yunohost settings get 'security.ssh.ssh_password_authentication')"
export ssh_keys
export ipv6_enabled
ynh_render_template "sshd_config" "${pending_dir}/etc/ssh/sshd_config"
Expand Down
12 changes: 6 additions & 6 deletions hooks/conf_regen/15-nginx
Expand Up @@ -56,7 +56,7 @@ do_pre_regen() {
# install / update plain conf files
cp plain/* "$nginx_conf_dir"
# remove the panel overlay if this is specified in settings
panel_overlay=$(yunohost settings get 'ssowat.panel_overlay.enabled')
panel_overlay=$(yunohost settings get 'misc.ssowat.ssowat_panel_overlay_enabled')
if [ "$panel_overlay" == "false" ] || [ "$panel_overlay" == "False" ]; then
echo "#" >"${nginx_conf_dir}/yunohost_panel.conf.inc"
fi
Expand All @@ -65,9 +65,9 @@ do_pre_regen() {
main_domain=$(cat /etc/yunohost/current_host)

# Support different strategy for security configurations
export redirect_to_https="$(yunohost settings get 'security.nginx.redirect_to_https')"
export compatibility="$(yunohost settings get 'security.nginx.compatibility')"
export experimental="$(yunohost settings get 'security.experimental.enabled')"
export redirect_to_https="$(yunohost settings get 'security.nginx.nginx_redirect_to_https')"
export compatibility="$(yunohost settings get 'security.nginx.nginx_compatibility')"
export experimental="$(yunohost settings get 'security.experimental.security_experimental_enabled')"
ynh_render_template "security.conf.inc" "${nginx_conf_dir}/security.conf.inc"

cert_status=$(yunohost domain cert status --json)
Expand All @@ -92,9 +92,9 @@ do_pre_regen() {

done

export webadmin_allowlist_enabled=$(yunohost settings get security.webadmin.allowlist.enabled)
export webadmin_allowlist_enabled=$(yunohost settings get security.webadmin.webadmin_allowlist_enabled)
if [ "$webadmin_allowlist_enabled" == "True" ]; then
export webadmin_allowlist=$(yunohost settings get security.webadmin.allowlist)
export webadmin_allowlist=$(yunohost settings get security.webadmin.webadmin_allowlist)
fi
ynh_render_template "yunohost_admin.conf.inc" "${nginx_conf_dir}/yunohost_admin.conf.inc"
ynh_render_template "yunohost_api.conf.inc" "${nginx_conf_dir}/yunohost_api.conf.inc"
Expand Down
16 changes: 9 additions & 7 deletions hooks/conf_regen/19-postfix
Expand Up @@ -22,17 +22,19 @@ do_pre_regen() {
main_domain=$(cat /etc/yunohost/current_host)

# Support different strategy for security configurations
export compatibility="$(yunohost settings get 'security.postfix.compatibility')"
export compatibility="$(yunohost settings get 'security.postfix.postfix_compatibility')"

# Add possibility to specify a relay
# Could be useful with some isp with no 25 port open or more complex setup
export relay_port=""
export relay_user=""
export relay_host="$(yunohost settings get 'smtp.relay.host')"
if [ -n "${relay_host}" ]; then
relay_port="$(yunohost settings get 'smtp.relay.port')"
relay_user="$(yunohost settings get 'smtp.relay.user')"
relay_password="$(yunohost settings get 'smtp.relay.password')"
export relay_host=""
export relay_enabled="$(yunohost settings get 'email.smtp.smtp_relay_enabled')"
if [ "${relay_enabled}" == "True" ]; then
relay_host="$(yunohost settings get 'email.smtp.smtp_relay_host')"
relay_port="$(yunohost settings get 'email.smtp.smtp_relay_port')"
relay_user="$(yunohost settings get 'email.smtp.smtp_relay_user')"
relay_password="$(yunohost settings get 'email.smtp.smtp_relay_password')"
alexAubin marked this conversation as resolved.
Show resolved Hide resolved

# Avoid to display "Relay account paswword" to other users
touch ${postfix_dir}/sasl_passwd
Expand All @@ -54,7 +56,7 @@ do_pre_regen() {
>"${default_dir}/postsrsd"

# adapt it for IPv4-only hosts
ipv6="$(yunohost settings get 'smtp.allow_ipv6')"
ipv6="$(yunohost settings get 'email.smtp.smtp_allow_ipv6')"
if [ "$ipv6" == "False" ] || [ ! -f /proc/net/if_inet6 ]; then
sed -i \
's/ \[::ffff:127.0.0.0\]\/104 \[::1\]\/128//g' \
Expand Down
2 changes: 1 addition & 1 deletion hooks/conf_regen/25-dovecot
Expand Up @@ -16,7 +16,7 @@ do_pre_regen() {
cp dovecot-ldap.conf "${dovecot_dir}/dovecot-ldap.conf"
cp dovecot.sieve "${dovecot_dir}/global_script/dovecot.sieve"

export pop3_enabled="$(yunohost settings get 'pop3.enabled')"
export pop3_enabled="$(yunohost settings get 'email.pop3.pop3_enabled')"
export main_domain=$(cat /etc/yunohost/current_host)
export domain_list="$YNH_DOMAINS"

Expand Down
2 changes: 1 addition & 1 deletion hooks/conf_regen/52-fail2ban
Expand Up @@ -16,7 +16,7 @@ do_pre_regen() {
cp yunohost.conf "${fail2ban_dir}/filter.d/yunohost.conf"
cp jail.conf "${fail2ban_dir}/jail.conf"

export ssh_port="$(yunohost settings get 'security.ssh.port')"
export ssh_port="$(yunohost settings get 'security.ssh.ssh_port')"
ynh_render_template "yunohost-jails.conf" "${fail2ban_dir}/jail.d/yunohost-jails.conf"
}

Expand Down
2 changes: 1 addition & 1 deletion hooks/restore/20-conf_ynh_settings
Expand Up @@ -3,6 +3,6 @@ backup_dir="$1/conf/ynh"
cp -a "${backup_dir}/current_host" /etc/yunohost/current_host
cp -a "${backup_dir}/firewall.yml" /etc/yunohost/firewall.yml
[ ! -d "${backup_dir}/domains" ] || cp -a "${backup_dir}/domains" /etc/yunohost/domains
[ ! -e "${backup_dir}/settings.json" ] || cp -a "${backup_dir}/settings.json" "/etc/yunohost/settings.json"
[ ! -e "${backup_dir}/settings.yml" ] || cp -a "${backup_dir}/settings.yml" "/etc/yunohost/settings.yml"
[ ! -d "${backup_dir}/dyndns" ] || cp -raT "${backup_dir}/dyndns" "/etc/yunohost/dyndns"
[ ! -d "${backup_dir}/dkim" ] || cp -raT "${backup_dir}/dkim" "/etc/dkim"
8 changes: 4 additions & 4 deletions locales/ar.json
Expand Up @@ -120,8 +120,6 @@
"app_upgrade_several_apps": "سوف يتم تحديث التطبيقات التالية: {apps}",
"ask_new_domain": "نطاق جديد",
"ask_new_path": "مسار جديد",
"global_settings_setting_security_password_admin_strength": "قوة الكلمة السرية الإدارية",
"global_settings_setting_security_password_user_strength": "قوة الكلمة السرية للمستخدم",
"password_too_simple_1": "يجب أن يكون طول الكلمة السرية على الأقل 8 حروف",
"already_up_to_date": "كل شيء على ما يرام. ليس هناك ما يتطلّب تحديثًا.",
"service_description_slapd": "يخزّن المستخدمين والنطاقات والمعلومات المتعلقة بها",
Expand Down Expand Up @@ -158,5 +156,7 @@
"diagnosis_description_services": "حالة الخدمات",
"diagnosis_description_dnsrecords": "تسجيلات خدمة DNS",
"diagnosis_description_ip": "الإتصال بالإنترنت",
"diagnosis_description_basesystem": "النظام الأساسي"
}
"diagnosis_description_basesystem": "النظام الأساسي",
"global_settings_setting_admin_strength": "قوة الكلمة السرية الإدارية",
"global_settings_setting_user_strength": "قوة الكلمة السرية للمستخدم"
}
21 changes: 10 additions & 11 deletions locales/ca.json
Expand Up @@ -155,12 +155,7 @@
"global_settings_cant_write_settings": "No s'ha pogut escriure el fitxer de configuració, raó: {reason}",
"global_settings_key_doesnt_exists": "La clau « {settings_key} » no existeix en la configuració global, podeu veure totes les claus disponibles executant « yunohost settings list »",
"global_settings_reset_success": "S'ha fet una còpia de seguretat de la configuració anterior a {path}",
"global_settings_setting_security_nginx_compatibility": "Solució de compromís entre compatibilitat i seguretat pel servidor web NGINX. Afecta els criptògrafs (i altres aspectes relacionats amb la seguretat)",
"global_settings_setting_security_password_admin_strength": "Robustesa de la contrasenya d'administrador",
"global_settings_setting_security_password_user_strength": "Robustesa de la contrasenya de l'usuari",
"global_settings_setting_security_ssh_compatibility": "Solució de compromís entre compatibilitat i seguretat pel servidor SSH. Afecta els criptògrafs (i altres aspectes relacionats amb la seguretat)",
"global_settings_unknown_setting_from_settings_file": "Clau de configuració desconeguda: «{setting_key}», refusada i guardada a /etc/yunohost/settings-unknown.json",
"global_settings_setting_service_ssh_allow_deprecated_dsa_hostkey": "Permetre la clau d'hoste DSA (obsolet) per la configuració del servei SSH",
"global_settings_unknown_type": "Situació inesperada, la configuració {setting} sembla tenir el tipus {unknown_type} però no és un tipus reconegut pel sistema.",
"good_practices_about_admin_password": "Esteu a punt de definir una nova contrasenya d'administrador. La contrasenya ha de tenir un mínim de 8 caràcters; tot i que és de bona pràctica utilitzar una contrasenya més llarga (és a dir una frase de contrasenya) i/o utilitzar diferents tipus de caràcters (majúscules, minúscules, dígits i caràcters especials).",
"hook_exec_failed": "No s'ha pogut executar el script: {path}",
Expand Down Expand Up @@ -207,7 +202,6 @@
"log_tools_reboot": "Reinicia el servidor",
"already_up_to_date": "No hi ha res a fer. Tot està actualitzat.",
"dpkg_lock_not_available": "No es pot utilitzar aquesta comanda en aquest moment ja que sembla que un altre programa està utilitzant el lock de dpkg (el gestor de paquets del sistema)",
"global_settings_setting_security_postfix_compatibility": "Solució de compromís entre compatibilitat i seguretat pel servidor Postfix. Afecta els criptògrafs (i altres aspectes relacionats amb la seguretat)",
"mail_alias_remove_failed": "No s'han pogut eliminar els àlies del correu «{mail}»",
"mail_domain_unknown": "El domini «{domain}» de l'adreça de correu no és vàlid. Utilitzeu un domini administrat per aquest servidor.",
"mail_forward_remove_failed": "No s'han pogut eliminar el reenviament de correu «{mail}»",
Expand Down Expand Up @@ -471,7 +465,6 @@
"diagnosis_services_running": "El servei {service} s'està executant!",
"diagnosis_services_conf_broken": "La configuració pel servei {service} està trencada!",
"diagnosis_ports_needed_by": "És necessari exposar aquest port per a les funcions {category} (servei {service})",
"global_settings_setting_pop3_enabled": "Activa el protocol POP3 per al servidor de correu",
"log_app_action_run": "Executa l'acció de l'aplicació «{}»",
"diagnosis_never_ran_yet": "Sembla que el servidor s'ha configurat recentment i encara no hi cap informe de diagnòstic per mostrar. S'ha d'executar un diagnòstic complet primer, ja sigui des de la pàgina web d'administració o utilitzant la comanda «yunohost diagnosis run» al terminal.",
"diagnosis_description_web": "Web",
Expand Down Expand Up @@ -506,7 +499,6 @@
"diagnosis_http_hairpinning_issue": "Sembla que la vostra xarxa no té el hairpinning activat.",
"diagnosis_http_nginx_conf_not_up_to_date": "La configuració NGINX d'aquest domini sembla que ha estat modificada manualment, i no deixa que YunoHost diagnostiqui si és accessible amb HTTP.",
"diagnosis_http_nginx_conf_not_up_to_date_details": "Per arreglar el problema, mireu les diferències amb la línia d'ordres utilitzant <cmd>yunohost tools regen-conf nginx --dry-run --with-diff</cmd> i si els canvis us semblen bé els podeu fer efectius utilitzant <cmd>yunohost tools regen-conf nginx --force</cmd>.",
"global_settings_setting_smtp_allow_ipv6": "Permet l'ús de IPv6 per rebre i enviar correus electrònics",
"diagnosis_mail_ehlo_unreachable_details": "No s'ha pogut establir una connexió amb el vostre servidor en el port 25 amb IPv{ipversion}. Sembla que el servidor no és accessible.<br>1. La causa més comú per aquest problema és que el port 25 <a href='https://yunohost.org/isp_box_config'>no està correctament redireccionat cap al vostre servidor</a>.<br>2. També us hauríeu d'assegurar que el servei postfix estigui funcionant.<br>3. En configuracions més complexes: assegureu-vos que que no hi hagi cap tallafoc ni reverse-proxy interferint.",
"diagnosis_mail_ehlo_wrong_details": "El EHLO rebut pel servidor de diagnòstic remot amb IPv{ipversion} és diferent al domini del vostre servidor.<br>EHLO rebut: <code>{wrong_ehlo}</code><br>Esperat: <code>{right_ehlo}</code><br>La causa més habitual d'aquest problema és que el port 25 <a href='https://yunohost.org/isp_box_config'>no està correctament reenviat cap al vostre servidor</a>. També podeu comprovar que no hi hagi un tallafocs o un reverse-proxy interferint.",
"diagnosis_mail_fcrdns_dns_missing": "No hi ha cap DNS invers definit per IPv{ipversion}. Alguns correus electrònics poden no entregar-se o poden ser marcats com a correu brossa.",
Expand All @@ -533,8 +525,6 @@
"app_packaging_format_not_supported": "No es pot instal·lar aquesta aplicació ja que el format del paquet no és compatible amb la versió de YunoHost del sistema. Hauríeu de considerar actualitzar el sistema.",
"diagnosis_dns_try_dyndns_update_force": "La configuració DNS d'aquest domini hauria de ser gestionada automàticament per YunoHost. Si aquest no és el cas, podeu intentar forçar-ne l'actualització utilitzant <cmd>yunohost dyndns update --force</cmd>.",
"regenconf_need_to_explicitly_specify_ssh": "La configuració ssh ha estat modificada manualment, però heu d'especificar explícitament la categoria «ssh» amb --force per fer realment els canvis.",
"global_settings_setting_backup_compress_tar_archives": "Comprimir els arxius (.tar.gz) en lloc d'arxius no comprimits (.tar) al crear noves còpies de seguretat. N.B.: activar aquesta opció permet fer arxius de còpia de seguretat més lleugers, però el procés inicial de còpia de seguretat serà significativament més llarg i més exigent a nivell de CPU.",
"global_settings_setting_smtp_relay_host": "L'amfitrió de tramesa SMTP que s'ha d'utilitzar per enviar correus electrònics en lloc d'aquesta instància de YunoHost. És útil si esteu en una de les següents situacions: el port 25 està bloquejat per el vostre proveïdor d'accés a internet o proveïdor de servidor privat virtual, si teniu una IP residencial llistada a DUHL, si no podeu configurar el DNS invers o si el servidor no està directament exposat a internet i voleu utilitzar-ne un altre per enviar correus electrònics.",
"unknown_main_domain_path": "Domini o ruta desconeguda per a «{app}». Heu d'especificar un domini i una ruta per a poder especificar una URL per al permís.",
"show_tile_cant_be_enabled_for_regex": "No podeu activar «show_title» ara, perquè la URL per al permís «{permission}» és una expressió regular",
"show_tile_cant_be_enabled_for_url_not_defined": "No podeu activar «show_title» ara, perquè primer s'ha de definir una URL per al permís «{permission}»",
Expand Down Expand Up @@ -568,5 +558,14 @@
"diagnosis_sshd_config_inconsistent": "Sembla que el port SSH s'ha modificat manualment a /etc/ssh/sshd_config. Des de YunoHost 4.2, hi ha un nou paràmetre global «security.ssh.port» per evitar modificar manualment la configuració.",
"diagnosis_sshd_config_insecure": "Sembla que la configuració SSH s'ha modificat manualment, i no es segura ha que no conté la directiva «AllowGroups» o «AllowUsers» per limitar l'accés a usuaris autoritzats.",
"backup_create_size_estimation": "L'arxiu tindrà aproximadament {size} de dades.",
"app_restore_script_failed": "S'ha produït un error en el script de restauració de l'aplicació"
"app_restore_script_failed": "S'ha produït un error en el script de restauració de l'aplicació",
"global_settings_setting_backup_compress_tar_archives_help": "Comprimir els arxius (.tar.gz) en lloc d'arxius no comprimits (.tar) al crear noves còpies de seguretat. N.B.: activar aquesta opció permet fer arxius de còpia de seguretat més lleugers, però el procés inicial de còpia de seguretat serà significativament més llarg i més exigent a nivell de CPU.",
"global_settings_setting_nginx_compatibility_help": "Solució de compromís entre compatibilitat i seguretat pel servidor web NGINX. Afecta els criptògrafs (i altres aspectes relacionats amb la seguretat)",
"global_settings_setting_admin_strength": "Robustesa de la contrasenya d'administrador",
"global_settings_setting_user_strength": "Robustesa de la contrasenya de l'usuari",
"global_settings_setting_postfix_compatibility_help": "Solució de compromís entre compatibilitat i seguretat pel servidor Postfix. Afecta els criptògrafs (i altres aspectes relacionats amb la seguretat)",
"global_settings_setting_ssh_compatibility_help": "Solució de compromís entre compatibilitat i seguretat pel servidor SSH. Afecta els criptògrafs (i altres aspectes relacionats amb la seguretat)",
"global_settings_setting_ssh_allow_deprecated_dsa_hostkey_help": "Permetre la clau d'hoste DSA (obsolet) per la configuració del servei SSH",
"global_settings_setting_smtp_allow_ipv6_help": "Permet l'ús de IPv6 per rebre i enviar correus electrònics",
"global_settings_setting_smtp_relay_enabled_help": "L'amfitrió de tramesa SMTP que s'ha d'utilitzar per enviar correus electrònics en lloc d'aquesta instància de YunoHost. És útil si esteu en una de les següents situacions: el port 25 està bloquejat per el vostre proveïdor d'accés a internet o proveïdor de servidor privat virtual, si teniu una IP residencial llistada a DUHL, si no podeu configurar el DNS invers o si el servidor no està directament exposat a internet i voleu utilitzar-ne un altre per enviar correus electrònics."
}