mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
Merge remote-tracking branch 'origin/dev' into bookworm
This commit is contained in:
commit
0a01423408
13 changed files with 147 additions and 87 deletions
|
@ -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 {
|
||||
|
|
|
@ -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 =
|
||||
|
|
|
@ -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
21
debian/changelog
vendored
|
@ -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)
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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.",
|
||||
|
|
|
@ -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}"
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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):
|
||||
|
|
Loading…
Add table
Reference in a new issue