Merge remote-tracking branch 'origin/dev' into bookworm

This commit is contained in:
Alexandre Aubin 2023-12-28 02:57:12 +01:00
commit 0a01423408
13 changed files with 147 additions and 87 deletions

View file

@ -56,7 +56,7 @@ userdb {
userdb {
driver = passwd-file
args = /etc/dovecot/app-senders-passwd
args = username_format=%n /etc/dovecot/app-senders-passwd
}
protocol imap {

View file

@ -93,14 +93,14 @@ recipient_delimiter = +
inet_interfaces = all
#### Fit to the maximum message size to 25mb, more than allowed by GMail or Yahoo ####
# /!\ This size is the size of the attachment in base64.
# /!\ This size is the size of the attachment in base64.
# BASE64_SIZE_IN_BYTE = ORIGINAL_SIZE_IN_MEGABYTE * 1,37 *1024*1024 + 980
# See https://serverfault.com/questions/346895/postfix-mail-size-counting
message_size_limit = 35914708
# Virtual Domains Control
virtual_mailbox_domains = ldap:/etc/postfix/ldap-domains.cf
virtual_mailbox_maps = ldap:/etc/postfix/ldap-accounts.cf
virtual_mailbox_maps = ldap:/etc/postfix/ldap-accounts.cf,hash:/etc/postfix/app_senders_login_maps
virtual_mailbox_base =
virtual_alias_maps = ldap:/etc/postfix/ldap-aliases.cf,ldap:/etc/postfix/ldap-groups.cf
virtual_alias_domains =

View file

@ -1,2 +1,4 @@
# This maps domain to certificates to properly handle multi-domain context
# (also we need a comment in this file such that it's never empty to prevent regenconf issues)
{% for domain in domain_list.split() %}{{ domain }} /etc/yunohost/certs/{{ domain }}/key.pem /etc/yunohost/certs/{{ domain }}/crt.pem
{% endfor %}
{% endfor %}

21
debian/changelog vendored
View file

@ -4,6 +4,27 @@ yunohost (12.0.0) unstable; urgency=low
-- Alexandre Aubin <alex.aubin@mailoo.org> Thu, 04 May 2023 20:30:19 +0200
yunohost (11.2.9.1) stable; urgency=low
- helpers/utils: replace the damn ynh_die with a warning when patch fails to apply ... (0ed6769fc)
-- Alexandre Aubin <alex.aubin@mailoo.org> Thu, 28 Dec 2023 02:45:33 +0100
yunohost (11.2.9) stable; urgency=low
- users: Allow dots in usernames ([#1750](https://github.com/yunohost/yunohost/pull/1750))
- ynh_setup_source: properly handle --keep for directories when the dir already exists in the new setup (8e3e78884)
- ynh_setup_source: fix first source patches failure not triggering an error (770fdb686)
- ynh_use_logrotate: Refactor this madness (308ed0e17)
- systemutils: when checking debian version and system arch, redirect stderr to /dev/null to prevent stupid issues (830d7b47e)
- mail/apps: add mailbox/IMAP support for apps that declared a system user with mail enabled (#1745)
- mail: fix edge case bug with the postfix sni file when no domain has mail enabled (155418409)
- i18n: Translations updated for Basque, Polish
Thanks to all contributors <3 ! (Josue-T, Kuba Bazan, ljf, selfhoster1312, xabirequejo, YapWC)
-- Alexandre Aubin <alex.aubin@mailoo.org> Wed, 27 Dec 2023 18:45:30 +0100
yunohost (11.2.8.2) stable; urgency=low
- Aleks forgot to remove pdb.set_trace ... (54a6a1b3)

View file

@ -1,105 +1,92 @@
#!/bin/bash
FIRST_CALL_TO_LOGROTATE="true"
# Use logrotate to manage the logfile
#
# usage: ynh_use_logrotate [--logfile=/log/file] [--nonappend] [--specific_user=user/group]
# usage: ynh_use_logrotate [--logfile=/log/file] [--specific_user=user/group]
# | arg: -l, --logfile= - absolute path of logfile
# | arg: -n, --nonappend - (optional) Replace the config file instead of appending this new config.
# | arg: -u, --specific_user= - run logrotate as the specified user and group. If not specified logrotate is runned as root.
#
# If no `--logfile` is provided, `/var/log/$app` will be used as default.
# `logfile` can point to a directory or a file.
#
# It's possible to use this helper multiple times, each config will be added to
# the same logrotate config file. Unless you use the option `--non-append`
#
# Requires YunoHost version 2.6.4 or higher.
# Requires YunoHost version 3.2.0 or higher for the argument `--specific_user`
ynh_use_logrotate() {
# Stupid patch to remplace --non-append by --nonappend
# Because for some reason --non-append was supposed to be legacy
# (why is it legacy ? Idk maybe because getopts cant parse args with - in their names..)
# but there was no good communication about this, and now --non-append
# is still the most-used option, yet it was parsed with batshit stupid code
# So instead this loops over the positional args, and replace --non-append
# with --nonappend so it's transperent for the rest of the function...
# Stupid patch to ignore legacy --non-append and --nonappend
# which was never properly understood and improperly used and kind of bullshit
local all_args=( ${@} )
for I in $(seq 0 $(($# - 1)))
do
if [[ "${all_args[$I]}" == "--non-append" ]]
if [[ "${all_args[$I]}" == "--non-append" ]] || [[ "${all_args[$I]}" == "--nonappend" ]]
then
all_args[$I]="--nonappend"
unset all_args[$I]
fi
done
set -- "${all_args[@]}"
# Declare an array to define the options of this helper.
local legacy_args=lnu
local -A args_array=([l]=logfile= [n]=nonappend [u]=specific_user=)
# Argument parsing
local legacy_args=lu
local -A args_array=([l]=logfile= [u]=specific_user=)
local logfile
local nonappend
local specific_user
# Manage arguments with getopts
ynh_handle_getopts_args "$@"
logfile="${logfile:-}"
nonappend="${nonappend:-0}"
specific_user="${specific_user:-}"
# LEGACY CODE - PRE GETOPTS
if [ $# -gt 0 ] && [ "$(echo ${1:0:1})" != "-" ]; then
# If the given logfile parameter already exists as a file, or if it ends up with ".log",
# we just want to manage a single file
if [ -f "$1" ] || [ "$(echo ${1##*.})" == "log" ]; then
local logfile=$1
# Otherwise we assume we want to manage a directory and all its .log file inside
else
local logfile=$1/*.log
fi
set -o noglob
if [[ -z "$logfile" ]]; then
logfile="/var/log/${app}/*.log"
elif [[ "${logfile##*.}" != "log" ]] && [[ "${logfile##*.}" != "txt" ]]; then
logfile="$logfile/*.log"
fi
# LEGACY CODE
set +o noglob
for stuff in $logfile
do
mkdir --parents $(dirname "$stuff")
done
local customtee="tee --append"
if [ "$nonappend" -eq 1 ]; then
customtee="tee"
fi
if [ -n "$logfile" ]; then
if [ ! -f "$1" ] && [ "$(echo ${logfile##*.})" != "log" ]; then # Keep only the extension to check if it's a logfile
local logfile="$logfile/*.log" # Else, uses the directory and all logfile into it.
fi
else
logfile="/var/log/${app}/*.log" # Without argument, use a defaut directory in /var/log
fi
local su_directive=""
if [[ -n $specific_user ]]; then
su_directive=" # Run logorotate as specific user - group
su ${specific_user%/*} ${specific_user#*/}"
if [[ -n "$specific_user" ]]; then
su_directive="su ${specific_user%/*} ${specific_user#*/}"
fi
cat >./${app}-logrotate <<EOF # Build a config file for logrotate
local tempconf="$(mktemp)"
cat << EOF >$tempconf
$logfile {
# Rotate if the logfile exceeds 100Mo
# Rotate if the logfile exceeds 100Mo
size 100M
# Keep 12 old log maximum
# Keep 12 old log maximum
rotate 12
# Compress the logs with gzip
# Compress the logs with gzip
compress
# Compress the log at the next cycle. So keep always 2 non compressed logs
# Compress the log at the next cycle. So keep always 2 non compressed logs
delaycompress
# Copy and truncate the log to allow to continue write on it. Instead of move the log.
# Copy and truncate the log to allow to continue write on it. Instead of moving the log.
copytruncate
# Do not do an error if the log is missing
# Do not trigger an error if the log is missing
missingok
# Not rotate if the log is empty
# Do not rotate if the log is empty
notifempty
# Keep old logs in the same dir
# Keep old logs in the same dir
noolddir
$su_directive
}
EOF
mkdir --parents $(dirname "$logfile") # Create the log directory, if not exist
cat ${app}-logrotate | $customtee /etc/logrotate.d/$app >/dev/null # Append this config to the existing config file, or replace the whole config file (depending on $customtee)
chmod 644 "/etc/logrotate.d/$app" # Make sure permissions are correct (otherwise the config file could be ignored and the corresponding logs never rotated)
if [[ "$FIRST_CALL_TO_LOGROTATE" == "true" ]]
then
cat $tempconf > /etc/logrotate.d/$app
else
cat $tempconf >> /etc/logrotate.d/$app
fi
FIRST_CALL_TO_LOGROTATE="false"
# Make sure permissions are correct (otherwise the config file could be ignored and the corresponding logs never rotated)
chmod 644 "/etc/logrotate.d/$app"
}
# Remove the app's logrotate config.

View file

@ -351,13 +351,12 @@ ynh_setup_source() {
if [ -d "$YNH_APP_BASEDIR/sources/patches/" ]; then
local patches_folder=$(realpath $YNH_APP_BASEDIR/sources/patches/)
if (($(find $patches_folder -type f -name "${source_id}-*.patch" 2>/dev/null | wc --lines) > "0")); then
(
cd "$dest_dir"
for p in $patches_folder/${source_id}-*.patch; do
echo $p
patch --strip=1 <$p
done
) || ynh_die --message="Unable to apply patches"
pushd "$dest_dir"
for p in $patches_folder/${source_id}-*.patch; do
echo $p
patch --strip=1 <$p || ynh_print_warn --message="Packagers /!\\ patch $p failed to apply"
done
popd
fi
fi

View file

@ -192,7 +192,7 @@
"app_upgrade_several_apps": "Ondorengo aplikazioak eguneratuko dira: {apps}",
"backup_app_failed": "Ezinezkoa izan da {app}(r)en babeskopia egitea",
"backup_actually_backuping": "Bildutako fitxategiekin babeskopia sortzen…",
"backup_archive_name_exists": "Dagoeneko existitzen da izen bera duen babeskopia fitxategi bat.",
"backup_archive_name_exists": "Dagoeneko existitzen da '{name}' izena duen babeskopia-fitxategi bat.",
"backup_archive_name_unknown": "Ez da '{name}' izeneko babeskopia ezagutzen",
"backup_archive_open_failed": "Ezinezkoa izan da babeskopien fitxategia irekitzea",
"backup_archive_system_part_not_available": "'{part}' sistemaren atala ez dago erabilgarri babeskopia honetan",
@ -693,7 +693,7 @@
"global_settings_setting_security_experimental_enabled": "Segurtasun ezaugarri esperimentalak",
"registrar_infos": "Erregistro-enpresaren informazioa",
"global_settings_setting_pop3_enabled": "Gaitu POP3",
"global_settings_reset_success": "Berrezarri ezarpen orokorrak",
"global_settings_reset_success": "Berrezarri defektuzko ezarpenak",
"global_settings_setting_backup_compress_tar_archives": "Konprimatu babeskopiak",
"config_forbidden_readonly_type": "'{type}' mota ezin da ezarri readonly bezala; beste mota bat erabili balio hau emateko (argudioaren ida: '{id}').",
"diagnosis_using_stable_codename": "<cmd>apt</cmd> (sistemaren pakete kudeatzailea) 'stable' (egonkorra) izen kodea duten paketeak instalatzeko ezarrita dago une honetan, eta ez uneko Debianen bertsioaren (bullseye) izen kodea.",

View file

@ -126,7 +126,7 @@
"app_requirements_checking": "Sprawdzam wymagania dla aplikacji {app}...",
"app_upgrade_some_app_failed": "Niektórych aplikacji nie udało się zaktualizować",
"backup_app_failed": "Nie udało się utworzyć kopii zapasowej {app}",
"backup_archive_name_exists": "Archiwum kopii zapasowych o tej nazwie już istnieje.",
"backup_archive_name_exists": "Archiwum kopii zapasowych o nazwie '{name}' już istnieje.",
"backup_archive_open_failed": "Nie można otworzyć archiwum kopii zapasowej",
"backup_archive_writing_error": "Nie udało się dodać plików '{source}' (nazwanych w archiwum '{dest}') do utworzenia kopii zapasowej skompresowanego archiwum '{archive}'",
"backup_ask_for_copying_if_needed": "Czy chcesz wykonać kopię zapasową tymczasowo używając {size} MB? (Ta metoda jest stosowana, ponieważ niektóre pliki nie mogły zostać przygotowane przy użyciu bardziej wydajnej metody.)",
@ -188,11 +188,11 @@
"confirm_app_install_danger": "UWAGA! Ta aplikacja jest wciąż w fazie eksperymentalnej (jeśli nie działa jawnie)! Prawdopodobnie NIE powinieneś jej instalować, chyba że wiesz, co robisz. NIE ZOSTANIE udzielone wsparcie, jeśli ta aplikacja nie będzie działać poprawnie lub spowoduje uszkodzenie systemu... Jeśli mimo to jesteś gotów podjąć to ryzyko, wpisz '{answers}",
"confirm_app_install_thirdparty": "UWAGA! Ta aplikacja nie jest częścią katalogu aplikacji YunoHost. Instalowanie aplikacji innych firm może naruszyć integralność i bezpieczeństwo systemu. Prawdopodobnie NIE powinieneś jej instalować, chyba że wiesz, co robisz. NIE ZOSTANIE udzielone wsparcie, jeśli ta aplikacja nie będzie działać poprawnie lub spowoduje uszkodzenie systemu... Jeśli mimo to jesteś gotów podjąć to ryzyko, wpisz '{answers}'",
"config_apply_failed": "Nie udało się zastosować nowej konfiguracji: {error}",
"config_cant_set_value_on_section": "Nie można ustawić pojedynczej wartości dla całej sekcji konfiguracji.",
"config_cant_set_value_on_section": "Nie możesz ustawić pojedyńczej wartości dla całej sekcji konfiguracji.",
"config_no_panel": "Nie znaleziono panelu konfiguracji.",
"config_unknown_filter_key": "Klucz filtru '{filter_key}' jest niepoprawny.",
"config_validate_email": "Proszę podać poprawny adres e-mail",
"backup_hook_unknown": "Nieznany jest hook kopii zapasowej '{hook}'",
"backup_hook_unknown": "Zapasowy hook '{hook}' jest nieznany",
"backup_no_uncompress_archive_dir": "Nie istnieje taki katalog nieskompresowanego archiwum",
"backup_output_symlink_dir_broken": "Twój katalog archiwum {path} to uszkodzony symlink. Być może zapomniałeś o ponownym zamontowaniu lub podłączeniu nośnika przechowującego, do którego on wskazuje.",
"backup_system_part_failed": "Nie udało się wykonać kopii zapasowej części systemu {part}",
@ -209,12 +209,12 @@
"config_action_disabled": "Nie można uruchomić akcji '{action}', ponieważ jest ona wyłączona. Upewnij się, że spełnione są jej ograniczenia. Pomoc: {help}",
"config_action_failed": "Nie udało się uruchomić akcji '{action}': {error}",
"config_forbidden_readonly_type": "Typ '{type}' nie może być ustawiony jako tylko do odczytu. Użyj innego typu, aby wyświetlić tę wartość (odpowiednie ID argumentu: '{id}')",
"config_forbidden_keyword": "Słowo kluczowe '{keyword}' jest zastrzeżone. Nie można tworzyć ani używać panelu konfiguracji z pytaniem o tym identyfikatorze.",
"config_forbidden_keyword": "Słowo kluczowe '{keyword}' jest już zarezerwowane. Nie możesz tworzyć ani używać panelu konfiguracji z pytaniem o tym identyfikatorze.",
"backup_output_directory_forbidden": "Wybierz inną ścieżkę docelową. Kopie zapasowe nie mogą być tworzone w podfolderach /bin, /boot, /dev, /etc, /lib, /root, /run, /sbin, /sys, /usr, /var ani /home/yunohost.backup/archives",
"confirm_app_insufficient_ram": "UWAGA! Ta aplikacja wymaga {required} pamięci RAM do zainstalowania/aktualizacji, a obecnie dostępne jest tylko {current}. Nawet jeśli aplikacja mogłaby działać, proces instalacji/aktualizacji wymaga dużej ilości pamięci RAM, więc serwer może się zawiesić i niepowodzenie może być katastrofalne. Jeśli mimo to jesteś gotów podjąć to ryzyko, wpisz '{answers}'",
"app_not_upgraded_broken_system": "Aplikacja '{failed_app}' nie powiodła się w procesie aktualizacji i spowodowała uszkodzenie systemu. W rezultacie anulowane zostały aktualizacje następujących aplikacji: {apps}",
"app_not_upgraded_broken_system_continue": "Aplikacja '{failed_app}' nie powiodła się w procesie aktualizacji i spowodowała uszkodzenie systemu (parametr --continue-on-failure jest ignorowany). W rezultacie anulowane zostały aktualizacje następujących aplikacji: {apps}",
"certmanager_domain_http_not_working": "Domena {domain} nie wydaje się być dostępna przez HTTP. Sprawdź kategorię 'Strona internetowa' diagnostyki, aby uzyskać więcej informacji. (Jeśli wiesz, co robisz, użyj opcji '--no-checks', aby wyłączyć te sprawdzania.)",
"certmanager_domain_http_not_working": "Domena {domain} nie wydaje się być dostępna za pośrednictwem protokołu HTTP. Aby uzyskać więcej informacji, sprawdź kategorię 'Web' w diagnostyce. (Jeśli wiesz, co robisz, użyj '--no-checks', aby wyłączyć te kontrole.)",
"migration_0021_system_not_fully_up_to_date": "Twój system nie jest w pełni zaktualizowany! Proszę, wykonaj zwykłą aktualizację oprogramowania zanim rozpoczniesz migrację na system Bullseye.",
"global_settings_setting_smtp_relay_port": "Port przekaźnika SMTP",
"domain_config_cert_renew": "Odnów certyfikat Let's Encrypt",
@ -280,6 +280,50 @@
"certmanager_unable_to_parse_self_CA_name": "Nie można spasować nazwy organu samopodpisywanego (pliku: {file})",
"app_corrupt_source": "YunoHost był w stanie pobrać zasób {source_id} ({url}) dla {app}, ale zasób nie pasuje do oczekiwanego sumy kontrolnej. Może to oznaczać, że na twoim serwerze wystąpiła tymczasowa awaria sieci, LUB zasób został jakoś zmieniony przez dostawcę usługi (lub złośliwego aktora?) i pakowacze YunoHost muszą zbadać sprawę i zaktualizować manifest aplikacji, aby odzwierciedlić tę zmianę. \nOczekiwana suma kontrolna sha256: {expected_sha256} \nPobrana suma kontrolna sha256: {computed_sha256} \nRozmiar pobranego pliku: {size}”",
"ask_dyndns_recovery_password": "Hasło odzyskiwania DynDNS",
"certmanager_hit_rate_limit": "Zbyt wiele certyfikatów zostało ostatnio wydanych dla tej dokładnej grupy domen {domain}. Spróbuj ponownie później. Zobacz https://letsencrypt.org/docs/rate-limits/ aby uzyskać więcej informacji",
"apps_failed_to_upgrade_line": "\n * {app_id} (aby zobaczyć odpowiedni dziennik, wykonaj yunohost log show {operation_logger_name})"
"certmanager_hit_rate_limit": "Zbyt wiele certyfikatów zostało ostatnio wydanych dla dokładnie tej grupy domen {domain}. Spróbuj ponownie później. Zobacz https://letsencrypt.org/docs/rate-limits/ aby uzyskać więcej informacji",
"apps_failed_to_upgrade_line": "\n * {app_id} (aby zobaczyć odpowiedni dziennik, wykonaj yunohost log show {operation_logger_name})",
"diagnosis_basesystem_ynh_inconsistent_versions": "Używasz niespójnych wersji pakietów YunoHost... najprawdopodobniej z powodu nieudanej lub częściowej aktualizacji.",
"service_removed": "Usunięto usługę '{service}'",
"service_disabled": "Usługa '{service}' nie będzie już uruchamiana podczas uruchamiania systemu.",
"diagnosis_description_web": "Sieć",
"confirm_notifications_read": "OSTRZEŻENIE: Zanim przejdziesz dalej, powinieneś sprawdzić powyższe powiadomienia aplikacji, mogą tam być istotne informacje o których warto wiedzieć. [{answers}]",
"diagnosis_description_services": "Kontrola stanu usług",
"diagnosis_domain_expiration_error": "Niektóre domeny wygasną BARDZO WKRÓTCE!",
"diagnosis_domain_expiration_success": "Twoje domeny są zarejestrowane i nie wygasną w najbliższym czasie.",
"diagnosis_domain_expiration_warning": "Niektóre domeny wkrótce wygasną!",
"diagnosis_dns_specialusedomain": "Domena {domain} opiera się na domenie najwyższego poziomu specjalnego przeznaczenia (TLD), takiej jak .local lub .test i dlatego nie oczekuje się, że będzie zawierać rzeczywiste rekordy DNS.",
"danger": "Zagrożeniæ:",
"config_validate_url": "Powinien być poprawnym adresem internetowym (URL)",
"diagnosis_domain_expires_in": "Domena {domain} wygasa za {day} dni.",
"diagnosis_cant_run_because_of_dep": "Nie można przeprowadzić diagnostyki dla kategorii {category}, ponieważ występują poważne problemy związane z kategorią {dep}.",
"diagnosis_everything_ok": "Wszystko wygląda dobrze dla kategorii {category}!",
"diagnosis_found_errors": "Znaleziono istotne problemy związane z kategorią: {errors}!",
"diagnosis_dns_missing_record": "Zgodnie z zalecaną konfiguracją DNS powinieneś dodać rekord DNS z następującymi informacjami.<br>Typ: <code>{type</code><br>Nazwa: <code>{name</code><br >Wartość: <kod>{wartość</kod>",
"diagnosis_display_tip": "Aby zobaczyć znalezione problemy, możesz przejść do sekcji Diagnostyka w webadmin lub uruchomić z wiersza poleceń polecenie „yunohost diagnoza show --issues --human-readable”.",
"diagnosis_dns_point_to_doc": "eśli potrzebujesz pomocy w konfiguracji rekordów DNS, sprawdź dokumentację pod adresem <a href='https://yunohost.org/dns_config'>https://yunohost.org/dns_config</a>.",
"diagnosis_failed": "Nie udało się pobrać wyniku diagnostyki dla kategorii „{category}”: {error}",
"diagnosis_dns_bad_conf": "Brakuje niektórych rekordów DNS lub są one nieprawidłowe dla domeny {domain} (category {category})",
"diagnosis_dns_discrepancy": "Wydaje się, że następujący rekord DNS nie jest zgodny z zalecaną konfiguracją:<br>Typ: <code>{type</code><br>Nazwa: <code>{name</code><br>Aktualna wartość: < code>{current</code><br>Oczekiwana wartość: <code>{value</code>",
"diagnosis_domain_not_found_details": "Domena {domain} nie istnieje w bazie WHOIS lub wygasła!",
"custom_app_url_required": "Aby zaktualizować aplikację niestandardową {app}, musisz podać adres URL",
"diagnosis_description_ports": "Ujawnione porty",
"diagnosis_basesystem_ynh_single_version": "Wersja {pakietu}: {wersja} ({repo})",
"diagnosis_failed_for_category": "Diagnostyka nie powiodła się dla kategorii „{category}”: {error}",
"diagnosis_basesystem_hardware_model": "Model serwera to {model}",
"service_enabled": "Usługa '{service}' będzie teraz automatycznie uruchamiana podczas uruchamiania systemu.",
"confirm_app_install_warning": "Ostrzeżenie: Ta aplikacja może działać, ale nie jest dobrze zintegrowana z YunoHost. Niektóre funkcje, takie jak jednorazowe logowanie i tworzenie/przywracanie kopii zapasowych mogą być niedostępne. Zainstalować mimo to? [{answers}] ",
"diagnosis_apps_broken": "Ta aplikacja jest obecnie oznaczona jako uszkodzona w katalogu aplikacji YunoHost. Może to być problem tymczasowy, do czasu gdy opiekunowie próbują go naprawić. W międzyczasie aktualizacja tej aplikacji jest wyłączona.",
"diagnosis_apps_not_in_app_catalog": "Ta aplikacja nie znajduje się w katalogu aplikacji YunoHost. Jeśli była tam wcześniej i została usunięta, powinieneś rozważyć odinstalowanie tej aplikacji, ponieważ nie będzie otrzymywać aktualizacji, co może zagrażać integralności i bezpieczeństwu twojego systemu.",
"diagnosis_dns_try_dyndns_update_force": "Konfiguracja DNS tej domeny powinna być automatycznie zarządzana przez YunoHost. Jeśli tak nie jest, możesz spróbować wymusić aktualizację za pomocą <cmd>yunohost dyndns update --force</cmd>.",
"diagnosis_apps_bad_quality": "Ta aplikacja jest obecnie oznaczona jako uszkodzona w katalogu aplikacji YunoHost. Może to być problem tymczasowy, do czasu gdy opiekunowie próbują go naprawić. W międzyczasie aktualizacja tej aplikacji jest wyłączona.",
"diagnosis_apps_deprecated_practices": "Zainstalowana wersja tej aplikacji nadal korzysta z bardzo starych i przestarzałych praktyk pakowania. Naprawdę powinieneś rozważyć jego aktualizację.",
"diagnosis_apps_outdated_ynh_requirement": "Zainstalowana wersja tej aplikacji wymaga jedynie yunohost >= 2.x lub 3.x, co sugeruje, że nie jest ona zgodna z zalecanymi praktykami pakowania i narzędziami. Naprawdę powinieneś rozważyć jej aktualizację.",
"service_reloaded": "Usługa '{service}' została ponownie załadowana",
"service_reloaded_or_restarted": "Usługa '{service}' została ponownie załadowana lub uruchomiona ponownie",
"ask_dyndns_recovery_password_explain_unavailable": "Ta domena DynDNS jest już zarejestrowana. Jeśli jesteś osobą, która pierwotnie zarejestrowała tę domenę, możesz wprowadzić hasło odzyskiwania, aby ją odzyskać.",
"diagnosis_domain_expiration_not_found": "Nie udało się sprawdzić daty wygaśnięcia niektórych domen",
"diagnosis_domain_expiration_not_found_details": "Informacje WHOIS dotyczące domeny {domain} wydają się nie zawierać informacji o dacie jej wygaśnięcia?",
"diagnosis_high_number_auth_failures": "Ostatnio wystąpiła podejrzanie duża liczba błędów uwierzytelniania. Możesz upewnić się, że Fail2ban działa i jest poprawnie skonfigurowany, lub użyj niestandardowego portu dla SSH, jak wyjaśniono w https://yunohost.org/security.",
"service_remove_failed": "Nie można usunąć usługi '{service}",
"diagnosis_apps_issue": "Znaleziono problem z aplikacją {app}"
}

View file

@ -63,7 +63,7 @@ user:
help: The unique username to create
extra:
pattern: &pattern_username
- !!str ^[a-z0-9_]+$
- !!str ^[a-z0-9_\.]+$
- "pattern_username"
-F:
full: --fullname

View file

@ -3172,14 +3172,15 @@ def regen_mail_app_user_config_for_dovecot_and_postfix(only=None):
if "domain" not in settings or "mail_pwd" not in settings:
continue
mail_user = settings.get("mail_user", app)
mail_domain = settings.get("mail_domain", settings["domain"])
if dovecot:
hashed_password = _hash_user_password(settings["mail_pwd"])
dovecot_passwd.append(
f"{app}:{hashed_password}::::::allow_nets=::1,127.0.0.1/24,local"
f"{app}:{hashed_password}::::::allow_nets=::1,127.0.0.1/24,local,mail={mail_user}@{mail_domain}"
)
if postfix:
mail_user = settings.get("mail_user", app)
mail_domain = settings.get("mail_domain", settings["domain"])
postfix_map.append(f"{mail_user}@{mail_domain} {app}")
if dovecot:

View file

@ -379,6 +379,10 @@ def hook_exec(
r"pg_ctlcluster \d\d main start",
r"Ver\s*Cluster\s*Port\s*Status\s*Owner\s*Data\s*directory",
r"/var/lib/postgresql/\d\d/main /var/log/postgresql/postgresql-\d\d-main.log",
# Java boring messages
r"cannot open '/etc/ssl/certs/java/cacerts'",
# Misc
r"update-binfmts: warning:",
]
return all(not re.search(w, msg) for w in irrelevant_warnings)

View file

@ -36,7 +36,7 @@ from yunohost.utils.system import binary_to_human
logger = getLogger("yunohost.user")
FIELDS_FOR_IMPORT = {
"username": r"^[a-z0-9_]+$",
"username": r"^[a-z0-9_.]+$",
"firstname": r"^([^\W\d_]{1,30}[ ,.\'-]{0,3})+$",
"lastname": r"^([^\W\d_]{1,30}[ ,.\'-]{0,3})+$",
"password": r"^|(.{3,})$",
@ -609,7 +609,7 @@ def user_info(username):
if service_status("dovecot")["status"] != "running":
logger.warning(m18n.n("mailbox_used_space_dovecot_down"))
elif username not in user_permission_info("mail.main")["corresponding_users"]:
logger.warning(m18n.n("mailbox_disabled", user=username))
logger.debug(m18n.n("mailbox_disabled", user=username))
else:
try:
uid_ = user["uid"][0]

View file

@ -29,11 +29,13 @@ YUNOHOST_PACKAGES = ["yunohost", "yunohost-admin", "moulinette", "ssowat"]
def debian_version():
return check_output('grep "^VERSION_CODENAME=" /etc/os-release | cut -d= -f2')
return check_output(
'grep "^VERSION_CODENAME=" /etc/os-release 2>/dev/null | cut -d= -f2'
)
def system_arch():
return check_output("dpkg --print-architecture")
return check_output("dpkg --print-architecture 2>/dev/null")
def system_virt():
@ -44,7 +46,7 @@ def system_virt():
# Detect virt technology (if not bare metal) and arch
# Gotta have this "|| true" because it systemd-detect-virt return 'none'
# with an error code on bare metal ~.~
return check_output("systemd-detect-virt || true")
return check_output("systemd-detect-virt 2>/dev/null || true")
def free_space_in_directory(dirpath):