';
@@ -342,6 +350,7 @@ jQuery(function($){
},
},
{"name":"messages","filterable": false,"title":lang.msg_num,"breakpoints":"xs sm md"},
+ {"name":"rl","title":"RL","breakpoints":"xs sm md","style":{"width":"125px"}},
{"name":"active","filterable": false,"title":lang.active},
{"name":"action","filterable": false,"sortable": false,"style":{"min-width":"250px","text-align":"right"},"type":"html","title":lang.action,"breakpoints":"xs sm md"}
],
@@ -357,6 +366,13 @@ jQuery(function($){
$.each(data, function (i, item) {
item.quota = item.quota_used + "/" + item.quota;
item.max_quota_for_mbox = humanFileSize(item.max_quota_for_mbox);
+ if (!item.rl) {
+ item.rl = '∞';
+ } else {
+ item.rl = $.map(item.rl, function(e){
+ return e;
+ }).join('/1');
+ }
item.chkbox = '
';
if (role == "admin") {
item.action = '
' +
diff --git a/data/web/json_api.php b/data/web/json_api.php
index bbf452f9..fba933c4 100644
--- a/data/web/json_api.php
+++ b/data/web/json_api.php
@@ -135,6 +135,9 @@ if (isset($_SESSION['mailcow_cc_role']) || isset($_SESSION['pending_mailcow_cc_u
case "dkim":
process_add_return(dkim('add', $attr));
break;
+ case "dkim_duplicate":
+ process_add_return(dkim('duplicate', $attr));
+ break;
case "dkim_import":
process_add_return(dkim('import', $attr));
break;
@@ -181,6 +184,7 @@ if (isset($_SESSION['mailcow_cc_role']) || isset($_SESSION['pending_mailcow_cc_u
break;
}
break;
+
case "domain":
switch ($object) {
case "all":
@@ -208,6 +212,67 @@ if (isset($_SESSION['mailcow_cc_role']) || isset($_SESSION['pending_mailcow_cc_u
}
break;
+ case "rl-domain":
+ switch ($object) {
+ case "all":
+ $domains = array_merge(mailbox('get', 'domains'), mailbox('get', 'alias_domains'));
+ if (!empty($domains)) {
+ foreach ($domains as $domain) {
+ if ($details = ratelimit('get', 'domain', $domain)) {
+ $details['domain'] = $domain;
+ $data[] = $details;
+ }
+ else {
+ continue;
+ }
+ }
+ process_get_return($data);
+ }
+ else {
+ echo '{}';
+ }
+ break;
+
+ default:
+ $data = ratelimit('get', 'domain', $object);
+ process_get_return($data);
+ break;
+ }
+ break;
+
+ case "rl-mbox":
+ switch ($object) {
+ case "all":
+ $domains = mailbox('get', 'domains');
+ if (!empty($domains)) {
+ foreach ($domains as $domain) {
+ $mailboxes = mailbox('get', 'mailboxes', $domain);
+ if (!empty($mailboxes)) {
+ foreach ($mailboxes as $mailbox) {
+ if ($details = ratelimit('get', 'mailbox', $mailbox)) {
+ $details['mailbox'] = $mailbox;
+ $data[] = $details;
+ }
+ else {
+ continue;
+ }
+ }
+ }
+ }
+ process_get_return($data);
+ }
+ else {
+ echo '{}';
+ }
+ break;
+
+ default:
+ $data = ratelimit('get', 'mailbox', $object);
+ process_get_return($data);
+ break;
+ }
+ break;
+
case "relayhost":
switch ($object) {
case "all":
@@ -968,8 +1033,11 @@ if (isset($_SESSION['mailcow_cc_role']) || isset($_SESSION['pending_mailcow_cc_u
case "domain":
process_edit_return(mailbox('edit', 'domain', array_merge(array('domain' => $items), $attr)));
break;
- case "ratelimit":
- process_edit_return(mailbox('edit', 'ratelimit', array_merge(array('object' => $items), $attr)));
+ case "rl-domain":
+ process_edit_return(ratelimit('edit', 'domain', array_merge(array('object' => $items), $attr)));
+ break;
+ case "rl-mbox":
+ process_edit_return(ratelimit('edit', 'mailbox', array_merge(array('object' => $items), $attr)));
break;
case "alias-domain":
process_edit_return(mailbox('edit', 'alias_domain', array_merge(array('alias_domain' => $items), $attr)));
diff --git a/data/web/lang/lang.de.php b/data/web/lang/lang.de.php
index 3125f2ae..ef8805e3 100644
--- a/data/web/lang/lang.de.php
+++ b/data/web/lang/lang.de.php
@@ -65,6 +65,7 @@ $lang['success']['saved_settings'] = "Regel wurde gespeichert";
$lang['danger']['dkim_domain_or_sel_invalid'] = 'DKIM-Domain oder Selektor nicht korrekt: %s';
$lang['success']['dkim_removed'] = 'DKIM-Key wurde entfernt';
$lang['success']['dkim_added'] = 'DKIM-Key wurde hinzugefügt';
+$lang['success']['dkim_duplicated'] = "DKIM-Key der Domain %s wurde auf Domain %s kopiert";
$lang['danger']['access_denied'] = 'Zugriff verweigert oder unvollständige/ungültige Daten';
$lang['danger']['domain_invalid'] = 'Domainname %s ist ungültig';
$lang['danger']['mailbox_quota_exceeds_domain_quota'] = 'Maximale Größe für Mailboxen überschreitet das Domain Speicherlimit';
@@ -249,6 +250,7 @@ $lang['mailbox']['kind'] = 'Art';
$lang['mailbox']['description'] = 'Beschreibung';
$lang['mailbox']['resources'] = 'Ressourcen';
$lang['mailbox']['domains'] = 'Domains';
+$lang['admin']['domain_s'] = 'Domain(s)';
$lang['mailbox']['mailboxes'] = 'Mailboxen';
$lang['mailbox']['mailbox_quota'] = 'Max. Größe einer Mailbox';
$lang['mailbox']['domain_quota'] = 'Gesamtspeicher';
@@ -436,7 +438,9 @@ $lang['admin']['no_new_rows'] = 'Keine weiteren Zeilen vorhanden';
$lang['admin']['additional_rows'] = ' zusätzliche Zeilen geladen'; // parses to 'n additional rows were added'
$lang['admin']['private_key'] = 'Private Key';
$lang['admin']['import'] = 'Importieren';
+$lang['admin']['duplicate'] = 'Duplizieren';
$lang['admin']['import_private_key'] = 'Private Key importieren';
+$lang['admin']['duplicate_dkim'] = 'DKIM duplizieren';
$lang['admin']['f2b_parameters'] = 'Fail2ban Parameter';
$lang['admin']['f2b_ban_time'] = 'Banzeit (s)';
$lang['admin']['f2b_max_attempts'] = 'Max. Versuche';
@@ -453,6 +457,11 @@ $lang['admin']['dkim_keys'] = 'ARC/DKIM-Keys';
$lang['admin']['dkim_key_valid'] = 'Key gültig';
$lang['admin']['dkim_key_unused'] = 'Key ohne Zuweisung';
$lang['admin']['dkim_key_missing'] = 'Key fehlt';
+$lang['admin']['dkim_from'] = 'Von';
+$lang['admin']['dkim_to'] = 'Nach';
+$lang['admin']['dkim_from_title'] = 'Quellobjekt für Duplizierung';
+$lang['admin']['dkim_to_title'] = 'Ziel-Objekt(e) werden überschrieben';
+$lang['admin']['dkim_domains_wo_keys'] = "Domains mit fehlenden Keys auswählen";
$lang['admin']['add'] = 'Hinzufügen';
$lang['add']['add_domain_restart'] = 'Domain hinzufügen und SOGo neustarten';
$lang['add']['add_domain_only'] = 'Nur Domain hinzufügen';
diff --git a/data/web/lang/lang.en.php b/data/web/lang/lang.en.php
index ed2fbf25..6f345fb0 100644
--- a/data/web/lang/lang.en.php
+++ b/data/web/lang/lang.en.php
@@ -68,7 +68,8 @@ $lang['warning']['session_token'] = "Form token invalid: Token mismatch";
$lang['danger']['dkim_domain_or_sel_invalid'] = "DKIM domain or selector invalid: %s";
$lang['success']['dkim_removed'] = "DKIM key %s has been removed";
-$lang['success']['dkim_added'] = "DKIM key has been saved";
+$lang['success']['dkim_added'] = "DKIM key %s has been saved";
+$lang['success']['dkim_duplicated'] = "DKIM key for domain %s has been copied to %s";
$lang['danger']['access_denied'] = "Access denied or invalid form data";
$lang['danger']['domain_invalid'] = "Domain name %s is invalid";
$lang['danger']['mailbox_quota_exceeds_domain_quota'] = "Max. quota exceeds domain quota limit";
@@ -250,6 +251,7 @@ $lang['mailbox']['description'] = 'Description';
$lang['mailbox']['alias'] = 'Alias';
$lang['mailbox']['aliases'] = 'Aliases';
$lang['mailbox']['domains'] = 'Domains';
+$lang['admin']['domain_s'] = 'Domain/s';
$lang['mailbox']['mailboxes'] = 'Mailboxes';
$lang['mailbox']['resources'] = 'Resources';
$lang['mailbox']['mailbox_quota'] = 'Max. size of a mailbox';
@@ -445,7 +447,13 @@ $lang['admin']['no_new_rows'] = 'No further rows available';
$lang['admin']['additional_rows'] = ' additional rows were added'; // parses to 'n additional rows were added'
$lang['admin']['private_key'] = 'Private key';
$lang['admin']['import'] = 'Import';
+$lang['admin']['duplicate'] = 'Duplicate';
$lang['admin']['import_private_key'] = 'Import private key';
+$lang['admin']['duplicate_dkim'] = 'Duplicate DKIM record';
+$lang['admin']['dkim_from'] = 'From';
+$lang['admin']['dkim_to'] = 'To';
+$lang['admin']['dkim_from_title'] = 'Source domain to copy data from';
+$lang['admin']['dkim_to_title'] = 'Target domain/s - will be overwritten';
$lang['admin']['f2b_parameters'] = 'Fail2ban parameters';
$lang['admin']['f2b_ban_time'] = 'Ban time (s)';
$lang['admin']['f2b_max_attempts'] = 'Max. attempts';
@@ -465,6 +473,7 @@ $lang['admin']['dkim_key_unused'] = 'Key unused';
$lang['admin']['dkim_key_missing'] = 'Key missing';
$lang['admin']['dkim_add_key'] = 'Add ARC/DKIM key';
$lang['admin']['dkim_keys'] = 'ARC/DKIM keys';
+$lang['admin']['dkim_domains_wo_keys'] = "Select domains with missing keys";
$lang['admin']['add'] = 'Add';
$lang['add']['add_domain_restart'] = 'Add domain and restart SOGo';
$lang['add']['add_domain_only'] = 'Add domain only';