mirror of
https://github.com/mailcow/mailcow-dockerized.git
synced 2024-12-23 02:04:46 +02:00
Merge branch 'mailcow:staging' into staging
This commit is contained in:
commit
d89f24a1a3
@ -10,7 +10,7 @@ jobs:
|
||||
if: github.event.pull_request.base.ref != 'staging' #check if the target branch is not staging
|
||||
steps:
|
||||
- name: Send message
|
||||
uses: thollander/actions-comment-pull-request@v2.4.2
|
||||
uses: thollander/actions-comment-pull-request@v2.4.3
|
||||
with:
|
||||
GITHUB_TOKEN: ${{ secrets.CHECKIFPRISSTAGING_ACTION_PAT }}
|
||||
message: |
|
||||
|
@ -97,6 +97,7 @@ $AVAILABLE_LANGUAGES = array(
|
||||
'lv-lv' => 'latviešu (Latvian)',
|
||||
'nl-nl' => 'Nederlands (Dutch)',
|
||||
'pl-pl' => 'Język Polski (Polish)',
|
||||
'pt-br' => 'Português brasileiro (Brazilian Portuguese)',
|
||||
'pt-pt' => 'Português (Portuguese)',
|
||||
'ro-ro' => 'Română (Romanian)',
|
||||
'ru-ru' => 'Pусский (Russian)',
|
||||
|
@ -1684,7 +1684,7 @@ function showVersionModal(title, version){
|
||||
function parseGithubMarkdownLinks(inputText) {
|
||||
var replacedText, replacePattern1;
|
||||
|
||||
replacePattern1 = /(\b(https?):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim;
|
||||
replacePattern1 = /(\b(https?):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])(?![^<]*>)/gim;
|
||||
replacedText = inputText.replace(replacePattern1, (matched, index, original, input_string) => {
|
||||
if (matched.includes('github.com')){
|
||||
// return short link if it's github link
|
||||
|
@ -147,6 +147,8 @@
|
||||
"ays": "Opravdu chcete pokračovat?",
|
||||
"ban_list_info": "Seznam blokovaných IP adres je zobrazen níže: <b>síť (zbývající čas blokování) - [akce]</b>.<br />IP adresy zařazené pro odblokování budou z aktivního seznamu odebrány během několika sekund.<br />Červeně označené položky jsou pernamentní bloky z blacklistu.",
|
||||
"change_logo": "Změnit logo",
|
||||
"logo_normal_label": "Normální",
|
||||
"logo_dark_label": "Inverzní pro tmavý režim",
|
||||
"configuration": "Nastavení",
|
||||
"convert_html_to_text": "Převést HTML do prostého textu",
|
||||
"credentials_transport_warning": "<b>Upozornění</b>: Přidání položky do transportní mapy aktualizuje také přihlašovací údaje všech záznamů s odpovídajícím skokem.",
|
||||
@ -206,6 +208,9 @@
|
||||
"include_exclude": "Zahrnout/Vyloučit",
|
||||
"include_exclude_info": "Ve výchozím nastavení (bez výběru), jsou adresovány <b>všechny mailové schránky</b>",
|
||||
"includes": "Zahrnout tyto přijemce",
|
||||
"ip_check": "Kontrola IP",
|
||||
"ip_check_disabled": "Kontrola IP je zakázána. Můžete ji povolit v nabídce<br> <strong>Systém > Nastavení > Možnosti > Přizpůsobení</strong>.",
|
||||
"ip_check_opt_in": "Přihlásit se k používání služby třetí strany <strong>ipv4.mailcow.email</strong> a <strong>ipv6.mailcow.email</strong> pro zjištění externích IP adres.",
|
||||
"is_mx_based": "Na základě MX",
|
||||
"last_applied": "Naposledy použité",
|
||||
"license_info": "Licence není povinná, pomůžete však dalšímu vývoji.<br><a href=\"https://www.servercow.de/mailcow?lang=en#sal\" target=\"_blank\" alt=\"SAL order\">Registrujte si své GUID</a>, nebo si <a href=\"https://www.servercow.de/mailcow?lang=en#support\" target=\"_blank\" alt=\"Support order\">zaplaťte podporu pro svou instalaci mailcow.</a>",
|
||||
@ -232,6 +237,7 @@
|
||||
"oauth2_renew_secret": "Vytvořit nový tajný klíč",
|
||||
"oauth2_revoke_tokens": "Odvolat všechny klientské tokeny",
|
||||
"optional": "volitelné",
|
||||
"options": "Možnosti",
|
||||
"password": "Heslo",
|
||||
"password_length": "Délka hesla",
|
||||
"password_policy": "Politika hesel",
|
||||
@ -443,6 +449,9 @@
|
||||
"target_domain_invalid": "Cílová doména %s je neplatná",
|
||||
"targetd_not_found": "Cílová doména %s nenalezena",
|
||||
"targetd_relay_domain": "Cílová doména %s je předávaná",
|
||||
"template_exists": "Šablona %s již existuje",
|
||||
"template_id_invalid": "Šablona ID %s je neplatná",
|
||||
"template_name_invalid": "Název šablony je neplatný",
|
||||
"temp_error": "Dočasná chyba",
|
||||
"text_empty": "Text nesmí být prázdný",
|
||||
"tfa_token_invalid": "Neplatný TFA token",
|
||||
@ -461,27 +470,27 @@
|
||||
"yotp_verification_failed": "Yubico OTP ověření selhalo: %s"
|
||||
},
|
||||
"datatables": {
|
||||
"emptyTable": "Tabulka neobsahuje žádná data",
|
||||
"info": "Zobrazuji _START_ až _END_ z celkem _TOTAL_ záznamů",
|
||||
"infoEmpty": "Zobrazuji 0 až 0 z 0 záznamů",
|
||||
"infoFiltered": "(filtrováno z celkem _MAX_ záznamů)",
|
||||
"loadingRecords": "Načítám...",
|
||||
"zeroRecords": "Žádné záznamy nebyly nalezeny",
|
||||
"paginate": {
|
||||
"first": "První",
|
||||
"last": "Poslední",
|
||||
"next": "Další",
|
||||
"previous": "Předchozí"
|
||||
},
|
||||
"aria": {
|
||||
"sortAscending": ": aktivujte pro seřazení vzestupně",
|
||||
"sortDescending": ": aktivujte pro seřazení sestupně"
|
||||
},
|
||||
"lengthMenu": "Zobrazit _MENU_ výsledků",
|
||||
"processing": "Zpracovávání...",
|
||||
"search": "Vyhledávání:",
|
||||
"decimal": ",",
|
||||
"thousands": " "
|
||||
"emptyTable": "Tabulka neobsahuje žádná data",
|
||||
"info": "Zobrazuji _START_ až _END_ z celkem _TOTAL_ záznamů",
|
||||
"infoEmpty": "Zobrazuji 0 až 0 z 0 záznamů",
|
||||
"infoFiltered": "(filtrováno z celkem _MAX_ záznamů)",
|
||||
"loadingRecords": "Načítám...",
|
||||
"zeroRecords": "Žádné záznamy nebyly nalezeny",
|
||||
"paginate": {
|
||||
"first": "První",
|
||||
"last": "Poslední",
|
||||
"next": "Další",
|
||||
"previous": "Předchozí"
|
||||
},
|
||||
"aria": {
|
||||
"sortAscending": ": aktivujte pro seřazení vzestupně",
|
||||
"sortDescending": ": aktivujte pro seřazení sestupně"
|
||||
},
|
||||
"lengthMenu": "Zobrazit _MENU_ výsledků",
|
||||
"processing": "Zpracovávání...",
|
||||
"search": "Vyhledávání:",
|
||||
"decimal": ",",
|
||||
"thousands": " "
|
||||
},
|
||||
"debug": {
|
||||
"chart_this_server": "Graf (tento server)",
|
||||
@ -670,6 +679,7 @@
|
||||
"apps": "Aplikace",
|
||||
"debug": "Systémové informace",
|
||||
"email": "E-Mail",
|
||||
"mailcow_system": "Systém",
|
||||
"mailcow_config": "Nastavení",
|
||||
"quarantine": "Karanténa",
|
||||
"restart_netfilter": "Restartovat netfilter",
|
||||
@ -705,6 +715,7 @@
|
||||
"add_mailbox": "Přidat mailovou schránku",
|
||||
"add_recipient_map_entry": "Přidat mapu příjemce",
|
||||
"add_resource": "Přidat zdroj",
|
||||
"add_template": "Přidat šablonu",
|
||||
"add_tls_policy_map": "Přidat mapu TLS pravidel",
|
||||
"address_rewriting": "Přepisování adres",
|
||||
"alias": "Alias",
|
||||
@ -747,6 +758,7 @@
|
||||
"domain": "Doména",
|
||||
"domain_admins": "Správci domén",
|
||||
"domain_aliases": "Doménové aliasy",
|
||||
"domain_templates": "Šablony domén",
|
||||
"domain_quota": "Kvóta",
|
||||
"domain_quota_total": "Celková kvóta domény",
|
||||
"domains": "Domény",
|
||||
@ -775,6 +787,7 @@
|
||||
"mailbox_defaults": "Výchozí nastavení",
|
||||
"mailbox_defaults_info": "Definuje výchozí nastavení pro nové schránky",
|
||||
"mailbox_defquota": "Výchozí velikost schránky",
|
||||
"mailbox_templates": "Šablony schránek",
|
||||
"mailbox_quota": "Max. velikost schránky",
|
||||
"mailboxes": "Mailové schránky",
|
||||
"max_aliases": "Max. počet aliasů",
|
||||
@ -842,6 +855,8 @@
|
||||
"table_size_show_n": "Zobrazit %s položek",
|
||||
"target_address": "Cílová adresa",
|
||||
"target_domain": "Cílová doména",
|
||||
"templates": "Šablony",
|
||||
"template": "Šablona",
|
||||
"tls_enforce_in": "Vynutit TLS pro příchozí",
|
||||
"tls_enforce_out": "Vynutit TLS pro odchozí",
|
||||
"tls_map_dest": "Cíl",
|
||||
@ -1006,6 +1021,9 @@
|
||||
"settings_map_added": "Přidána položka mapování nastavení",
|
||||
"settings_map_removed": "Položka mapování nastavení: %s smazána",
|
||||
"sogo_profile_reset": "SOGo profil uživatele %s vyresetován",
|
||||
"template_added": "Přidána šablona %s",
|
||||
"template_modified": "Změny šablony %s byly uloženy",
|
||||
"template_removed": "Šablona ID %s byla odstraněna",
|
||||
"tls_policy_map_entry_deleted": "Položka mapy TLS pravidel ID %s smazána",
|
||||
"tls_policy_map_entry_saved": "Položka mapy TLS pravidel \"%s\" uložena",
|
||||
"ui_texts": "Změny UI textů uloženy",
|
||||
|
@ -89,7 +89,7 @@
|
||||
"relay_transport_info": "<div class=\"badge fs-6 bg-info\">Info</div> Vous pouvez définir des cartes de transport vers une destination personnalisée pour ce domaine. sinon, une recherche MX sera effectuée.",
|
||||
"relay_unknown_only": "Relayer uniquement les boîtes inexistantes. Les boîtes existantes seront livrées localement.",
|
||||
"relayhost_wrapped_tls_info": "Veuillez <b>ne pas</b> utiliser des ports TLS wrappés (généralement utilisés sur le port 465).<br>\r\nUtilisez n'importe quel port non encapsulé et lancez STARTTLS. Une politique TLS pour appliquer TLS peut être créée dans \"Cartes de politique TLS\".",
|
||||
"select": "Veuillez sélectionner...",
|
||||
"select": "Veuillez sélectionner…",
|
||||
"select_domain": "Sélectionner d'abord un domaine",
|
||||
"sieve_desc": "Description courte",
|
||||
"sieve_type": "Type de filtre",
|
||||
@ -207,7 +207,7 @@
|
||||
"last_applied": "Dernière application",
|
||||
"license_info": "Une licence n’est pas requise, mais contribue au développement.<br><a href=\"https://www.servercow.de/mailcow?lang=en#sal\" target=\"_blank\" alt=\"SAL order\">Enregistrer votre GUID ici</a> or <a href=\"https://www.servercow.de/mailcow?lang=en#support\" target=\"_blank\" alt=\"Support order\">acheter le support pour votre intallation Mailcow.</a>",
|
||||
"link": "Lien",
|
||||
"loading": "Veuillez patienter...",
|
||||
"loading": "Veuillez patienter…",
|
||||
"logo_info": "Votre image sera redimensionnée à une hauteur de 40 pixels pour la barre de navigation du haut et à un maximum de 250 pixels en largeur pour la page d'accueil. Un graphique extensible est fortement recommandé.",
|
||||
"lookup_mx": "Faire correspondre la destination à MX (.outlook.com pour acheminer tous les messages ciblés vers un MX * .outlook.com sur ce tronçon)",
|
||||
"main_name": "\"mailcow UI\" nom",
|
||||
@ -598,9 +598,9 @@
|
||||
"delete_these_items": "Veuillez confirmer les modifications apportées à l’identifiant d’objet suivant",
|
||||
"hibp_nok": "Trouvé ! Il s’agit d’un mot de passe potentiellement dangereux !",
|
||||
"hibp_ok": "Aucune correspondance trouvée.",
|
||||
"loading": "Veuillez patienter...",
|
||||
"loading": "Veuillez patienter…",
|
||||
"restart_container": "Redémarrer le conteneur",
|
||||
"restart_container_info": "<b>Important:</b> Un redémarrage en douceur peut prendre un certain temps, veuillez attendre qu’il soit terminé..",
|
||||
"restart_container_info": "<b>Important:</b> Un redémarrage en douceur peut prendre un certain temps, veuillez attendre qu’il soit terminé.",
|
||||
"restart_now": "Redémarrer maintenant",
|
||||
"restarting_container": "Redémarrage du conteneur, cela peut prendre un certain temps"
|
||||
},
|
||||
@ -935,7 +935,7 @@
|
||||
"disable_tfa": "Désactiver TFA jusqu’à la prochaine ouverture de session réussie",
|
||||
"enter_qr_code": "Votre code TOTP si votre appareil ne peut pas scanner les codes QR",
|
||||
"error_code": "Code d'erreur",
|
||||
"init_webauthn": "Initialisation, veuillez patienter...",
|
||||
"init_webauthn": "Initialisation, veuillez patienter…",
|
||||
"key_id": "Un identifiant pour votre Périphérique",
|
||||
"key_id_totp": "Un identifiant pour votre clé",
|
||||
"none": "Désactiver",
|
||||
@ -948,8 +948,8 @@
|
||||
"tfa_token_invalid": "Token TFA invalide",
|
||||
"totp": "OTP (One Time Password = Mot de passe à usage unique : Google Authenticator, Authy, etc.)",
|
||||
"webauthn": "Authentification WebAuthn",
|
||||
"waiting_usb_auth": "<i>En attente d’un périphérique USB...</i><br><br>S’il vous plaît appuyez maintenant sur le bouton de votre périphérique USB WebAuthn.",
|
||||
"waiting_usb_register": "<i>En attente d’un périphérique USB...</i><br><br>Veuillez entrer votre mot de passe ci-dessus et confirmer votre inscription WebAuthn en appuyant sur le bouton de votre périphérique USB WebAuthn.",
|
||||
"waiting_usb_auth": "<i>En attente d’un périphérique USB…</i><br><br>S’il vous plaît appuyez maintenant sur le bouton de votre périphérique USB WebAuthn.",
|
||||
"waiting_usb_register": "<i>En attente d’un périphérique USB…</i><br><br>Veuillez entrer votre mot de passe ci-dessus et confirmer votre inscription WebAuthn en appuyant sur le bouton de votre périphérique USB WebAuthn.",
|
||||
"yubi_otp": "Authentification OTP Yubico"
|
||||
},
|
||||
"fido2": {
|
||||
@ -999,9 +999,9 @@
|
||||
"eas_reset": "Réinitialiser le cache de l’appareil Activesync",
|
||||
"eas_reset_help": "Dans de nombreux cas, une réinitialisation du cache de l’appareil aidera à récupérer un profil Activesync cassé.<br><b>Attention :</b> Tous les éléments seront à nouveau téléchargés !",
|
||||
"eas_reset_now": "Réinitialiser maintenant",
|
||||
"edit": "Editer",
|
||||
"email": "Email",
|
||||
"email_and_dav": "Email, calendriers et contacts",
|
||||
"edit": "Éditer",
|
||||
"email": "E-mail",
|
||||
"email_and_dav": "E-mail, calendriers et contacts",
|
||||
"encryption": "Cryptage",
|
||||
"excludes": "Exclut",
|
||||
"expire_in": "Expire dans",
|
||||
@ -1015,7 +1015,7 @@
|
||||
"is_catch_all": "Attrape-tout pour le domaine(s)",
|
||||
"last_mail_login": "Dernière connexion mail",
|
||||
"last_run": "Dernière exécution",
|
||||
"loading": "Chargement...",
|
||||
"loading": "Chargement…",
|
||||
"mailbox_details": "Détails de la boîte",
|
||||
"messages": "messages",
|
||||
"never": "jamais",
|
||||
@ -1051,7 +1051,7 @@
|
||||
"shared_aliases": "Adresses alias partagées",
|
||||
"shared_aliases_desc": "Les alias partagés ne sont pas affectés par les paramètres spécifiques à l’utilisateur tels que le filtre anti-spam ou la politique de chiffrement. Les filtres anti-spam correspondants ne peuvent être effectués que par un administrateur en tant que politique de domaine.",
|
||||
"show_sieve_filters": "Afficher le filtre de tamis actif de l’utilisateur",
|
||||
"sogo_profile_reset": "Remise é zéro du profil SOGo",
|
||||
"sogo_profile_reset": "Remise à zéro du profil SOGo",
|
||||
"sogo_profile_reset_help": "Ceci détruira un profil Sogo des utilisateurs et <b>supprimera toutes les données de contact et de calendrier irrécupérables</b>.",
|
||||
"sogo_profile_reset_now": "Remise à zéro du profil maintenant",
|
||||
"spam_aliases": "Alias de courriel temporaire",
|
||||
|
@ -394,7 +394,12 @@
|
||||
"filters": "Szűrők",
|
||||
"login_as": "Bejelentkezés mint",
|
||||
"quarantine": "Karantén műveletek",
|
||||
"bcc_maps": "BCC címek"
|
||||
"bcc_maps": "BCC címek",
|
||||
"domain_relayhost": "Relayhost megváltoztatása egy domainhez",
|
||||
"protocol_access": "Protokoll-hozzáférés módosítása",
|
||||
"quarantine_attachments": "Karantén mellékletek",
|
||||
"quarantine_category": "Karantén értesítési kategória módosítása",
|
||||
"quarantine_notification": "Karantén értesítések módosítása"
|
||||
},
|
||||
"diagnostics": {
|
||||
"dns_records": "DNS bejegyzések"
|
||||
|
1295
data/web/lang/lang.pt-br.json
Normal file
1295
data/web/lang/lang.pt-br.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -342,7 +342,12 @@
|
||||
"username": "Uporabniško ime",
|
||||
"validate_license_now": "Potrdi GUID z licenčnim strežnikom",
|
||||
"verify": "Preveri",
|
||||
"yes": "✓"
|
||||
"yes": "✓",
|
||||
"logo_normal_label": "Navadno",
|
||||
"logo_dark_label": "Za temni način",
|
||||
"cors_settings": "Nastavitve CORS",
|
||||
"allowed_methods": "Dovoljene metode za upravljanje dostopa",
|
||||
"allowed_origins": "Upravljanje-dostopa-Dovoljeni-Viri"
|
||||
},
|
||||
"danger": {
|
||||
"alias_goto_identical": "Alias in goto naslov morata biti identična",
|
||||
@ -391,6 +396,161 @@
|
||||
"invalid_destination": "Ciljna oblika \"%s\" ni veljavna",
|
||||
"invalid_filter_type": "Neveljavna vrsta filtra",
|
||||
"invalid_host": "Naveden je neveljaven gostitelj (host): %s",
|
||||
"invalid_mime_type": "Neveljaven mime type"
|
||||
"invalid_mime_type": "Neveljaven mime type",
|
||||
"max_quota_in_use": "Kvota poštnega predala mora biti večja ali enaka %d MB",
|
||||
"password_complexity": "Geslo ne ustreza varnostni politiki",
|
||||
"pushover_credentials_missing": "Manjka Pushover token ali ključ",
|
||||
"release_send_failed": "Sporočila ni bilo mogoče sprostiti: %s",
|
||||
"tls_policy_map_dest_invalid": "Cilj politike ni veljaven",
|
||||
"webauthn_authenticator_failed": "Izbrani avtentikator ni bil najden",
|
||||
"reset_f2b_regex": "Regex filter ni bilo možno ponastaviti v ustreznem času. Prosim poskusite ponovno ali počakajte nekaj sekund in ponovno naložite stran.",
|
||||
"target_domain_invalid": "Ciljna domena %s ni veljavna",
|
||||
"validity_missing": "Prosim nastavite obdobje veljavnosti",
|
||||
"invalid_recipient_map_old": "Naveden neveljaven izvirni prejemnik: %s",
|
||||
"ip_list_empty": "Seznam dovoljenih IPjev ne sme biti prazen",
|
||||
"is_alias": "%s je že znan kot alias naslov",
|
||||
"is_alias_or_mailbox": "%s je že znan kot alias, poštni naslov, ali alias izveden iz alias domene",
|
||||
"is_spam_alias": "%s že obstaja kot začasen alias (spam alias naslov)",
|
||||
"last_key": "Zadnji ključ ne more biti izbrisan, prosim raje deaktivirajte dvofaktorsko avtentikacijo (TFA)",
|
||||
"login_failed": "Prijava ni uspela",
|
||||
"mailbox_defquota_exceeds_mailbox_maxquota": "Privzeta kvota presega najvišjo omejitev",
|
||||
"mailbox_invalid": "Ime poštnega predala ni veljavno",
|
||||
"mailbox_quota_exceeded": "Kvota presega omejitev domene (maksimalno %d MB)",
|
||||
"mailbox_quota_exceeds_domain_quota": "Najvišja kvota presega omejitev domene",
|
||||
"mailbox_quota_left_exceeded": "Ni dovolj prostora (preostali prostor: %d MB)",
|
||||
"mailboxes_in_use": "Največje število poštnih predalov mora biti večje ali enako %d",
|
||||
"malformed_username": "Nepravilno oblikovano uporabniško ime",
|
||||
"map_content_empty": "Preslikava vsebine ne more biti prazna",
|
||||
"max_alias_exceeded": "Preseženo največje število aliasov",
|
||||
"max_mailbox_exceeded": "Preseženo največje število poštnih predalov (%d od %d)",
|
||||
"maxquota_empty": "Največja kvota na poštni predal ne more biti 0",
|
||||
"mysql_error": "Napaka MySQL: %s",
|
||||
"network_host_invalid": "Nepravilno omrežje ali gostitel: %s",
|
||||
"next_hop_interferes": "% moti naslednji skok %s",
|
||||
"next_hop_interferes_any": "Obstoječi naslednji skok moti %s",
|
||||
"nginx_reload_failed": "Ponovni zagon Nginx ni uspel: %s",
|
||||
"no_user_defined": "Uporabnik ni določen",
|
||||
"object_exists": "Objekt %s že obstaja",
|
||||
"object_is_not_numeric": "Vrednost %s ni numerična",
|
||||
"password_empty": "Geslo ne sme biti prazno",
|
||||
"password_mismatch": "Potrditev gesla se ne ujema z geslom",
|
||||
"policy_list_from_exists": "Zapis z tem imenom že obstaja",
|
||||
"policy_list_from_invalid": "Zapis ima nepravilno obliko",
|
||||
"private_key_error": "Napaka zasebnega ključa: %s",
|
||||
"pushover_key": "Pushover ključ ni v pravilni obliki",
|
||||
"pushover_token": "Pushover token ni v pravilni obliki",
|
||||
"quota_not_0_not_numeric": "Quota mora biti število in večje ali enako 0",
|
||||
"recipient_map_entry_exists": "Preslikava prejemnika \"%s\" že obstaja",
|
||||
"redis_error": "Napaka Redis: %s",
|
||||
"relayhost_invalid": "Vnos preslikave %s ni pravilen",
|
||||
"resource_invalid": "Ime vira je neveljavno",
|
||||
"rl_timeframe": "Časovni okvir za rate limit je nepravilen",
|
||||
"rspamd_ui_pw_length": "Rspamd UI geslo mora biti dolgo vsaj 6 znakov",
|
||||
"script_empty": "Script ne more biti prazen",
|
||||
"sender_acl_invalid": "Vrednost ACL pošiljatelja %s ni veljavna",
|
||||
"set_acl_failed": "Ni uspelo nastaviti ACL",
|
||||
"settings_map_invalid": "ID preslikave nastavitev %s ni veljaven",
|
||||
"sieve_error": "Napaka Sieve parserja: %s",
|
||||
"spam_learn_error": "Napaka pri učenju spama: %s",
|
||||
"subject_empty": "Predmet ne sme biti prazno",
|
||||
"targetd_not_found": "Ciljna domena %s ni bila najdena",
|
||||
"targetd_relay_domain": "Ciljna domena %s je relay domena",
|
||||
"template_exists": "Predloga %s že obstaja",
|
||||
"template_id_invalid": "ID predloge %s ni veljaven",
|
||||
"template_name_invalid": "Ime predloge ni veljavno",
|
||||
"text_empty": "Besedilo ne sme biti prazno",
|
||||
"tfa_token_invalid": "Neveljaven token TFA",
|
||||
"tls_policy_map_entry_exists": "Vpis preslikave TLS \"%s\" že obstaja",
|
||||
"tls_policy_map_parameter_invalid": "Parameter politike ni pravilen",
|
||||
"totp_verification_failed": "Neuspešno preverjanje TOTP",
|
||||
"transport_dest_exists": "Cilj transporta \"%s\" že obstaja",
|
||||
"webauthn_verification_failed": "Preverjanje WebAuthn ni uspelo: %s",
|
||||
"webauthn_publickey_failed": "Na izbranem avtentikatorju ni shranjenega javnega ključa",
|
||||
"webauthn_username_failed": "Izbrani avtentikator pripada drugemu uporabniškemu računu",
|
||||
"unknown": "Pojavila se je neznana napaka",
|
||||
"unknown_tfa_method": "Neznana metoda TFA",
|
||||
"unlimited_quota_acl": "Neomejena kvota je prepovedana z ACL",
|
||||
"username_invalid": "Uporabniško ime %s ne more biti uporabljeno",
|
||||
"value_missing": "Prosim vnesite vse vrednosti",
|
||||
"yotp_verification_failed": "Preverjanje Yubico OTP ni uspelo: %s",
|
||||
"temp_error": "Začasna napaka",
|
||||
"cors_invalid_method": "Navedena neveljavna Allow metoda",
|
||||
"cors_invalid_origin": "Naveden neveljaven Allow-Origin",
|
||||
"invalid_recipient_map_new": "Naveden neveljaven nov prejemnik: %s"
|
||||
},
|
||||
"debug": {
|
||||
"containers_info": "Informacije o vsebniku (containerju)",
|
||||
"architecture": "Arhitektura",
|
||||
"chart_this_server": "Diagram (ta strežnik)",
|
||||
"container_running": "Aktiven",
|
||||
"container_disabled": "Ustavljen ali onemogočen",
|
||||
"container_stopped": "Ustavljen",
|
||||
"cores": "Jedra",
|
||||
"current_time": "Sistemski čas",
|
||||
"disk_usage": "Zasedenost diska",
|
||||
"docs": "Dokumenti",
|
||||
"error_show_ip": "Ni mogoče preveriti javnega IP naslova",
|
||||
"external_logs": "Zunanji dnevniki",
|
||||
"last_modified": "Nazadnje spremenjeno",
|
||||
"history_all_servers": "Zgodovina (vsi strežniki)",
|
||||
"in_memory_logs": "In-memory dnevniki",
|
||||
"jvm_memory_solr": "JVM zasedenost spomina",
|
||||
"service": "Servis",
|
||||
"show_ip": "Prikaži javni IP",
|
||||
"size": "Velikost",
|
||||
"solr_dead": "Solr se zaganja, je onemogočen ali se je ustavil.",
|
||||
"solr_status": "Status Solr",
|
||||
"started_at": "Zagnano ob",
|
||||
"started_on": "Zagnano na",
|
||||
"static_logs": "Statični dnevniki",
|
||||
"success": "Uspešno",
|
||||
"system_containers": "Sistem in Containerji",
|
||||
"timezone": "Časovni pas",
|
||||
"uptime": "Čas delovanja",
|
||||
"update_available": "Posodobitev je na voljo",
|
||||
"no_update_available": "Sistem je na najnovejši verziji",
|
||||
"update_failed": "Ni mogoče preveriti za posodobitve",
|
||||
"username": "Uporabniško ime",
|
||||
"wip": "Trenutno v delu"
|
||||
},
|
||||
"datatables": {
|
||||
"infoFiltered": "(filtrirano od _MAX_ skupaj zapisov)",
|
||||
"collapse_all": "Strni vse",
|
||||
"decimal": ",",
|
||||
"emptyTable": "Ni podatkov",
|
||||
"expand_all": "Razširi vse",
|
||||
"info": "Prikazano _START_ do _END_ od _TOTAL_ zapisov",
|
||||
"infoEmpty": "Prikazano 0 do 0 od 0 zapisov",
|
||||
"thousands": ".",
|
||||
"lengthMenu": "Prikaži _MENU_ zapise",
|
||||
"loadingRecords": "Nalaganje...",
|
||||
"processing": "Prosim počakajte...",
|
||||
"search": "Iskanje:",
|
||||
"zeroRecords": "Ni ujemajočih zapisov",
|
||||
"paginate": {
|
||||
"first": "Prva",
|
||||
"last": "Zadnja",
|
||||
"previous": "Prejšnja",
|
||||
"next": "Naslednja"
|
||||
},
|
||||
"aria": {
|
||||
"sortAscending": ": aktivirajte za razvrstitev stolpca naraščajoče",
|
||||
"sortDescending": ": aktivirajte za razvrstitev stolpca padajoče"
|
||||
}
|
||||
},
|
||||
"diagnostics": {
|
||||
"cname_from_a": "Vrednost pridobljena iz A/AAAA zapisa. To je podprto, če zapis kaže na pravilen resurs.",
|
||||
"dns_records": "DNS zapisi",
|
||||
"dns_records_24hours": "Prosim upoštevajte, da lahko traja do 24 ur da se spremembe v DNS pravilno prikažejo na tej strani. Namen je da lahko enostavno vidite, kako konfigurirati svoje DNS zapise in preverite ali so vaši zapisi pravilno shranjeni v DNS.",
|
||||
"dns_records_data": "Pravilni podatki",
|
||||
"dns_records_docs": "Prosim preverite tudi <a target=\"_blank\" href=\"https://docs.mailcow.email/prerequisite/prerequisite-dns/\">dokumentacijo</a>.",
|
||||
"dns_records_name": "Ime",
|
||||
"dns_records_status": "Trenutno stanje",
|
||||
"dns_records_type": "Vrsta",
|
||||
"optional": "Ta zapis je opcijski."
|
||||
},
|
||||
"edit": {
|
||||
"acl": "ACL (Dovoljenje)",
|
||||
"active": "Aktivno"
|
||||
}
|
||||
}
|
||||
|
@ -41,7 +41,7 @@
|
||||
"alias_domain": "Alias doména",
|
||||
"alias_domain_info": "<small>Len platné mená domén (oddelené čiarkou).</small>",
|
||||
"app_name": "Meno aplikácie",
|
||||
"app_passwd_protocols": "Povolené protokoly pre heslá aplikácií",
|
||||
"app_passwd_protocols": "Povolené protokoly k heslu aplikácie",
|
||||
"app_password": "Pridať heslo aplikácie",
|
||||
"automap": "Skúsiť automaticky mapovať priečinky (\"Sent items\", \"Sent\" => \"Sent\" atd.)",
|
||||
"backup_mx_options": "Možnosti preposielania",
|
||||
@ -107,7 +107,6 @@
|
||||
"username": "Používateľské meno",
|
||||
"validate": "Overiť",
|
||||
"validation_success": "Úspešne overené",
|
||||
"app_passwd_protocols": "Povolené protokoly k heslu aplikácie",
|
||||
"tags": "Štítky"
|
||||
},
|
||||
"admin": {
|
||||
@ -148,6 +147,8 @@
|
||||
"ays": "Naozaj chcete pokračovať?",
|
||||
"ban_list_info": "Zoznam zakázaných IP je zobrazený nižšie: <b>sieť (zostávajúci čas zákazu) - [akcia]</b>.<br />IP adresy zaradené na unban budú odstránené z aktívneho zoznamu v priebehu niekoľkých sekúnd.<br />Červené položky zobrazujú permanentné blokovanie.",
|
||||
"change_logo": "Zmeniť logo",
|
||||
"logo_normal_label": "Normálne",
|
||||
"logo_dark_label": "Inverzné pre tmavý režim",
|
||||
"configuration": "Konfigurácia",
|
||||
"convert_html_to_text": "Konvertovať HTML do obyčajného textu",
|
||||
"credentials_transport_warning": "<b>Upozornenie</b>: Pridaním ďalšieho záznamu do transportnej mapy bude mať za následok aktualizovanie údajov pre všetky záznamy so zhodným ďalším skokom.",
|
||||
@ -207,6 +208,9 @@
|
||||
"include_exclude": "Zahrnúť/Vylúčiť",
|
||||
"include_exclude_info": "Ak nič nevyberiete tak bude adresované <b>všetkým schránkam</b>",
|
||||
"includes": "Zahrnúť týchto príjemcov",
|
||||
"ip_check": "Kontrola IP",
|
||||
"ip_check_disabled": "Kontrola IP je vypnutá. Môžete ju zapnúť v ponuke<br> <strong>Systém > Konfigurácia > Možnosti > Prispôsobiť</strong>",
|
||||
"ip_check_opt_in": "Prihlásiť sa k používaniu služby tretej strany <strong>ipv4.mailcow.email</strong> a <strong>ipv6.mailcow.email</strong> za účelom zistenia externých IP adries.",
|
||||
"is_mx_based": "Na základe MX",
|
||||
"last_applied": "Naposledy aplikované",
|
||||
"license_info": "Licencia nie je potrebná, ale napomáha ďalšiemu vývoju.<br><a href=\"https://www.servercow.de/mailcow?lang=en#sal\" target=\"_blank\" alt=\"SAL order\">Registrujte váš GUID tu</a> alebo <a href=\"https://www.servercow.de/mailcow?lang=en#support\" target=\"_blank\" alt=\"Objednávka podpory\">zakúpte si podporu pre vašu mailcow inštaláciu.</a>",
|
||||
@ -233,6 +237,7 @@
|
||||
"oauth2_renew_secret": "Vygenerovať nový tajný kľuč",
|
||||
"oauth2_revoke_tokens": "Odobrať všetky tokeny klienta",
|
||||
"optional": "voliteľné",
|
||||
"options": "Možnosti",
|
||||
"password": "Heslo",
|
||||
"password_length": "Dĺžka hesla",
|
||||
"password_policy": "Politika hesiel",
|
||||
@ -440,6 +445,9 @@
|
||||
"target_domain_invalid": "Cieľová doména %s je neplatná",
|
||||
"targetd_not_found": "Cieľová doména %s sa nenašla",
|
||||
"targetd_relay_domain": "Cieľová doména %s je posielaná ďalej (relay)",
|
||||
"template_exists": "Šablóna %s už existuje",
|
||||
"template_id_invalid": "Šablóna ID %s je neplatná",
|
||||
"template_name_invalid": "Názov šablóny je neplatný",
|
||||
"temp_error": "Dočasná chyba",
|
||||
"text_empty": "Text nemôže byť prázdny",
|
||||
"tfa_token_invalid": "Neplatný TFA token",
|
||||
@ -529,7 +537,7 @@
|
||||
"allowed_protocols": "Povolené protokoly",
|
||||
"app_name": "Meno aplikácie",
|
||||
"app_passwd": "Heslo aplikácie",
|
||||
"app_passwd_protocols": "Povolené protokoly pre heslá aplikácií",
|
||||
"app_passwd_protocols": "Povolené protokoly",
|
||||
"automap": "Skúsiť automapovať priečinky (\"Sent items\", \"Sent\" => \"Sent\" atd.)",
|
||||
"backup_mx_options": "Možnosti preposielania",
|
||||
"bcc_dest_format": "Cieľ kópie musí byť jedna platná emailová adresa. Pokiaľ potrebujete posielať kópie na viac adries, vytvorte Alias a použite ho tu.",
|
||||
@ -614,8 +622,8 @@
|
||||
"sieve_desc": "Krátky popis",
|
||||
"sieve_type": "Typ filtru",
|
||||
"skipcrossduplicates": "Preskočiť duplikované správy naprieč priečinkami (akceptuje sa prvý nález)",
|
||||
"sogo_access": "Udeliť priamy prístup k prihláseniu do služby SOGo",
|
||||
"sogo_access_info": "Jednotné prihlásenie (SSO) z mail UI zostáva funkčné. Toto nastavenie nemá vplyv na prístup k všetkým ostatným službám, ani neodstraňuje alebo nemení existujúci profil používateľa SOGo.",
|
||||
"sogo_access": "Prideliť priame prihlásenie do SOGo",
|
||||
"sogo_access_info": "Jednotné prihlásenie z používateľského mail rozhrania zostáva funkčné. Toto nastavenie nemá vplyv na prístup k ostatným službám, ani neodstraňuje alebo nemení existujúci profil používateľa SOGo.",
|
||||
"sogo_visible": "Alias je viditeľný v SOGo",
|
||||
"sogo_visible_info": "Táto voľba ovplyvňuje len objekty, ktoré dokážu byť zobrazené v SOGo (zdieľané alebo nezdieľané alias adresy ukazujúc na minimálne jednu lokálnu mailovú schránku). Ak je skrytý, alias nebude prezentovaný ako voliteľný odosielateľ v SOGo.",
|
||||
"spam_alias": "Vytvoriť alebo zmeniť časovo limitované alias adresy",
|
||||
@ -631,10 +639,7 @@
|
||||
"title": "Upraviť objekt",
|
||||
"unchanged_if_empty": "Ak nemeníte, nechajte prázdne",
|
||||
"username": "Používateľské meno",
|
||||
"validate_save": "Validovať a uložiť",
|
||||
"sogo_access": "Prideliť priame prihlásenie do SOGo",
|
||||
"sogo_access_info": "Jednotné prihlásenie z používateľského mail rozhrania zostáva funkčné. Toto nastavenie nemá vplyv na prístup k ostatným službám, ani neodstraňuje alebo nemení existujúci profil používateľa SOGo.",
|
||||
"app_passwd_protocols": "Povolené protokoly"
|
||||
"validate_save": "Validovať a uložiť"
|
||||
},
|
||||
"fido2": {
|
||||
"confirm": "Potvrdiť",
|
||||
@ -671,6 +676,7 @@
|
||||
"apps": "Aplikácie",
|
||||
"debug": "Systémové informácie",
|
||||
"email": "E-Mail",
|
||||
"mailcow_system": "Systém",
|
||||
"mailcow_config": "Konfigurácia",
|
||||
"quarantine": "Karanténa",
|
||||
"restart_netfilter": "Reštartovať netfilter",
|
||||
@ -706,6 +712,7 @@
|
||||
"add_mailbox": "Pridať mailovú schránku",
|
||||
"add_recipient_map_entry": "Pridať mapu príjemcu",
|
||||
"add_resource": "Pridať zdroj",
|
||||
"add_template": "Pridať šablónu",
|
||||
"add_tls_policy_map": "Pridať TLS mapu pravidiel",
|
||||
"address_rewriting": "Prepisovanie adries",
|
||||
"alias": "Alias",
|
||||
@ -748,6 +755,7 @@
|
||||
"domain": "Doména",
|
||||
"domain_admins": "Administrátori domény",
|
||||
"domain_aliases": "Alias domény",
|
||||
"domain_templates": "Šablóny domén",
|
||||
"domain_quota": "Kvóta",
|
||||
"domain_quota_total": "Celkové kvóta domény",
|
||||
"domains": "Domény",
|
||||
@ -776,6 +784,7 @@
|
||||
"mailbox_defaults": "Predvolené nastavenia",
|
||||
"mailbox_defaults_info": "Definuje predvolené nastavenia pre nové schránky.",
|
||||
"mailbox_defquota": "Predvolená veľkosť schránky",
|
||||
"mailbox_templates": "Šablóny schránok",
|
||||
"mailbox_quota": "Max. veľkosť schránky",
|
||||
"mailboxes": "Mailové schránky",
|
||||
"max_aliases": "Max. počet aliasov",
|
||||
@ -843,6 +852,8 @@
|
||||
"table_size_show_n": "Zobraziť %s položiek",
|
||||
"target_address": "Cieľová adresa",
|
||||
"target_domain": "Cieľová doména",
|
||||
"templates": "Šablóny",
|
||||
"template": "Šablóna",
|
||||
"tls_enforce_in": "Vynútiť TLS pre prichádzajúcu poštu",
|
||||
"tls_enforce_out": "Vynútiť TLS pre odchádzajúcu poštu",
|
||||
"tls_map_dest": "Cieľ",
|
||||
@ -1007,6 +1018,9 @@
|
||||
"settings_map_added": "Pridaná mapa nastavení",
|
||||
"settings_map_removed": "Odstránená mapa nastavení ID %s",
|
||||
"sogo_profile_reset": "SOGo profil pre používateľa %s resetovaný",
|
||||
"template_added": "Pridaná šablóna %s",
|
||||
"template_modified": "Zmeny šablóny %s boli uložené",
|
||||
"template_removed": "Šablóna ID %s bola odstránená",
|
||||
"tls_policy_map_entry_deleted": "Položka mapy TLS pravidiel %s vymazaná",
|
||||
"tls_policy_map_entry_saved": "Položka mapy TLS pravidiel \"%s\" uložená",
|
||||
"ui_texts": "Zmeny v UI textoch uložené",
|
||||
@ -1065,9 +1079,9 @@
|
||||
"apple_connection_profile": "Apple konfiguračný profil",
|
||||
"apple_connection_profile_complete": "Tento profil zahŕňa IMAP a SMTP parametre, ako aj CalDAV (kalendáre) a CardDAV (kontakty) pre zariadenia Apple.",
|
||||
"apple_connection_profile_mailonly": "Tento profil zahŕňa IMAP a SMTP konfiguračné parametre pre zariadenia Apple.",
|
||||
"apple_connection_profile_with_app_password": "Nové heslo aplikácie sa vygeneruje a pridá do profilu, takže pri nastavovaní zariadenia nie je potrebné zadávať žiadne heslo. Súbor nezdieľajte, pretože poskytuje úplný prístup k vašej poštovej schránke.",
|
||||
"apple_connection_profile_with_app_password": "Nové heslo aplikácie sa vygeneruje a pridá do profilu, takže pri nastavovaní zariadenia nie je potrebné zadávať žiadne heslo. Súbor nezdieľajte, pretože poskytuje úplný prístup k vašej mail schránke.",
|
||||
"change_password": "Zmeniť heslo",
|
||||
"change_password_hint_app_passwords": "Váš účet má %d hesiel aplikácií, ktoré nebudú zmenené. Ak ich chcete spravovať, prejdite na kartu Heslá aplikácií.",
|
||||
"change_password_hint_app_passwords": "Vaše konto má %d hesiel aplikácií, ktoré nebudú zmenené. Ak ich chcete spravovať, prejdite na kartu Heslá aplikácií.",
|
||||
"clear_recent_successful_connections": "Vymazať nedávne úspešné prihlásenia",
|
||||
"client_configuration": "Zobraziť konfiguračné pokyny pre emailových klientov a smartfóny",
|
||||
"create_app_passwd": "Vytvoriť heslo aplikácie",
|
||||
@ -1078,7 +1092,7 @@
|
||||
"delete_ays": "Potvrďte zmazanie.",
|
||||
"direct_aliases": "Priame alias adresy",
|
||||
"direct_aliases_desc": "Priame aliasy sú ovplyvnené spam filtrom a nastavením TLS pravidiel.",
|
||||
"direct_protocol_access": "Tento používateľ mailovej schránky má <b>priamy, externý prístup</b> k nasledujúcim protokolom a aplikáciám. Toto nastavenie má pod kontrolou Váš správca. Na udelenie prístupu k jednotlivým protokolom a aplikáciám je možné vytvoriť heslá aplikácií.<br>Tlačidlo \" Prihláste sa do webmailu\" poskytuje jednotné prihlásenie do systému SOGo a je vždy k dispozícii.",
|
||||
"direct_protocol_access": "Tento používateľ mailovej schránky má <b>priamy, externý prístup</b> k nasledujúcim protokolom a aplikáciám. Toto nastavenie kontroluje administrátor. Na udelenie prístupu k jednotlivým protokolom a aplikáciám je možné vytvoriť heslá aplikácií.<br>Tlačidlo \"Prihlásenie do webmailu\" poskytuje jednotné prihlásenie do systému SOGo a je vždy k dispozícii.",
|
||||
"eas_reset": "Resetovať medzipamäť u ActiveSync zariadení",
|
||||
"eas_reset_help": "Vo väčšine prípadov, reset medzipamäte ActiveSync pomôže opravit nefunkčný profil.<br><b>Pozor:</b> Všetky potrebné dáta budú opäť stiahnuté!",
|
||||
"eas_reset_now": "Reset ActiveSync",
|
||||
@ -1202,10 +1216,7 @@
|
||||
"weeks": "týždne",
|
||||
"with_app_password": "s heslom aplikácie",
|
||||
"year": "rok",
|
||||
"years": "rokov",
|
||||
"apple_connection_profile_with_app_password": "Nové heslo aplikácie sa vygeneruje a pridá do profilu, takže pri nastavovaní zariadenia nie je potrebné zadávať žiadne heslo. Súbor nezdieľajte, pretože poskytuje úplný prístup k vašej mail schránke.",
|
||||
"change_password_hint_app_passwords": "Vaše konto má %d hesiel aplikácií, ktoré nebudú zmenené. Ak ich chcete spravovať, prejdite na kartu Heslá aplikácií.",
|
||||
"direct_protocol_access": "Tento používateľ mailovej schránky má <b>priamy, externý prístup</b> k nasledujúcim protokolom a aplikáciám. Toto nastavenie kontroluje administrátor. Na udelenie prístupu k jednotlivým protokolom a aplikáciám je možné vytvoriť heslá aplikácií.<br>Tlačidlo \"Prihlásenie do webmailu\" poskytuje jednotné prihlásenie do systému SOGo a je vždy k dispozícii."
|
||||
"years": "rokov"
|
||||
},
|
||||
"warning": {
|
||||
"cannot_delete_self": "Nemožno vymazať prihláseného používateľa",
|
||||
|
@ -77,7 +77,7 @@ services:
|
||||
- clamd
|
||||
|
||||
rspamd-mailcow:
|
||||
image: mailcow/rspamd:1.92
|
||||
image: mailcow/rspamd:1.93
|
||||
stop_grace_period: 30s
|
||||
depends_on:
|
||||
- dovecot-mailcow
|
||||
@ -526,7 +526,7 @@ services:
|
||||
- watchdog
|
||||
|
||||
dockerapi-mailcow:
|
||||
image: mailcow/dockerapi:2.05
|
||||
image: mailcow/dockerapi:2.06
|
||||
security_opt:
|
||||
- label=disable
|
||||
restart: always
|
||||
|
@ -28,8 +28,8 @@ done
|
||||
if docker compose > /dev/null 2>&1; then
|
||||
if docker compose version --short | grep "^2." > /dev/null 2>&1; then
|
||||
COMPOSE_VERSION=native
|
||||
echo -e "\e[31mFound Docker Compose Plugin (native).\e[0m"
|
||||
echo -e "\e[31mSetting the DOCKER_COMPOSE_VERSION Variable to native\e[0m"
|
||||
echo -e "\e[33mFound Docker Compose Plugin (native).\e[0m"
|
||||
echo -e "\e[33mSetting the DOCKER_COMPOSE_VERSION Variable to native\e[0m"
|
||||
sleep 2
|
||||
echo -e "\e[33mNotice: You´ll have to update this Compose Version via your Package Manager manually!\e[0m"
|
||||
else
|
||||
@ -41,8 +41,8 @@ elif docker-compose > /dev/null 2>&1; then
|
||||
if ! [[ $(alias docker-compose 2> /dev/null) ]] ; then
|
||||
if docker-compose version --short | grep "^2." > /dev/null 2>&1; then
|
||||
COMPOSE_VERSION=standalone
|
||||
echo -e "\e[31mFound Docker Compose Standalone.\e[0m"
|
||||
echo -e "\e[31mSetting the DOCKER_COMPOSE_VERSION Variable to standalone\e[0m"
|
||||
echo -e "\e[33mFound Docker Compose Standalone.\e[0m"
|
||||
echo -e "\e[33mSetting the DOCKER_COMPOSE_VERSION Variable to standalone\e[0m"
|
||||
sleep 2
|
||||
echo -e "\e[33mNotice: For an automatic update of docker-compose please use the update_compose.sh scripts located at the helper-scripts folder.\e[0m"
|
||||
else
|
||||
|
@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
# renovate: datasource=github-releases depName=nextcloud/server versioning=semver extractVersion=^v(?<version>.*)$
|
||||
NEXTCLOUD_VERSION=27.1.2
|
||||
NEXTCLOUD_VERSION=27.1.3
|
||||
|
||||
echo -ne "Checking prerequisites..."
|
||||
sleep 1
|
||||
|
135
update.sh
135
update.sh
@ -32,51 +32,44 @@ prefetch_images() {
|
||||
}
|
||||
|
||||
docker_garbage() {
|
||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
IMGS_TO_DELETE=()
|
||||
for container in $(grep -oP "image: \Kmailcow.+" "${SCRIPT_DIR}/docker-compose.yml"); do
|
||||
REPOSITORY=${container/:*}
|
||||
TAG=${container/*:}
|
||||
V_MAIN=${container/*.}
|
||||
V_SUB=${container/*.}
|
||||
EXISTING_TAGS=$(docker images | grep ${REPOSITORY} | awk '{ print $2 }')
|
||||
for existing_tag in ${EXISTING_TAGS[@]}; do
|
||||
V_MAIN_EXISTING=${existing_tag/*.}
|
||||
V_SUB_EXISTING=${existing_tag/*.}
|
||||
# Not an integer
|
||||
[[ ! $V_MAIN_EXISTING =~ ^[0-9]+$ ]] && continue
|
||||
[[ ! $V_SUB_EXISTING =~ ^[0-9]+$ ]] && continue
|
||||
|
||||
if [[ $V_MAIN_EXISTING == "latest" ]]; then
|
||||
echo "Found deprecated label \"latest\" for repository $REPOSITORY, it should be deleted."
|
||||
IMGS_TO_DELETE+=($REPOSITORY:$existing_tag)
|
||||
elif [[ $V_MAIN_EXISTING -lt $V_MAIN ]]; then
|
||||
echo "Found tag $existing_tag for $REPOSITORY, which is older than the current tag $TAG and should be deleted."
|
||||
IMGS_TO_DELETE+=($REPOSITORY:$existing_tag)
|
||||
elif [[ $V_SUB_EXISTING -lt $V_SUB ]]; then
|
||||
echo "Found tag $existing_tag for $REPOSITORY, which is older than the current tag $TAG and should be deleted."
|
||||
IMGS_TO_DELETE+=($REPOSITORY:$existing_tag)
|
||||
declare -A IMAGES_INFO
|
||||
COMPOSE_IMAGES=($(grep -oP "image: \Kmailcow.+" "${SCRIPT_DIR}/docker-compose.yml"))
|
||||
|
||||
for existing_image in $(docker images --format "{{.ID}}:{{.Repository}}:{{.Tag}}" | grep 'mailcow/'); do
|
||||
ID=$(echo $existing_image | cut -d ':' -f 1)
|
||||
REPOSITORY=$(echo $existing_image | cut -d ':' -f 2)
|
||||
TAG=$(echo $existing_image | cut -d ':' -f 3)
|
||||
|
||||
if [[ " ${COMPOSE_IMAGES[@]} " =~ " ${REPOSITORY}:${TAG} " ]]; then
|
||||
continue
|
||||
else
|
||||
IMGS_TO_DELETE+=("$ID")
|
||||
IMAGES_INFO["$ID"]="$REPOSITORY:$TAG"
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
if [[ ! -z ${IMGS_TO_DELETE[*]} ]]; then
|
||||
echo "Run the following command to delete unused image tags:"
|
||||
echo
|
||||
echo " docker rmi ${IMGS_TO_DELETE[*]}"
|
||||
echo
|
||||
if [ ! $FORCE ]; then
|
||||
read -r -p "Do you want to delete old image tags right now? [y/N] " response
|
||||
if [[ "$response" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
|
||||
docker rmi ${IMGS_TO_DELETE[*]}
|
||||
echo "The following unused mailcow images were found:"
|
||||
for id in "${IMGS_TO_DELETE[@]}"; do
|
||||
echo " ${IMAGES_INFO[$id]} ($id)"
|
||||
done
|
||||
|
||||
if [ ! $FORCE ]; then
|
||||
read -r -p "Do you want to delete them to free up some space? [y/N] " response
|
||||
if [[ "$response" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
|
||||
docker rmi ${IMGS_TO_DELETE[*]}
|
||||
else
|
||||
echo "OK, skipped."
|
||||
fi
|
||||
else
|
||||
echo "OK, skipped."
|
||||
echo "Running in forced mode! Force removing old mailcow images..."
|
||||
docker rmi ${IMGS_TO_DELETE[*]}
|
||||
fi
|
||||
else
|
||||
echo "Running image removal without extra confirmation due to force mode."
|
||||
docker rmi ${IMGS_TO_DELETE[*]}
|
||||
fi
|
||||
echo -e "\e[32mFurther cleanup...\e[0m"
|
||||
echo "If you want to cleanup further garbage collected by Docker, please make sure all containers are up and running before cleaning your system by executing \"docker system prune\""
|
||||
echo -e "\e[32mFurther cleanup...\e[0m"
|
||||
echo "If you want to cleanup further garbage collected by Docker, please make sure all containers are up and running before cleaning your system by executing \"docker system prune\""
|
||||
fi
|
||||
}
|
||||
|
||||
@ -181,8 +174,8 @@ if ! [[ "${DOCKER_COMPOSE_VERSION}" =~ ^(native|standalone)$ ]]; then
|
||||
if docker compose version --short | grep "2." > /dev/null 2>&1; then
|
||||
DOCKER_COMPOSE_VERSION=native
|
||||
COMPOSE_COMMAND="docker compose"
|
||||
echo -e "\e[31mFound Docker Compose Plugin (native).\e[0m"
|
||||
echo -e "\e[31mSetting the DOCKER_COMPOSE_VERSION Variable to native\e[0m"
|
||||
echo -e "\e[33mFound Docker Compose Plugin (native).\e[0m"
|
||||
echo -e "\e[33mSetting the DOCKER_COMPOSE_VERSION Variable to native\e[0m"
|
||||
sed -i 's/^DOCKER_COMPOSE_VERSION=.*/DOCKER_COMPOSE_VERSION=native/' $SCRIPT_DIR/mailcow.conf
|
||||
sleep 2
|
||||
echo -e "\e[33mNotice: You'll have to update this Compose Version via your Package Manager manually!\e[0m"
|
||||
@ -196,8 +189,8 @@ if ! [[ "${DOCKER_COMPOSE_VERSION}" =~ ^(native|standalone)$ ]]; then
|
||||
if docker-compose version --short | grep "^2." > /dev/null 2>&1; then
|
||||
DOCKER_COMPOSE_VERSION=standalone
|
||||
COMPOSE_COMMAND="docker-compose"
|
||||
echo -e "\e[31mFound Docker Compose Standalone.\e[0m"
|
||||
echo -e "\e[31mSetting the DOCKER_COMPOSE_VERSION Variable to standalone\e[0m"
|
||||
echo -e "\e[33mFound Docker Compose Standalone.\e[0m"
|
||||
echo -e "\e[33mSetting the DOCKER_COMPOSE_VERSION Variable to standalone\e[0m"
|
||||
sed -i 's/^DOCKER_COMPOSE_VERSION=.*/DOCKER_COMPOSE_VERSION=standalone/' $SCRIPT_DIR/mailcow.conf
|
||||
sleep 2
|
||||
echo -e "\e[33mNotice: For an automatic update of docker-compose please use the update_compose.sh scripts located at the helper-scripts folder.\e[0m"
|
||||
@ -904,34 +897,38 @@ if [ "$CURRENT_REPO" != "$DEFAULT_REPO" ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
echo -e "\e[32mCommitting current status...\e[0m"
|
||||
[[ -z "$(git config user.name)" ]] && git config user.name moo
|
||||
[[ -z "$(git config user.email)" ]] && git config user.email moo@cow.moo
|
||||
[[ ! -z $(git ls-files data/conf/rspamd/override.d/worker-controller-password.inc) ]] && git rm data/conf/rspamd/override.d/worker-controller-password.inc
|
||||
git add -u
|
||||
git commit -am "Before update on ${DATE}" > /dev/null
|
||||
echo -e "\e[32mFetching updated code from remote...\e[0m"
|
||||
git fetch origin #${BRANCH}
|
||||
echo -e "\e[32mMerging local with remote code (recursive, strategy: \"${MERGE_STRATEGY:-theirs}\", options: \"patience\"...\e[0m"
|
||||
git config merge.defaultToUpstream true
|
||||
git merge -X${MERGE_STRATEGY:-theirs} -Xpatience -m "After update on ${DATE}"
|
||||
# Need to use a variable to not pass return codes of if checks
|
||||
MERGE_RETURN=$?
|
||||
if [[ ${MERGE_RETURN} == 128 ]]; then
|
||||
echo -e "\e[31m\nOh no, what happened?\n=> You most likely added files to your local mailcow instance that were now added to the official mailcow repository. Please move them to another location before updating mailcow.\e[0m"
|
||||
exit 1
|
||||
elif [[ ${MERGE_RETURN} == 1 ]]; then
|
||||
echo -e "\e[93mPotenial conflict, trying to fix...\e[0m"
|
||||
git status --porcelain | grep -E "UD|DU" | awk '{print $2}' | xargs rm -v
|
||||
git add -A
|
||||
git commit -m "After update on ${DATE}" > /dev/null
|
||||
git checkout .
|
||||
echo -e "\e[32mRemoved and recreated files if necessary.\e[0m"
|
||||
elif [[ ${MERGE_RETURN} != 0 ]]; then
|
||||
echo -e "\e[31m\nOh no, something went wrong. Please check the error message above.\e[0m"
|
||||
echo
|
||||
echo "Run $COMPOSE_COMMAND up -d to restart your stack without updates or try again after fixing the mentioned errors."
|
||||
exit 1
|
||||
if [ ! $DEV ]; then
|
||||
echo -e "\e[32mCommitting current status...\e[0m"
|
||||
[[ -z "$(git config user.name)" ]] && git config user.name moo
|
||||
[[ -z "$(git config user.email)" ]] && git config user.email moo@cow.moo
|
||||
[[ ! -z $(git ls-files data/conf/rspamd/override.d/worker-controller-password.inc) ]] && git rm data/conf/rspamd/override.d/worker-controller-password.inc
|
||||
git add -u
|
||||
git commit -am "Before update on ${DATE}" > /dev/null
|
||||
echo -e "\e[32mFetching updated code from remote...\e[0m"
|
||||
git fetch origin #${BRANCH}
|
||||
echo -e "\e[32mMerging local with remote code (recursive, strategy: \"${MERGE_STRATEGY:-theirs}\", options: \"patience\"...\e[0m"
|
||||
git config merge.defaultToUpstream true
|
||||
git merge -X${MERGE_STRATEGY:-theirs} -Xpatience -m "After update on ${DATE}"
|
||||
# Need to use a variable to not pass return codes of if checks
|
||||
MERGE_RETURN=$?
|
||||
if [[ ${MERGE_RETURN} == 128 ]]; then
|
||||
echo -e "\e[31m\nOh no, what happened?\n=> You most likely added files to your local mailcow instance that were now added to the official mailcow repository. Please move them to another location before updating mailcow.\e[0m"
|
||||
exit 1
|
||||
elif [[ ${MERGE_RETURN} == 1 ]]; then
|
||||
echo -e "\e[93mPotenial conflict, trying to fix...\e[0m"
|
||||
git status --porcelain | grep -E "UD|DU" | awk '{print $2}' | xargs rm -v
|
||||
git add -A
|
||||
git commit -m "After update on ${DATE}" > /dev/null
|
||||
git checkout .
|
||||
echo -e "\e[32mRemoved and recreated files if necessary.\e[0m"
|
||||
elif [[ ${MERGE_RETURN} != 0 ]]; then
|
||||
echo -e "\e[31m\nOh no, something went wrong. Please check the error message above.\e[0m"
|
||||
echo
|
||||
echo "Run $COMPOSE_COMMAND up -d to restart your stack without updates or try again after fixing the mentioned errors."
|
||||
exit 1
|
||||
fi
|
||||
elif [ $DEV ]; then
|
||||
echo -e "\e[33mDEVELOPER MODE: Not creating a git diff and commiting it to prevent development stuff within a backup diff...\e[0m"
|
||||
fi
|
||||
|
||||
echo -e "\e[32mFetching new images, if any...\e[0m"
|
||||
|
Loading…
Reference in New Issue
Block a user