diff --git a/debian/changelog b/debian/changelog index a929320d..4b086b85 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +moulinette (4.2.4) stable; urgency=low + + - [fix] Avoid warning and use safeloader ([#281](https://github.com/YunoHost/moulinette/pull/281)) + - [fix] Add warning when trying to feed non-string values to Popen env (2a89a82) + - [i18n] Translations updated for Esperanto, French, German, Portuguese + + Thanks to all contributors <3 ! (amirale qt, Christian Wehrli, Éric Gaspar, ljf, mifegui) + + -- Alexandre Aubin Thu, 19 Aug 2021 19:25:30 +0200 + moulinette (4.2.3.3) stable; urgency=low - [fix] Damn array args bug (2c9ec9f6) diff --git a/locales/de.json b/locales/de.json index 6062fabe..0d2e2340 100644 --- a/locales/de.json +++ b/locales/de.json @@ -29,9 +29,9 @@ "success": "Erfolg!", "unable_authenticate": "Anmelden fehlgeschlagen", "unable_retrieve_session": "Sitzung konnte nicht abgerufen werden. Grund: '{exception}'", - "values_mismatch": "Die Werte passen nicht", + "values_mismatch": "Die Werte passen nicht zusammen", "warning": "Warnung:", - "websocket_request_expected": "Eine WebSocket Anfrage wurde erwartet", + "websocket_request_expected": "Eine WebSocket-Anfrage wurde erwartet", "deprecated_command": "'{prog} {command}' ist veraltet und wird bald entfernt werden", "deprecated_command_alias": "'{prog} {old}' ist veraltet und wird bald entfernt werden, benutze '{prog} {new}' stattdessen", "unknown_group": "Gruppe '{group}' ist unbekannt", @@ -41,7 +41,7 @@ "corrupted_json": "Beschädigtes JSON gelesen von {ressource:s} (reason: {error:s})", "unknown_error_reading_file": "Unbekannter Fehler beim Lesen der Datei {file:s} (reason: {error:s})", "cannot_write_file": "Kann Datei {file:s} nicht schreiben (reason: {error:s})", - "cannot_open_file": "Kann Datei {file:s} nicht öffnen (reason: {error:s})", + "cannot_open_file": "Datei {file:s} konnte nicht geöffnet werden (Ursache: {error:s})", "corrupted_yaml": "Beschädigtes YAML gelesen von {ressource:s} (reason: {error:s})", "warn_the_user_that_lock_is_acquired": "Der andere Befehl wurde gerade abgeschlossen, starte jetzt diesen Befehl", "warn_the_user_about_waiting_lock_again": "Immer noch wartend...", @@ -57,5 +57,5 @@ "error_writing_file": "Fehler beim Schreiben von Datei {file:s}: {error:s}", "corrupted_toml": "Beschädigtes TOML gelesen von {ressource:s} (reason: {error:s})", "ldap_server_is_down_restart_it": "Der LDAP-Dienst wurde angehalten. Es wird versucht, ihn erneut zu starten...", - "session_expired": "Die Sitzung ist abgelaufen. Bitte neuauthentifizieren." + "session_expired": "Die Sitzung ist abgelaufen. Bitte authentifizieren Sie sich neu ." } diff --git a/locales/eo.json b/locales/eo.json index 2d45a9da..c37acb27 100644 --- a/locales/eo.json +++ b/locales/eo.json @@ -1,7 +1,7 @@ { "password": "Pasvorto", "colon": "{}: ", - "warn_the_user_that_lock_is_acquired": "la alia komando ĵus kompletigis, nun komencante ĉi tiun komandon", + "warn_the_user_that_lock_is_acquired": "La alia komando ĵus kompletigis, nun komencante ĉi tiun komandon", "warn_the_user_about_waiting_lock_again": "Ankoraŭ atendanta...", "warn_the_user_about_waiting_lock": "Alia komando de YunoHost funkcias ĝuste nun, ni atendas, ke ĝi finiĝos antaŭ ol funkcii ĉi tiu", "command_unknown": "Komando '{command:s}' nekonata?", @@ -9,13 +9,13 @@ "download_unknown_error": "Eraro dum elŝutado de datumoj de {url:s}: {error:s}", "download_timeout": "{url:s} prenis tro da tempo por respondi, rezignis.", "download_ssl_error": "SSL-eraro dum konekto al {url:s}", - "invalid_url": "Nevalida url {url:s} (ĉu ĉi tiu retejo ekzistas?)", + "invalid_url": "Nevalida URL{url:s} (ĉu ĉi tiu retejo ekzistas?)", "error_changing_file_permissions": "Eraro dum ŝanĝo de permesoj por {path:s}: {error:s}", "error_removing": "Eraro dum la forigo de {path:s}: {error:s}", "error_writing_file": "Eraro skribinte dosieron {file:s}: {error:s}", - "corrupted_toml": "Korupta toml legita el {ressource:s} (kialo: {error:s})", - "corrupted_yaml": "Korupta yaml legita de {ressource:s} (kialo: {error:s})", - "corrupted_json": "Koruptita json legita de {ressource:s} (kialo: {error:s})", + "corrupted_toml": "Korupta TOML legita el {ressource:s} (kialo: {error:s})", + "corrupted_yaml": "Korupta YAML legita de {ressource:s} (kialo: {error:s})", + "corrupted_json": "Koruptita JSON legis de {ressource:s} (Kialo: {error:s})", "unknown_error_reading_file": "Nekonata eraro dum provi legi dosieron {file:s} (kialo: {error:s})", "cannot_write_file": "Ne povis skribi dosieron {file:s} (kialo: {error:s})", "cannot_open_file": "Ne povis malfermi dosieron {file: s} (kialo: {error: s})", @@ -54,5 +54,7 @@ "authentication_profile_required": "Aŭtentigo al la profilo '{profile}' bezonata", "argument_required": "Argumento '{argument}' estas bezonata", "logged_out": "Ensalutinta", - "invalid_token": "Nevalida tokeno - bonvolu autentiki" + "invalid_token": "Nevalida tokeno - bonvolu autentiki", + "ldap_server_is_down_restart_it": "La LDAP-servo malpliiĝas, provu rekomenci ĝin...", + "session_expired": "La sesio eksvalidiĝis. Bonvolu re-aŭtentikigi." } diff --git a/locales/fr.json b/locales/fr.json index 9eb5edb1..c6f9371f 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -4,7 +4,7 @@ "authentication_required": "Authentification requise", "authentication_required_long": "L’authentification est requise pour exécuter cette action", "colon": "{} : ", - "confirm": "Confirmez : {prompt}", + "confirm": "Confirmez {prompt}", "deprecated_command": "'{prog} {command}' est déprécié et sera bientôt supprimé", "deprecated_command_alias": "'{prog} {old}' est déprécié et sera bientôt supprimé, utilisez '{prog} {new}' à la place", "error": "Erreur :", diff --git a/locales/pt.json b/locales/pt.json index e0081b9b..2e9ac580 100644 --- a/locales/pt.json +++ b/locales/pt.json @@ -1,5 +1,5 @@ { - "argument_required": "O argumento {argument} é obrigatório", + "argument_required": "O argumento '{argument}' é obrigatório", "authentication_profile_required": "Autenticação requerida para o perfil '{profile}'", "authentication_required": "Autenticação obrigatória", "authentication_required_long": "É preciso autenticar-se para realizar esta ação", diff --git a/locales/uk.json b/locales/uk.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/locales/uk.json @@ -0,0 +1 @@ +{} diff --git a/moulinette/actionsmap.py b/moulinette/actionsmap.py index 9855cd95..86232096 100644 --- a/moulinette/actionsmap.py +++ b/moulinette/actionsmap.py @@ -383,7 +383,7 @@ class ExtraArgumentParser(object): def ordered_yaml_load(stream): - class OrderedLoader(yaml.Loader): + class OrderedLoader(yaml.SafeLoader): pass OrderedLoader.add_constructor( diff --git a/moulinette/utils/process.py b/moulinette/utils/process.py index b8d5b915..32d220c8 100644 --- a/moulinette/utils/process.py +++ b/moulinette/utils/process.py @@ -2,6 +2,7 @@ import subprocess import os import threading import queue +import logging # This import is unused in this file. It will be deleted in future (W0611 PEP8), # but for the momment we keep it due to yunohost moulinette script that used @@ -12,7 +13,7 @@ quote # This line is here to avoid W0611 PEP8 error (see comments above) # Prevent to import subprocess only for common classes CalledProcessError = subprocess.CalledProcessError - +logger = logging.getLogger("moulinette.utils.process") # Alternative subprocess methods --------------------------------------- @@ -70,6 +71,9 @@ def call_async_output(args, callback, **kwargs): kwargs["env"] = os.environ kwargs["env"]["YNH_STDINFO"] = str(stdinfo.fdWrite) + if "env" in kwargs and not all(isinstance(v, str) for v in kwargs["env"].values()): + logger.warning("While trying to call call_async_output: env contained non-string values, probably gonna cause issue in Popen(...)") + try: p = subprocess.Popen(args, **kwargs)