From 752f2417de59f7992dea79ad5769e619358c2bb6 Mon Sep 17 00:00:00 2001 From: Timo Reymann Date: Sun, 8 Sep 2019 10:54:21 +0200 Subject: [PATCH 1/3] Resolve #2794 Add restore for 'all' --- helper-scripts/backup_and_restore.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/helper-scripts/backup_and_restore.sh b/helper-scripts/backup_and_restore.sh index 5054d6ee..24ff5f5a 100755 --- a/helper-scripts/backup_and_restore.sh +++ b/helper-scripts/backup_and_restore.sh @@ -211,6 +211,9 @@ elif [[ ${1} == "restore" ]]; then echo "No datasets found" exit 1 fi + + echo "[ 0 ] all" + FILE_SELECTION[0]="vmail crypt rspamd postfix mysql redis" for file in $(ls -f "${FOLDER_SELECTION[${input_sel}]}"); do if [[ ${file} =~ vmail ]]; then echo "[ ${i} ] - Mail directory (/var/vmail)" @@ -240,7 +243,7 @@ elif [[ ${1} == "restore" ]]; then done echo input_sel=0 - while [[ ${input_sel} -lt 1 || ${input_sel} -gt ${i} ]]; do + while [[ ${input_sel} -lt 0 || ${input_sel} -gt ${i} ]]; do read -p "Select a dataset to restore: " input_sel done echo "Restoring ${FILE_SELECTION[${input_sel}]} from ${RESTORE_POINT}..." From 45aa7b45fc72e26ed9fefb2d94a917a6d3740b89 Mon Sep 17 00:00:00 2001 From: Timo Reymann Date: Sun, 8 Sep 2019 12:21:12 +0200 Subject: [PATCH 2/3] #2794 Make parts to restore depend on backup folder contents --- helper-scripts/backup_and_restore.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/helper-scripts/backup_and_restore.sh b/helper-scripts/backup_and_restore.sh index 24ff5f5a..9c5c070a 100755 --- a/helper-scripts/backup_and_restore.sh +++ b/helper-scripts/backup_and_restore.sh @@ -213,7 +213,8 @@ elif [[ ${1} == "restore" ]]; then fi echo "[ 0 ] all" - FILE_SELECTION[0]="vmail crypt rspamd postfix mysql redis" + # find all files in folder with .tar.gz extension, print their base names, remove backup_, remove .tar, remove .gz + FILE_SELECTION[0]=$(find "${FOLDER_SELECTION[${input_sel}]}" -type f -name "*.tar.gz" -printf "%f\n" | sed 's/backup_*//' | sed 's/\.[^.]*$//' | sed 's/\.[^.]*$//') for file in $(ls -f "${FOLDER_SELECTION[${input_sel}]}"); do if [[ ${file} =~ vmail ]]; then echo "[ ${i} ] - Mail directory (/var/vmail)" @@ -242,7 +243,7 @@ elif [[ ${1} == "restore" ]]; then fi done echo - input_sel=0 + input_sel=-1 while [[ ${input_sel} -lt 0 || ${input_sel} -gt ${i} ]]; do read -p "Select a dataset to restore: " input_sel done From eb6229b2a4883c9c4893cae630ae57caa595530c Mon Sep 17 00:00:00 2001 From: Geitenijs <40541903+Geitenijs@users.noreply.github.com> Date: Sat, 19 Oct 2019 17:39:21 +0200 Subject: [PATCH 3/3] Update lang.nl.php --- data/web/lang/lang.nl.php | 75 ++++++++++++++++++++++----------------- 1 file changed, 43 insertions(+), 32 deletions(-) diff --git a/data/web/lang/lang.nl.php b/data/web/lang/lang.nl.php index b0c36107..1ed852c5 100644 --- a/data/web/lang/lang.nl.php +++ b/data/web/lang/lang.nl.php @@ -19,8 +19,8 @@ $lang['footer']['delete_these_items'] = 'Bevestig de wijzigingen aan het volgend $lang['footer']['delete_now'] = 'Nu verwijderen'; $lang['footer']['cancel'] = 'Annuleren'; -$lang['footer']['hibp_nok'] = 'Dit is een potentieel onveilig wachtwoord!'; -$lang['footer']['hibp_ok'] = 'Dit wachtwoord is relatief veilig'; +$lang['footer']['hibp_nok'] = 'Dit is een onveilig wachtwoord!'; +$lang['footer']['hibp_ok'] = 'Dit wachtwoord is niet publiekelijk bekend'; $lang['danger']['transport_dest_exists'] = 'Transportbestemming "%s" bestaat reeds'; $lang['danger']['unlimited_quota_acl'] = "Onbeperkt quotum geweigerd door toegangscontrole"; @@ -39,7 +39,7 @@ $lang['danger']['invalid_nexthop'] = "Formaat van nexthop is ongeldig"; $lang['danger']['invalid_nexthop_authenticated'] = "Er bestaat al een nexthop met andere inloggegevens. Pas deze gegevens voor de reeds bestaande nexthop eerst aan."; $lang['danger']['next_hop_interferes'] = "%s interfereert met nexthop %s"; $lang['danger']['next_hop_interferes_any'] = "Een bestaande nexthop interfereert met %s"; -$lang['danger']['rspamd_ui_pw_length'] = "Rspamd-wachtwoord moet minstens 6 tekens lang zijn"; +$lang['danger']['rspamd_ui_pw_length'] = "Rspamd-wachtwoord dient minstens 6 tekens lang te zijn"; $lang['success']['rspamd_ui_pw_set'] = "Rspamd-wachtwoord succesvol ingesteld"; $lang['success']['queue_command_success'] = "Opdracht succesvol voltooid"; $lang['danger']['unknown'] = "Er is een onbekende fout opgetreden"; @@ -94,9 +94,9 @@ $lang['danger']['object_is_not_numeric'] = "Waarde %s is niet numeriek"; $lang['success']['domain_added'] = "Domein %s is toegevoegd"; $lang['success']['items_deleted'] = "Onderdelen %s zijn verwijderd"; $lang['success']['item_deleted'] = "Onderdeel %s is verwijderd"; -$lang['danger']['alias_empty'] = "Aliasadres moet ingevuld worden"; +$lang['danger']['alias_empty'] = "Aliasadres dient ingevuld te worden"; $lang['danger']['last_key'] = 'De laatste sleutel kan niet worden verwijderd'; -$lang['danger']['goto_empty'] = "Doeladres moet ingevuld worden"; +$lang['danger']['goto_empty'] = "Doeladres dient ingevuld te worden"; $lang['danger']['policy_list_from_exists'] = "Er bestaat reeds een vermelding met dezelfde naam"; $lang['danger']['policy_list_from_invalid'] = "Invoer is ongeldig"; $lang['danger']['alias_invalid'] = "Aliasadres %s is ongeldig"; @@ -107,7 +107,7 @@ $lang['danger']['object_exists'] = "Object %s bestaat reeds"; $lang['danger']['domain_exists'] = "Domain %s bestaat reeds"; $lang['danger']['alias_goto_identical'] = "Het alias- en doeladres mogen niet identiek zijn"; $lang['danger']['aliasd_targetd_identical'] = "Aliasdomein %s dient af te wijken van het doeldomein"; -$lang['danger']['maxquota_empty'] = 'Maximaal postvakquotum moet groter dan 0 zijn.'; +$lang['danger']['maxquota_empty'] = 'Maximaal postvakquotum dient groter dan 0 te zijn.'; $lang['success']['alias_added'] = "Aliasadres %s is toegevoegd"; $lang['success']['alias_modified'] = "Wijzigingen aan alias %s zijn opgeslagen"; $lang['success']['mailbox_modified'] = "Wijzigingen aan postvak %s zijn opgeslagen"; @@ -128,7 +128,7 @@ $lang['success']['license_modified'] = "Wijzigingen aan de licentie zijn opgesla $lang['danger']['username_invalid'] = "Gebruikersnaam %s kan niet worden gebruikt"; $lang['danger']['password_mismatch'] = "De ingevoerde wachtwoorden komen niet overeen"; $lang['danger']['password_complexity'] = "Wachtwoord voldoet niet aan de vereisten (6 tekens lang, letters en nummers)"; -$lang['danger']['password_empty'] = "Het wachtwoord moet ingevuld worden"; +$lang['danger']['password_empty'] = "Het wachtwoord dient ingevuld worden"; $lang['danger']['login_failed'] = "Aanmelding mislukt"; $lang['danger']['mailbox_invalid'] = "Naam van het postvak is ongeldig"; $lang['danger']['description_invalid'] = 'Beschrijving voor %s is ongeldig'; @@ -136,7 +136,7 @@ $lang['danger']['resource_invalid'] = "Naam van het middel %s is ongeldig"; $lang['danger']['is_alias'] = "Aliasadres %s bestaat reeds"; $lang['danger']['is_alias_or_mailbox'] = "Aliasadres of postvak %s bestaat reeds"; $lang['danger']['is_spam_alias'] = "Spam-aliasadres %s bestaat reeds"; -$lang['danger']['quota_not_0_not_numeric'] = "Quotum moet numeriek en groter dan 0 zijn"; +$lang['danger']['quota_not_0_not_numeric'] = "Quotum dient numeriek en groter dan 0 te zijn"; $lang['danger']['domain_not_found'] = 'Domein %s niet gevonden'; $lang['danger']['max_mailbox_exceeded'] = "Maximaal aantal postvakken overschreden (%d van %d)"; $lang['danger']['max_alias_exceeded'] = 'Maximaal aantal aliassen overschreden'; @@ -154,15 +154,15 @@ $lang['success']['eas_reset'] = "De ActiveSync-apparaatcache voor gebruiker %s i $lang['success']['resource_removed'] = "Middel %s is verwijderd"; $lang['warning']['cannot_delete_self'] = "Gebruikers kunnen niet worden verwijderd wanneer deze zijn ingelogd"; $lang['warning']['no_active_admin'] = "Het is niet mogelijk om de laatste actieve administrator te verwijderen"; -$lang['danger']['max_quota_in_use'] = "Postvakquotum moet gelijk zijn aan, of groter zijn dan %d MiB"; -$lang['danger']['domain_quota_m_in_use'] = "Domeinquotum moet gelijk zijn aan, of groter zijn dan %s MiB"; -$lang['danger']['mailboxes_in_use'] = "Maximaal aantal postvakken moet gelijk zijn aan, of groter zijn dan %d"; -$lang['danger']['aliases_in_use'] = "Maximaal aantal aliassen moet gelijk zijn aan, of groter zijn dan %d"; +$lang['danger']['max_quota_in_use'] = "Postvakquotum dient gelijk te zijn aan, of groter te zijn dan %d MiB"; +$lang['danger']['domain_quota_m_in_use'] = "Domeinquotum dient gelijk te zijn aan, of groter te zijn dan %s MiB"; +$lang['danger']['mailboxes_in_use'] = "Maximaal aantal postvakken dient gelijk te zijn aan, of groter te zijn dan %d"; +$lang['danger']['aliases_in_use'] = "Maximaal aantal aliassen dient gelijk te zijn aan, of groter te zijn dan %d"; $lang['danger']['sender_acl_invalid'] = "Toegangscontrole van afzender %s is ongeldig"; $lang['danger']['domain_not_empty'] = "Domein %s is in gebruik, verwijderen niet mogelijk"; $lang['danger']['validity_missing'] = 'Wijs een geldigheidstermijn toe'; $lang['user']['loading'] = "Bezig met laden..."; -$lang['user']['force_pw_update'] = 'Er moet een nieuw wachtwoord worden ingesteld voordat er gebruik kan worden gemaakt van deze dienst.'; +$lang['user']['force_pw_update'] = 'Er dient een nieuw wachtwoord ingesteld te worden, voordat er gebruik kan worden gemaakt van deze dienst.'; $lang['user']['active_sieve'] = "Actieve filters"; $lang['user']['show_sieve_filters'] = "Toon actieve filters"; $lang['user']['no_active_filter'] = "Geen actieve filters gevonden"; @@ -181,9 +181,9 @@ $lang['user']['new_password_description'] = 'Vereisten: 6 tekens lang, letters e $lang['user']['spam_aliases'] = 'Tijdelijk e-mailadres'; $lang['user']['alias'] = 'Alias'; $lang['user']['shared_aliases'] = 'Gedeelde aliasadressen'; -$lang['user']['shared_aliases_desc'] = 'Een gedeeld aliasadres wordt niet beïnvloedt door gebruiker-specifieke instellingen. Een aangepast spamfilter kan eventueel worden ingesteld door een beheerder.'; +$lang['user']['shared_aliases_desc'] = 'Een gedeeld aliasadres wordt niet beïnvloed door gebruiker-specifieke instellingen. Een aangepast spamfilter kan eventueel worden ingesteld door een beheerder.'; $lang['user']['direct_aliases'] = 'Directe aliasadressen'; -$lang['user']['direct_aliases_desc'] = 'Directe aliasadressen worden beïnvloedt door spamfilters en het versleutelingsbeleid.'; +$lang['user']['direct_aliases_desc'] = 'Directe aliasadressen worden beïnvloed door spamfilters en het versleutelingsbeleid.'; $lang['user']['is_catch_all'] = 'Catch-all voor domeinen'; $lang['user']['aliases_also_send_as'] = 'Toegestaan om te verzenden als'; $lang['user']['aliases_send_as_all'] = 'Controleer verzendtoegang voor de volgende domeinen, inclusief aliassen, niet'; @@ -238,11 +238,11 @@ $lang['user']['tag_help_example'] = 'Voorbeeld van een e-maildres met tag: ik $lang['user']['eas_reset'] = 'Herstel ActiveSync-apparaatcache'; $lang['user']['eas_reset_now'] = 'Herstel nu'; -$lang['user']['eas_reset_help'] = 'In de meeste gevallen verhelpt dit problemen met ActiveSync op je apparaten
Let wel: alle onderdelen zullen opnieuw gedownload moeten worden!'; +$lang['user']['eas_reset_help'] = 'In de meeste gevallen verhelpt dit problemen met ActiveSync op je apparaten
Let wel: alle mails, contacten en agenda''s zullen opnieuw gedownload worden!'; $lang['user']['sogo_profile_reset'] = 'Herstel SOGo-profiel'; $lang['user']['sogo_profile_reset_now'] = 'Herstel nu'; -$lang['user']['sogo_profile_reset_help'] = 'Dit zal het SOGo-profiel van deze gebruiker verwijderen, en daarbij alle gegevens permanent verwijderen.'; +$lang['user']['sogo_profile_reset_help'] = 'Dit zal het SOGo-profiel van deze gebruiker verwijderen, en daarbij alle gegevens, inclusief contacten en agenda''s, permanent verwijderen.'; $lang['user']['encryption'] = 'Versleuteling'; $lang['user']['username'] = 'Gebruikersnaam'; @@ -338,11 +338,6 @@ $lang['mailbox']['sogo_visible'] = 'Alias is zichtbaar in SOGo'; $lang['mailbox']['sogo_visible_y'] = 'Toon alias in SOGo'; $lang['mailbox']['sogo_visible_n'] = 'Verberg alias in SOGo'; $lang['edit']['syncjob'] = 'Wijzig synchronisatietaak'; -$lang['edit']['client_id'] = 'Client ID'; -$lang['edit']['client_secret'] = 'Client secret'; -$lang['edit']['scope'] = 'Omvang'; -$lang['edit']['grant_types'] = 'Grant types'; -$lang['edit']['redirect_uri'] = 'Doorstuur/Callback URL'; $lang['edit']['hostname'] = 'Hostname'; $lang['edit']['encryption'] = 'Versleuteling'; $lang['edit']['maxage'] = 'Maximale leeftijd van berichten (in dagen) die extern worden opgehaald
(0 = negeer leeftijd)'; @@ -425,6 +420,7 @@ $lang['acl']['recipient_maps'] = 'Ontvanger-kaarten'; $lang['acl']['unlimited_quota'] = 'Onbeperkt quotum voor postvakken'; $lang['acl']['extend_sender_acl'] = 'Sta verzenden via externe adressen toe'; $lang['acl']['prohibited'] = 'Toegang geweigerd'; +$lang['acl']['sogo_access'] = 'Sta beheren van SOGo-toegang toe'; $lang['edit']['extended_sender_acl'] = 'Externe verzendadressen'; $lang['edit']['extended_sender_acl_info'] = 'Wanneer mogelijk dient er een DKIM-sleutel geïmporteerd te worden. Vergeet niet om deze server toe te voegen aan het SPF-record
@@ -662,6 +658,27 @@ $lang['admin']['credentials_transport_warning'] = 'Waarschuwing: Bij het $lang['admin']['destination'] = 'Bestemming'; $lang['admin']['nexthop'] = 'Nexthop'; + +$lang['admin']['oauth2_info'] = 'De OAuth2-implementatie ondersteunt de grant type "Authorization Code" en geeft refresh-tokens uit.
De server geeft automatisch nieuwe refresh-tokens uit, nadat een refresh-token is gebruikt.

