瀏覽代碼

[Web] Allow to set max_age for quarantine items

andryyy 6 年之前
父節點
當前提交
176f2a3f34
共有 4 個文件被更改,包括 16 次插入2 次删除
  1. 8 2
      data/web/admin.php
  2. 6 0
      data/web/inc/functions.quarantine.inc.php
  3. 1 0
      data/web/lang/lang.de.php
  4. 1 0
      data/web/lang/lang.en.php

+ 8 - 2
data/web/admin.php

@@ -621,18 +621,24 @@ $tfa_data = get_tfa();
        <?php $q_data = quarantine('settings');?>
        <?php $q_data = quarantine('settings');?>
         <form class="form" data-id="quarantine" role="form" method="post">
         <form class="form" data-id="quarantine" role="form" method="post">
           <div class="row">
           <div class="row">
-            <div class="col-sm-6">
+            <div class="col-sm-4">
               <div class="form-group">
               <div class="form-group">
                 <label for="retention_size"><?=$lang['admin']['quarantine_retention_size'];?></label>
                 <label for="retention_size"><?=$lang['admin']['quarantine_retention_size'];?></label>
                 <input type="number" class="form-control" name="retention_size" value="<?=$q_data['retention_size'];?>" placeholder="0" required>
                 <input type="number" class="form-control" name="retention_size" value="<?=$q_data['retention_size'];?>" placeholder="0" required>
               </div>
               </div>
             </div>
             </div>
-            <div class="col-sm-6">
+            <div class="col-sm-4">
               <div class="form-group">
               <div class="form-group">
                 <label for="max_size"><?=$lang['admin']['quarantine_max_size'];?></label>
                 <label for="max_size"><?=$lang['admin']['quarantine_max_size'];?></label>
                 <input type="number" class="form-control" name="max_size" value="<?=$q_data['max_size'];?>" placeholder="0" required>
                 <input type="number" class="form-control" name="max_size" value="<?=$q_data['max_size'];?>" placeholder="0" required>
               </div>
               </div>
             </div>
             </div>
+            <div class="col-sm-4">
+              <div class="form-group">
+                <label for="max_age"><?=$lang['admin']['quarantine_max_age'];?></label>
+                <input type="number" class="form-control" name="max_age" value="<?=$q_data['max_age'];?>" min="1" required>
+              </div>
+            </div>
           </div>
           </div>
           <div class="row">
           <div class="row">
             <div class="col-sm-6">
             <div class="col-sm-6">

+ 6 - 0
data/web/inc/functions.quarantine.inc.php

@@ -296,13 +296,18 @@ function quarantine($_action, $_data = null) {
           $release_format = 'raw';
           $release_format = 'raw';
         }
         }
         $max_size = $_data['max_size'];
         $max_size = $_data['max_size'];
+        $max_age = intval($_data['max_age']);
         $subject = $_data['subject'];
         $subject = $_data['subject'];
         $sender = $_data['sender'];
         $sender = $_data['sender'];
         $html = $_data['html_tmpl'];
         $html = $_data['html_tmpl'];
