[Web] Read default actions from Rspamd instead of using/printing "5,15"
[Web] Allow to reset spam score to server default (which deletes the custom spam score from the database and prints the default action values of Rspamd in use)
This commit is contained in:
parent
7a7fafec87
commit
67658c1a07
data/web
@ -1151,13 +1151,21 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
||||
return false;
|
||||
}
|
||||
foreach ($usernames as $username) {
|
||||
if ($_data['spam_score'] == "default") {
|
||||
$stmt = $pdo->prepare("DELETE FROM `filterconf` WHERE `object` = :username
|
||||
AND (`option` = 'lowspamlevel' OR `option` = 'highspamlevel')");
|
||||
$stmt->execute(array(
|
||||
':username' => $username
|
||||
));
|
||||
continue;
|
||||
}
|
||||
$lowspamlevel = explode(',', $_data['spam_score'])[0];
|
||||
$highspamlevel = explode(',', $_data['spam_score'])[1];
|
||||
if (!is_numeric($lowspamlevel) || !is_numeric($highspamlevel)) {
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'danger',
|
||||
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||
'msg' => 'access_denied'
|
||||
'msg' => 'Invalid spam score, format must be "1,2" where first is low and second is high spam value.'
|
||||
);
|
||||
continue;
|
||||
}
|
||||
@ -2455,7 +2463,47 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
||||
return $syncjobdata;
|
||||
break;
|
||||
case 'spam_score':
|
||||
$default = "5, 15";
|
||||
$curl = curl_init();
|
||||
curl_setopt($curl, CURLOPT_UNIX_SOCKET_PATH, '/var/lib/rspamd/rspamd.sock');
|
||||
curl_setopt($curl, CURLOPT_URL,"http://rspamd/actions");
|
||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
|
||||
$default_actions = curl_exec($curl);
|
||||
if (!curl_errno($curl)) {
|
||||
$data_array = json_decode($default_actions, true);
|
||||
curl_close($curl);
|
||||
foreach ($data_array as $data) {
|
||||
if ($data['action'] == 'reject') {
|
||||
$reject = $data['value'];
|
||||
continue;
|
||||
}
|
||||
elseif ($data['action'] == 'add header') {
|
||||
$add_header = $data['value'];
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (empty($add_header) || empty($reject)) {
|
||||
// Assume default, set warning
|
||||
$default = "5, 15";
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'warning',
|
||||
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||
'msg' => 'Could not determine servers default spam score, assuming default'
|
||||
);
|
||||
}
|
||||
else {
|
||||
$default = $add_header . ', ' . $reject;
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Assume default, set warning
|
||||
$default = "5, 15";
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'warning',
|
||||
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||
'msg' => 'Could not determine servers default spam score, assuming default'
|
||||
);
|
||||
}
|
||||
curl_close($curl);
|
||||
$policydata = array();
|
||||
if (isset($_data) && filter_var($_data, FILTER_VALIDATE_EMAIL)) {
|
||||
if (!hasMailboxObjectAccess($_SESSION['mailcow_cc_username'], $_SESSION['mailcow_cc_role'], $_data)) {
|
||||
|
@ -598,6 +598,7 @@ $lang['admin']['reset_default'] = "Zurücksetzen auf Standard";
|
||||
$lang['admin']['merged_vars_hint'] = 'Ausgegraute Reihen wurden aus der Datei <code>vars.(local.)inc.php</code> gelesen und können hier nicht verändert werden.';
|
||||
|
||||
$lang['edit']['spam_score'] = "Einen benutzerdefiniterten Spam-Score festlegen";
|
||||
$lang['user']['spam_score_reset'] = "Auf Server-Standard zurücksetzen";
|
||||
$lang['edit']['spam_policy'] = "Hinzufügen und Entfernen von Einträgen in White- und Blacklists";
|
||||
$lang['edit']['spam_alias'] = "Anpassen temporärer Alias-Adressen";
|
||||
|
||||
|
@ -614,6 +614,7 @@ $lang['mailbox']['status'] = "Status";
|
||||
$lang['mailbox']['running'] = "Running";
|
||||
|
||||
$lang['edit']['spam_score'] = "Set a custom spam score";
|
||||
$lang['user']['spam_score_reset'] = "Reset to server default";
|
||||
$lang['edit']['spam_policy'] = "Add or remove items to white-/blacklist";
|
||||
$lang['edit']['spam_alias'] = "Create or change time limited alias addresses";
|
||||
|
||||
|
@ -305,19 +305,26 @@ elseif (isset($_SESSION['mailcow_cc_role']) && $_SESSION['mailcow_cc_role'] == '
|
||||
<li><?=$lang['user']['spamfilter_yellow'];?></li>
|
||||
<li><?=$lang['user']['spamfilter_red'];?></li>
|
||||
</ul>
|
||||
<p><i><?=$lang['user']['spamfilter_default_score'];?> 5:15</i></p>
|
||||
<p><?=$lang['user']['spamfilter_hint'];?></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-10">
|
||||
<button data-acl="<?=$_SESSION['acl']['spam_score'];?>" type="button" class="btn btn-sm btn-success" data-action="edit_selected"
|
||||
data-item="<?= htmlentities($username); ?>"
|
||||
data-id="spam_score"
|
||||
data-api-url='edit/spam-score'
|
||||
data-api-attr='{}'><?=$lang['user']['save_changes'];?></button>
|
||||
|
||||
</div>
|
||||
<div class="btn-group" data-acl="<?=$_SESSION['acl']['spam_policy'];?>">
|
||||
<a data-acl="<?=$_SESSION['acl']['spam_score'];?>" type="button" class="btn btn-sm btn-success" data-action="edit_selected"
|
||||
data-item="<?= htmlentities($username); ?>"
|
||||
data-id="spam_score"
|
||||
data-api-url='edit/spam-score'
|
||||
data-api-attr='{}'><?=$lang['user']['save_changes'];?></a>
|
||||
<a data-acl="<?=$_SESSION['acl']['spam_score'];?>" type="button" class="btn btn-sm btn-default" data-action="edit_selected"
|
||||
data-item="<?= htmlentities($username); ?>"
|
||||
data-id="spam_score_reset"
|
||||
data-api-url='edit/spam-score'
|
||||
data-api-attr='{"spam_score":"default"}'><?=$lang['user']['spam_score_reset'];?></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
Loading…
Reference in New Issue
Block a user