→ De standaard scope is profiel. Enkel postvakgebruikers kunnen OAuth2 gebruiken om zich te authenticeren. Als de scope-parameter wordt weggelaten, zal deze terugvallen op profiel.
→ De state-parameter dient verstuurd te worden door de client als onderdeel van het authorize-request.

Paden voor requests naar de OAuth2-API:
  • Authorization endpoint: /oauth/authorize
  • Token endpoint: /oauth/token
  • Resource page: /oauth/profile
Het regenereren van de client-secret zal oudere authorization codes niet doen verlopen, maar het verversen van de tokens zal niet langer werken.

Het intrekken van client-tokens zal alle actieve sessies per direct beëindigen. Alle clients dienen zich opnieuw te authenticeren.'; + +$lang['admin']['oauth2_client_id'] = "Client-ID"; +$lang['admin']['oauth2_client_secret'] = "Client-secret"; +$lang['admin']['oauth2_redirect_uri'] = "Redirect URI"; +$lang['admin']['oauth2_revoke_tokens'] = 'Trek alle client-tokens in'; +$lang['admin']['oauth2_renew_secret'] = 'Genereer een nieuw client-secret'; +$lang['edit']['client_id'] = 'Client-ID'; +$lang['edit']['client_secret'] = 'Client-secret'; +$lang['edit']['scope'] = 'Scope'; +$lang['edit']['grant_types'] = 'Grant types'; +$lang['edit']['redirect_uri'] = 'Redirect/Callback URL'; +$lang['oauth2']['scope_ask_permission'] = 'Een applicatie heeft toegang tot de volgende onderdelen gevraagd'; +$lang['oauth2']['profile'] = 'Profiel'; +$lang['oauth2']['profile_desc'] = 'Persoonlijke informatie: gebruikersnaam, volledige naam, aanmaakdatum, bewerkdatum, activiteit'; +$lang['oauth2']['permit'] = 'Autoriseer applicatie'; +$lang['oauth2']['authorize_app'] = 'Autoriseer applicatie'; +$lang['oauth2']['deny'] = 'Weiger'; +$lang['oauth2']['access_denied'] = 'Log in als een postvakeigenaar om toegang via OAuth te verlenen'; + $lang['success']['forwarding_host_removed'] = "Doorstuurhost %s is verwijderd"; $lang['success']['forwarding_host_added'] = "Doorstuurhost %s is toegevoegd"; $lang['success']['relayhost_removed'] = "Invoer %s is verwijderd"; @@ -710,7 +727,7 @@ $lang['admin']['help_text'] = "Hulpteksten onder inlogvenster (HTML toegestaan)" $lang['admin']['title_name'] = '"Mailcow" (website-titel)'; $lang['admin']['main_name'] = '"Mailcow"'; $lang['admin']['apps_name'] = '"Mailcow-apps"'; -$lang['admin']['ui_footer'] = 'Footer-vermelding (HTML toegestaan)'; +$lang['admin']['ui_footer'] = 'Footer (HTML toegestaan)'; $lang['admin']['customize'] = "Uiterlijk"; $lang['admin']['change_logo'] = "Logo"; @@ -748,6 +765,7 @@ $lang['danger']['imagick_exception'] = "Error: Er is een probleem opgetreden met $lang['quarantine']['quarantine'] = "Quarantaine"; $lang['quarantine']['learn_spam_delete'] = "Onthoud als spam en verwijder"; $lang['quarantine']['qinfo'] = 'Het quarantainesysteem slaat geweigerde e-mail op, terwijl het voor de afzender lijkt alsof deze niet ontvangen is.
"' . $lang['quarantine']['learn_spam_delete'] . '" traint het systeem om soortgelijke e-mails in de toekomst weer als spam te markeren.
Wees er van bewust dat wanneer er meerdere berichten worden onderzocht, dit mogelijk enige tijd kan duren.'; +$lang['quarantine']['download_eml'] = "Download (.eml)"; $lang['quarantine']['release'] = "Geef vrij"; $lang['quarantine']['empty'] = 'Geen resultaten'; $lang['quarantine']['toggle_all'] = 'Selecteer alles'; @@ -761,6 +779,7 @@ $lang['quarantine']['sender'] = "Afzender"; $lang['quarantine']['show_item'] = "Toon item"; $lang['quarantine']['check_hash'] = "Zoek bestandshash op in VT"; $lang['quarantine']['qitem'] = "Quarantaine-item"; +$lang['quarantine']['rspamd_result'] = "Rspamd-resultaat"; $lang['quarantine']['subj'] = "Onderwerp"; $lang['quarantine']['recipients'] = "Ontvangers"; $lang['quarantine']['text_plain_content'] = "Inhoud (tekst)"; @@ -840,14 +859,6 @@ $lang['mailbox']['add_recipient_map_entry'] = 'Voeg ontvangerkaart toe'; $lang['danger']['tls_policy_map_parameter_invalid'] = "Beleidsparameter is ongeldig"; $lang['danger']['temp_error'] = "Tijdelijke fout"; -$lang['oauth2']['scope_ask_permission'] = 'Een applicatie heeft toegang tot de volgende onderdelen gevraagd'; -$lang['oauth2']['profile'] = 'Profiel'; -$lang['oauth2']['profile_desc'] = 'Persoonlijke informatie: gebruikersnaam, volledige naam, aanmaakdatum, bewerkdatum, activiteit'; -$lang['oauth2']['permit'] = 'Authoriseer applicatie'; -$lang['oauth2']['authorize_app'] = 'Authoriseer applicatie'; -$lang['oauth2']['deny'] = 'Weiger'; -$lang['oauth2']['access_denied'] = 'Log in als een postvakeigenaar om OAuth-toegang te verlenen'; - $lang['admin']['sys_mails'] = 'Systeemmails'; $lang['admin']['subject'] = 'Onderwerp'; $lang['admin']['from'] = 'Afzender'; @@ -875,7 +886,7 @@ $lang['admin']['api_info'] = 'De API is nog in ontwikkeling.'; $lang['admin']['guid_and_license'] = 'Licentie en identificatie'; $lang['admin']['guid'] = 'Identificatienummer - GUID'; -$lang['admin']['license_info'] = 'Een licentie is niet verplicht, maar je steunt hiermee wel de ontwikkeling.
Registreer je GUID hier, of schaf ondersteuning aan voor deze installatie.'; +$lang['admin']['license_info'] = 'Een licentie is niet vereist. Je steunt hier echter wel de ontwikkeling van Mailcow mee.
Registreer je GUID hier, of schaf ondersteuning aan voor deze installatie.'; $lang['admin']['validate_license_now'] = 'Valideer licentie'; $lang['admin']['customer_id'] = 'Klantnummer';