+        if ($max_age <= 0) {
+          $max_age = 365;
+        }
         $exclude_domains = (array)$_data['exclude_domains'];
         $exclude_domains = (array)$_data['exclude_domains'];
         try {
         try {
           $redis->Set('Q_RETENTION_SIZE', intval($retention_size));
           $redis->Set('Q_RETENTION_SIZE', intval($retention_size));
           $redis->Set('Q_MAX_SIZE', intval($max_size));
           $redis->Set('Q_MAX_SIZE', intval($max_size));
+          $redis->Set('Q_MAX_AGE', $max_age);
           $redis->Set('Q_EXCLUDE_DOMAINS', json_encode($exclude_domains));
           $redis->Set('Q_EXCLUDE_DOMAINS', json_encode($exclude_domains));
           $redis->Set('Q_RELEASE_FORMAT', $release_format);
           $redis->Set('Q_RELEASE_FORMAT', $release_format);
           $redis->Set('Q_SENDER', $sender);
           $redis->Set('Q_SENDER', $sender);
@@ -647,6 +652,7 @@ function quarantine($_action, $_data = null) {
           $settings['exclude_domains'] = json_decode($redis->Get('Q_EXCLUDE_DOMAINS'), true);
           $settings['exclude_domains'] = json_decode($redis->Get('Q_EXCLUDE_DOMAINS'), true);
         }
         }
         $settings['max_size'] = $redis->Get('Q_MAX_SIZE');
         $settings['max_size'] = $redis->Get('Q_MAX_SIZE');
+        $settings['max_age'] = $redis->Get('Q_MAX_AGE');
         $settings['retention_size'] = $redis->Get('Q_RETENTION_SIZE');
         $settings['retention_size'] = $redis->Get('Q_RETENTION_SIZE');
         $settings['release_format'] = $redis->Get('Q_RELEASE_FORMAT');
         $settings['release_format'] = $redis->Get('Q_RELEASE_FORMAT');
         $settings['subject'] = $redis->Get('Q_SUBJ');
         $settings['subject'] = $redis->Get('Q_SUBJ');

+ 1 - 0
data/web/lang/lang.de.php

@@ -650,6 +650,7 @@ $lang['admin']['active_rspamd_settings_map'] = "Derzeit aktive Settings Map";
 $lang['admin']['quota_notifications_info'] = "Quota Benachrichtigungen werden an Mailboxen versendet, die 80 respektive 95 Prozent der zur Verfügung stehenden Quota überschreiten.";
 $lang['admin']['quota_notifications_info'] = "Quota Benachrichtigungen werden an Mailboxen versendet, die 80 respektive 95 Prozent der zur Verfügung stehenden Quota überschreiten.";
 $lang['admin']['quarantine_retention_size'] = "Rückhaltungen pro Mailbox:<br><small>0 bedeutet <b>inaktiv</b>.</small>";
 $lang['admin']['quarantine_retention_size'] = "Rückhaltungen pro Mailbox:<br><small>0 bedeutet <b>inaktiv</b>.</small>";
 $lang['admin']['quarantine_max_size'] = "Maximale Größe in MiB (größere Elemente werden verworfen):<br><small>0 bedeutet <b>nicht</b> unlimitert.</small>";
 $lang['admin']['quarantine_max_size'] = "Maximale Größe in MiB (größere Elemente werden verworfen):<br><small>0 bedeutet <b>nicht</b> unlimitert.</small>";
+$lang['admin']['quarantine_max_age'] = "Maximales Alter in Tagen<br><small>Wert muss größer oder gleich 1 Tag sein.</small>";
 $lang['admin']['quarantine_exclude_domains'] = "Domains und Alias-Domains ausschließen";
 $lang['admin']['quarantine_exclude_domains'] = "Domains und Alias-Domains ausschließen";
 $lang['admin']['quarantine_notification_sender'] = "Benachrichtigungs-E-Mail Absender";
 $lang['admin']['quarantine_notification_sender'] = "Benachrichtigungs-E-Mail Absender";
 $lang['admin']['quota_notification_sender'] = "Benachrichtigungs-E-Mail Absender";
 $lang['admin']['quota_notification_sender'] = "Benachrichtigungs-E-Mail Absender";

+ 1 - 0
data/web/lang/lang.en.php

@@ -687,6 +687,7 @@ $lang['admin']['active_rspamd_settings_map'] = "Active settings map";
 $lang['admin']['quota_notifications_info'] = "Quota notications are sent to users once when crossing 80% and once when crossing 95% usage.";
 $lang['admin']['quota_notifications_info'] = "Quota notications are sent to users once when crossing 80% and once when crossing 95% usage.";
 $lang['admin']['quarantine_retention_size'] = "Retentions per mailbox:<br><small>0 indicates <b>inactive</b>.</small>";
 $lang['admin']['quarantine_retention_size'] = "Retentions per mailbox:<br><small>0 indicates <b>inactive</b>.</small>";
 $lang['admin']['quarantine_max_size'] = "Maximum size in MiB (larger elements are discarded):<br><small>0 does <b>not</b> indicate unlimited.</small>";
 $lang['admin']['quarantine_max_size'] = "Maximum size in MiB (larger elements are discarded):<br><small>0 does <b>not</b> indicate unlimited.</small>";
+$lang['admin']['quarantine_max_age'] = "Maximum age in days<br><small>Value must be equal to or greater than 1 day.</small>";
 $lang['admin']['quarantine_exclude_domains'] = "Exclude domains and alias-domains";
 $lang['admin']['quarantine_exclude_domains'] = "Exclude domains and alias-domains";
 $lang['admin']['quarantine_release_format'] = "Format of released items";
 $lang['admin']['quarantine_release_format'] = "Format of released items";
 $lang['admin']['quarantine_release_format_raw'] = "Unmodified original";
 $lang['admin']['quarantine_release_format_raw'] = "Unmodified original";