diff --git a/debian/changelog b/debian/changelog index 3a4c51ceb..0968d1dd5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,6 +4,15 @@ yunohost (12.0.0) unstable; urgency=low -- Alexandre Aubin Thu, 04 May 2023 20:30:19 +0200 +yunohost (11.2.7) stable; urgency=low + + - helpers: fix fail2ban helper when using using --use_template arg ([#1743](https://github.com/yunohost/yunohost/pull/1743)) + - i18n: Translations updated for Basque, French, Galician + + Thanks to all contributors <3 ! (José M, OniriCorpe, ppr, xabirequejo) + + -- Alexandre Aubin Mon, 27 Nov 2023 14:13:54 +0100 + yunohost (11.2.6) stable; urgency=low - mail: Improve dovecots rspamd integration wrt junk/spam folder naming ([#1731](https://github.com/yunohost/yunohost/pull/1731)) diff --git a/helpers/fail2ban b/helpers/fail2ban index 28edeb604..648a90359 100644 --- a/helpers/fail2ban +++ b/helpers/fail2ban @@ -74,7 +74,7 @@ ynh_add_fail2ban_config() { ports=${ports:-http,https} use_template="${use_template:-0}" - if [ $use_template -ne 1 ]; then + if [ "$use_template" -ne 1 ]; then # Usage 1, no template. Build a config file from scratch. test -n "$logpath" || ynh_die --message="ynh_add_fail2ban_config expects a logfile path as first argument and received nothing." test -n "$failregex" || ynh_die --message="ynh_add_fail2ban_config expects a failure regex as second argument and received nothing." @@ -86,7 +86,7 @@ port = __PORTS__ filter = __APP__ logpath = __LOGPATH__ maxretry = __MAX_RETRY__ -" >$YNH_APP_BASEDIR/conf/f2b_jail.conf +" >"$YNH_APP_BASEDIR/conf/f2b_jail.conf" echo " [INCLUDES] @@ -94,20 +94,28 @@ before = common.conf [Definition] failregex = __FAILREGEX__ ignoreregex = -" >$YNH_APP_BASEDIR/conf/f2b_filter.conf +" >"$YNH_APP_BASEDIR/conf/f2b_filter.conf" fi ynh_add_config --template="f2b_jail.conf" --destination="/etc/fail2ban/jail.d/$app.conf" ynh_add_config --template="f2b_filter.conf" --destination="/etc/fail2ban/filter.d/$app.conf" + # if "$logpath" doesn't exist (as if using --use_template argument), assign + # "$logpath" using the one in the previously generated fail2ban conf file + if [ -z "${logpath:-}" ]; then + # the first sed deletes possibles spaces and the second one extract the path + logpath=$(grep "^logpath" "/etc/fail2ban/jail.d/$app.conf" | sed "s/ //g" | sed "s/logpath=//g") + fi + # Create the folder and logfile if they doesn't exist, # as fail2ban require an existing logfile before configuration mkdir -p "/var/log/$app" if [ ! -f "$logpath" ]; then touch "$logpath" - chown -R "$app:$app" "/var/log/$app" - chmod -R u=rwX,g=rX,o= "/var/log/$app" fi + # Make sure log folder's permissions are correct + chown -R "$app:$app" "/var/log/$app" + chmod -R u=rwX,g=rX,o= "/var/log/$app" ynh_systemd_action --service_name=fail2ban --action=reload --line_match="(Started|Reloaded) Fail2Ban Service" --log_path=systemd diff --git a/locales/eu.json b/locales/eu.json index c2a461445..349b25f9c 100644 --- a/locales/eu.json +++ b/locales/eu.json @@ -389,7 +389,7 @@ "group_already_exist_on_system_but_removing_it": "{group} taldea existitzen da sistemaren taldeetan, baina YunoHostek ezabatuko du…", "diagnosis_mail_fcrdns_nok_details": "Lehenik eta behin zure routerraren konfigurazio gunean edo hostingaren enpresaren aukeretan alderantzizko DNSa konfiguratzen saiatu beharko zinateke {ehlo_domain} erabiliz. (Hosting enpresaren arabera, ezinbestekoa da beraiekin harremanetan jartzea).", "diagnosis_mail_outgoing_port_25_ok": "SMTP posta zerbitzaria posta elektronikoa bidaltzeko gai da (25. atakaren irteera ez dago blokeatuta).", - "diagnosis_ports_partially_unreachable": "{port}. ataka ez dago eskuragarri kanpotik Pv{failed} erabiliz.", + "diagnosis_ports_partially_unreachable": "{port}. ataka ez dago eskuragarri kanpotik IPv{failed} erabiliz.", "diagnosis_ports_forwarding_tip": "Arazoa konpontzeko, litekeena da operadorearen routerrean ataken birbideraketa konfiguratu behar izatea, https://yunohost.org/isp_box_config-n agertzen den bezala", "domain_creation_failed": "Ezinezkoa izan da {domain} domeinua sortzea: {error}", "domains_available": "Erabilgarri dauden domeinuak:", diff --git a/locales/fr.json b/locales/fr.json index 190788ff1..7953e851b 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -776,11 +776,11 @@ "dyndns_unsubscribe_failed": "Impossible de se désinscrire du domaine DynDNS : {erreur}", "dyndns_unsubscribed": "Désinscription du domaine DynDNS", "dyndns_unsubscribe_denied": "Échec de la désinscription du domaine : informations d'identification non valides", - "dyndns_unsubscribe_already_unsubscribed": "Le domaine est déjà désabonné/retiré", - "dyndns_set_recovery_password_denied": "Échec de la définition du mot de passe de récupération : mot de passe non valide", + "dyndns_unsubscribe_already_unsubscribed": "Le domaine est déjà retiré", + "dyndns_set_recovery_password_denied": "Échec de la mise en place du mot de passe de récupération : mot de passe non valide", "dyndns_set_recovery_password_unknown_domain": "Échec de la définition du mot de passe de récupération : le domaine n'est pas enregistré", - "dyndns_set_recovery_password_invalid_password": "Échec de la définition du mot de passe de récupération : le mot de passe n'est pas assez fort/solide", - "dyndns_set_recovery_password_failed": "Échec de la définition du mot de passe de récupération : {erreur}", + "dyndns_set_recovery_password_invalid_password": "Échec de la mise en place du mot de passe de récupération : le mot de passe n'est pas assez fort/solide", + "dyndns_set_recovery_password_failed": "Échec de la mise en place du mot de passe de récupération : {erreur}", "dyndns_set_recovery_password_success": "Mot de passe de récupération changé !", "log_dyndns_unsubscribe": "Se désabonner d'un sous-domaine YunoHost '{}'", "dyndns_too_many_requests": "Le service dyndns de YunoHost a reçu trop de requêtes/demandes de votre part, attendez environ 1 heure avant de réessayer.", diff --git a/locales/gl.json b/locales/gl.json index 5d28e06e4..bf7d9212b 100644 --- a/locales/gl.json +++ b/locales/gl.json @@ -21,12 +21,12 @@ "backup_archive_cant_retrieve_info_json": "Non se puido cargar a info do arquivo '{archive}'... Non se obtivo o ficheiro info.json (ou é un json non válido).", "backup_archive_open_failed": "Non se puido abrir o arquivo de copia de apoio", "backup_archive_name_unknown": "Arquivo local de copia de apoio descoñecido con nome '{name}'", - "backup_archive_name_exists": "Xa existe un arquivo de copia con este nome.", + "backup_archive_name_exists": "Xa existe un ficheiro de copia con nome '{name}'.", "backup_archive_broken_link": "Non se puido acceder ao arquivo da copia (ligazón rota a {path})", "backup_archive_app_not_found": "Non se atopa {app} no arquivo da copia", "backup_applying_method_tar": "Creando o arquivo TAR da copia...", "backup_applying_method_custom": "Chamando polo método de copia de apoio personalizado '{method}'...", - "backup_applying_method_copy": "Copiando tódolos ficheiros necesarios...", + "backup_applying_method_copy": "Copiando os ficheiros na copia...", "backup_app_failed": "Non se fixo copia de {app}", "backup_actually_backuping": "Creando o arquivo de copia cos ficheiros recollidos...", "backup_abstract_method": "Este método de copia de apoio aínda non foi implementado", @@ -215,7 +215,7 @@ "diagnosis_mail_ehlo_wrong_details": "O EHLO recibido polo diagnosticador remoto en IPv{ipversion} é diferente ao dominio do teu servidor.
EHLO recibido: {wrong_ehlo}
Agardado: {right_ehlo}
A razón máis habitual para este problema é que o porto 25 non está correctamente redirixido ao teu servidor. Alternativamente, asegúrate de non ter un cortalumes ou reverse-proxy interferindo.", "diagnosis_regenconf_manually_modified_details": "Probablemente todo sexa correcto se sabes o que estás a facer! YunoHost non vai actualizar este ficheiro automáticamente... Pero ten en conta que as actualizacións de YunoHost poderían incluír cambios importantes recomendados. Se queres podes ver as diferenzas con yunohost tools regen-conf {category} --dry-run --with-diff e forzar o restablecemento da configuración recomendada con yunohost tools regen-conf {category} --force", "diagnosis_regenconf_manually_modified": "O ficheiro de configuración {file} semella que foi modificado manualmente.", - "diagnosis_regenconf_allgood": "Tódolos ficheiros de configuración seguen a configuración recomendada!", + "diagnosis_regenconf_allgood": "Todos os ficheiros de configuración seguen a configuración recomendada!", "diagnosis_mail_queue_too_big": "Hai demasiados emails pendentes na cola de correo ({nb_pending} emails)", "diagnosis_mail_queue_unavailable_details": "Erro: {error}", "diagnosis_mail_queue_unavailable": "Non se pode consultar o número de emails pendentes na cola", @@ -358,7 +358,7 @@ "log_app_install": "Instalar a app '{}'", "log_app_change_url": "Cambiar o URL da app '{}'", "log_operation_unit_unclosed_properly": "Non se pechou correctamente a unidade da operación", - "log_does_exists": "Non hai rexistro de operación co nome '{log}', usa 'yunohost log list' para ver tódolos rexistros de operacións dispoñibles", + "log_does_exists": "Non hai rexistro de operación co nome '{log}', usa 'yunohost log list' para ver todos os rexistros de operacións dispoñibles", "log_help_to_get_failed_log": "A operación '{desc}' non se completou. Comparte o rexistro completo da operación utilizando o comando 'yunohost log share {name}' para obter axuda", "log_link_to_failed_log": "Non se completou a operación '{desc}'. Por favor envía o rexistro completo desta operación premendo aquí para obter axuda", "migration_ldap_rollback_success": "Sistema restablecido.", @@ -484,7 +484,7 @@ "service_description_rspamd": "Filtra spam e outras características relacionadas co email", "service_description_redis-server": "Unha base de datos especial utilizada para o acceso rápido a datos, cola de tarefas e comunicación entre programas", "service_description_postfix": "Utilizado para enviar e recibir emails", - "service_description_nginx": "Serve ou proporciona acceso a tódolos sitios web hospedados no teu servidor", + "service_description_nginx": "Serve ou proporciona acceso a todos os sitios web hospedados no teu servidor", "service_description_mysql": "Almacena datos da app (base de datos SQL)", "service_description_metronome": "Xestiona as contas de mensaxería instantánea XMPP", "service_description_fail2ban": "Protexe contra ataques de forza bruta e outro tipo de ataques desde internet", @@ -693,7 +693,7 @@ "global_settings_setting_webadmin_allowlist_enabled": "Activar a lista de IP autorizados", "invalid_credentials": "Credenciais non válidas", "log_settings_reset": "Restablecer axuste", - "log_settings_reset_all": "Restablecer tódolos axustes", + "log_settings_reset_all": "Restablecer todos os axustes", "log_settings_set": "Aplicar axustes", "admins": "Admins", "all_users": "Tódalas usuarias de YunoHost", diff --git a/src/backup.py b/src/backup.py index 236c31f68..53f727fc2 100644 --- a/src/backup.py +++ b/src/backup.py @@ -1555,9 +1555,7 @@ class RestoreManager: operation_logger.success() # Call post_app_restore hook - env_dict = _make_environment_for_app_script( - app_instance_name - ) + env_dict = _make_environment_for_app_script(app_instance_name) hook_callback("post_app_restore", env=env_dict) else: self.targets.set_result("apps", app_instance_name, "Error") diff --git a/src/domain.py b/src/domain.py index e1f0c5673..f5b185165 100644 --- a/src/domain.py +++ b/src/domain.py @@ -336,7 +336,7 @@ def domain_add( # should identify the root of this bug... _force_clear_hashes([f"/etc/nginx/conf.d/{domain}.conf"]) regen_conf( - names=["nginx", "metronome", "dnsmasq", "postfix", "rspamd", "mdns"] + names=["nginx", "metronome", "dnsmasq", "postfix", "rspamd", "mdns", "dovecot"] ) app_ssowatconf() diff --git a/src/utils/resources.py b/src/utils/resources.py index ae0ddcc76..81efffc85 100644 --- a/src/utils/resources.py +++ b/src/utils/resources.py @@ -1107,7 +1107,9 @@ class AptDependenciesAppResource(AppResource): values["packages"] = [value.strip() for value in values["packages"].split(",")] # type: ignore if isinstance(values.get("packages_from_raw_bash"), str): - out, err = self.check_output_bash_snippet(values.get("packages_from_raw_bash")) + out, err = self.check_output_bash_snippet( + values.get("packages_from_raw_bash") + ) if err: logger.error( f"Error while running apt resource packages_from_raw_bash snippet for '{key}' extras:" @@ -1126,7 +1128,9 @@ class AptDependenciesAppResource(AppResource): ) # Drop 'extras' entries associated to no packages - self.extras = {key: values for key, values in self.extras.items() if values["packages"]} + self.extras = { + key: values for key, values in self.extras.items() if values["packages"] + } def provision_or_update(self, context: Dict = {}): script = " ".join(["ynh_install_app_dependencies", *self.packages])