Add better preset management (#3119)
* add rspamd-presets * add sieveMailbox-presets * adding new translationsmaster
parent
3243bf42cd
commit
79053742ca
|
@ -1199,6 +1199,7 @@ echo "var log_pagination_size = '". $LOG_PAGINATION_SIZE . "';\n";
|
||||||
</script>
|
</script>
|
||||||
<?php
|
<?php
|
||||||
$js_minifier->add('/web/js/site/admin.js');
|
$js_minifier->add('/web/js/site/admin.js');
|
||||||
|
$js_minifier->add('/web/js/presets/rspamd.js');
|
||||||
require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/footer.inc.php';
|
require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/footer.inc.php';
|
||||||
} else {
|
} else {
|
||||||
header('Location: /');
|
header('Location: /');
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
var rspamdPresets = [
|
||||||
|
{
|
||||||
|
description: lang.rsettings_preset_1,
|
||||||
|
codeValue: 'priority = 10;\nauthenticated = yes;\napply "default" {\n symbols_enabled = ["DKIM_SIGNED", "RATELIMITED", "RATELIMIT_UPDATE", "RATELIMIT_CHECK", "DYN_RL_CHECK", "HISTORY_SAVE", "MILTER_HEADERS", "ARC_SIGNED"];\n}'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
description: lang.rsettings_preset_2,
|
||||||
|
codeValue: 'priority = 10;\nrcpt = "/postmaster@.*/";\nwant_spam = yes;'
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
var rspamd_presetsElem = document.getElementById("rspamd_presets");
|
||||||
|
if (rspamd_presetsElem && rspamdPresets) {
|
||||||
|
rspamd_presetsElem.innerHTML = '';
|
||||||
|
rspamdPresets.forEach(function (item, index) {
|
||||||
|
var elemID = 'rspamd_preset_' + index;
|
||||||
|
rspamd_presetsElem.innerHTML += '<li><a href="#" class="small" id="' + elemID + '">' + lang.rsettings_insert_preset.replace('%s', item.description) + '</a></li>';
|
||||||
|
|
||||||
|
/*
|
||||||
|
we need to define 0-timeout here, to prevent dom not be ready.
|
||||||
|
*/
|
||||||
|
setTimeout(function () {
|
||||||
|
document.getElementById(elemID).addEventListener('click', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
document.querySelector('form[data-id=rsetting] #adminRspamdSettingsDesc').value = item.description;
|
||||||
|
document.querySelector('form[data-id=rsetting] #adminRspamdSettingsContent').value = item.codeValue;
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
}, 0)
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
var sieveMailboxPresets = [
|
||||||
|
{
|
||||||
|
description: lang.sieve_preset_1,
|
||||||
|
codeValue: 'if header :contains "x-attached"\n [".exe",".bat",".js",".com",".cmd",".ini",".dll",".bas",".cpl",".drv",".inf",".sys",".pif",".doc",".docx"] {\n discard;\n stop;\n}'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
description: lang.sieve_preset_2,
|
||||||
|
codeValue: 'require ["envelope", "imap4flags"];\nif envelope "from" "mark@me-read.com"\n{\n setflag "\\\\seen";\n}'
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
var sieve_presetsElem = document.getElementById("sieve_presets");
|
||||||
|
if (sieve_presetsElem && sieveMailboxPresets) {
|
||||||
|
sieve_presetsElem.innerHTML = '';
|
||||||
|
sieveMailboxPresets.forEach(function (item, index) {
|
||||||
|
var elemID = 'sieve_preset_' + index;
|
||||||
|
sieve_presetsElem.innerHTML += '<li><a href="#" class="small" id="' + elemID + '">' + lang.insert_preset.replace('%s', item.description) + '</a></li>';
|
||||||
|
|
||||||
|
/*
|
||||||
|
we need to define 0-timeout here, to prevent dom not be ready.
|
||||||
|
*/
|
||||||
|
setTimeout(function () {
|
||||||
|
document.getElementById(elemID).addEventListener('click', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
document.querySelector('form[data-id=add_filter] #script_desc').value = item.description;
|
||||||
|
document.querySelector('form[data-id=add_filter] #script_data').value = item.codeValue;
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
}, 0)
|
||||||
|
});
|
||||||
|
}
|
|
@ -9,16 +9,6 @@ jQuery(function($){
|
||||||
function humanFileSize(i){if(Math.abs(i)<1024)return i+" B";var B=["KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"],e=-1;do{i/=1024,++e}while(Math.abs(i)>=1024&&e<B.length-1);return i.toFixed(1)+" "+B[e]}
|
function humanFileSize(i){if(Math.abs(i)<1024)return i+" B";var B=["KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"],e=-1;do{i/=1024,++e}while(Math.abs(i)>=1024&&e<B.length-1);return i.toFixed(1)+" "+B[e]}
|
||||||
function hashCode(t){for(var n=0,r=0;r<t.length;r++)n=t.charCodeAt(r)+((n<<5)-n);return n}
|
function hashCode(t){for(var n=0,r=0;r<t.length;r++)n=t.charCodeAt(r)+((n<<5)-n);return n}
|
||||||
function intToRGB(t){var n=(16777215&t).toString(16).toUpperCase();return"00000".substring(0,6-n.length)+n}
|
function intToRGB(t){var n=(16777215&t).toString(16).toUpperCase();return"00000".substring(0,6-n.length)+n}
|
||||||
$("#rspamd_preset_1").on('click', function(e) {
|
|
||||||
e.preventDefault();
|
|
||||||
$("form[data-id=rsetting]").find("#adminRspamdSettingsDesc").val(lang.rsettings_preset_1);
|
|
||||||
$("form[data-id=rsetting]").find("#adminRspamdSettingsContent").val('priority = 10;\nauthenticated = yes;\napply "default" {\n symbols_enabled = ["DKIM_SIGNED", "RATELIMITED", "RATELIMIT_UPDATE", "RATELIMIT_CHECK", "DYN_RL_CHECK", "HISTORY_SAVE", "MILTER_HEADERS", "ARC_SIGNED"];\n}');
|
|
||||||
});
|
|
||||||
$("#rspamd_preset_2").on('click', function(e) {
|
|
||||||
e.preventDefault();
|
|
||||||
$("form[data-id=rsetting]").find("#adminRspamdSettingsDesc").val(lang.rsettings_preset_2);
|
|
||||||
$("form[data-id=rsetting]").find("#adminRspamdSettingsContent").val('priority = 10;\nrcpt = "/postmaster@.*/";\nwant_spam = yes;');
|
|
||||||
});
|
|
||||||
$("#dkim_missing_keys").on('click', function(e) {
|
$("#dkim_missing_keys").on('click', function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
var domains = [];
|
var domains = [];
|
||||||
|
|
|
@ -310,7 +310,7 @@
|
||||||
"admin": {
|
"admin": {
|
||||||
"spamfilter": "Spamfilter",
|
"spamfilter": "Spamfilter",
|
||||||
"domain_s": "Domain(s)",
|
"domain_s": "Domain(s)",
|
||||||
"rspamd-com_settings": "<a href=\"https://rspamd.com/doc/configuration/settings.html#settings-structure\" target=\"_blank\">Rspamd docs</a>\r\n - Ein Name wird automatisch generiert. Beispielinhalte zur Einsicht stehen nachstehend bereit.",
|
"rspamd-com_settings": "Ein Name wird automatisch generiert. Beispielinhalte zur Einsicht stehen nachstehend bereit. Siehe auch <a href=\"https://rspamd.com/doc/configuration/settings.html#settings-structure\" target=\"_blank\">Rspamd docs</a>",
|
||||||
"no_new_rows": "Keine weiteren Zeilen vorhanden",
|
"no_new_rows": "Keine weiteren Zeilen vorhanden",
|
||||||
"additional_rows": " zusätzliche Zeilen geladen",
|
"additional_rows": " zusätzliche Zeilen geladen",
|
||||||
"private_key": "Private Key",
|
"private_key": "Private Key",
|
||||||
|
@ -647,7 +647,11 @@
|
||||||
"alias_domain_backupmx": "Alias-Domain für Relay-Domain inaktiv",
|
"alias_domain_backupmx": "Alias-Domain für Relay-Domain inaktiv",
|
||||||
"add_domain_record_first": "Bitte zuerst eine Domain hinzufügen",
|
"add_domain_record_first": "Bitte zuerst eine Domain hinzufügen",
|
||||||
"no": "✕",
|
"no": "✕",
|
||||||
"yes": "✓"
|
"yes": "✓",
|
||||||
|
"insert_preset": "Beispiel \"%s\" laden",
|
||||||
|
"sieve_preset_header": "Beispielinhalte zur Einsicht stehen nachstehend bereit. Siehe auch <a href=\"https://de.wikipedia.org/wiki/Sieve\" target=\"_blank\">Wikipedia</a>.",
|
||||||
|
"sieve_preset_1": "E-Mails mit potenziell gefährlichen Dateitypen abweisen",
|
||||||
|
"sieve_preset_2": "E-Mail eines bestimmten Absenders immer als gelesen markieren"
|
||||||
},
|
},
|
||||||
"edit": {
|
"edit": {
|
||||||
"sogo_visible": "Alias in SOGo sichtbar",
|
"sogo_visible": "Alias in SOGo sichtbar",
|
||||||
|
|
|
@ -311,7 +311,7 @@
|
||||||
"spamfilter": "Spam filter",
|
"spamfilter": "Spam filter",
|
||||||
"domain": "Domain",
|
"domain": "Domain",
|
||||||
"domain_s": "Domain/s",
|
"domain_s": "Domain/s",
|
||||||
"rspamd-com_settings": "<a href=\"https://rspamd.com/doc/configuration/settings.html#settings-structure\" target=\"_blank\">Rspamd docs</a>\r\n - A setting name will be auto-generated, please see the example presets below.",
|
"rspamd-com_settings": "A setting name will be auto-generated, please see the example presets below. For more details see <a href=\"https://rspamd.com/doc/configuration/settings.html#settings-structure\" target=\"_blank\">Rspamd docs</a>",
|
||||||
"no_new_rows": "No further rows available",
|
"no_new_rows": "No further rows available",
|
||||||
"queue_manager": "Queue manager",
|
"queue_manager": "Queue manager",
|
||||||
"additional_rows": " additional rows were added",
|
"additional_rows": " additional rows were added",
|
||||||
|
@ -646,7 +646,11 @@
|
||||||
"recipient_map_new": "New recipient",
|
"recipient_map_new": "New recipient",
|
||||||
"add_recipient_map_entry": "Add recipient map",
|
"add_recipient_map_entry": "Add recipient map",
|
||||||
"mailbox_defquota": "Default mailbox size",
|
"mailbox_defquota": "Default mailbox size",
|
||||||
"alias_domain_backupmx": "Alias domain inactive for relay domain"
|
"alias_domain_backupmx": "Alias domain inactive for relay domain",
|
||||||
|
"insert_preset": "Insert example preset \"%s\"",
|
||||||
|
"sieve_preset_header": "Please see the example presets below. For more details see <a href=\"https://en.wikipedia.org/wiki/Sieve_(mail_filtering_language)\" target=\"_blank\">Wikipedia</a>.",
|
||||||
|
"sieve_preset_1": "Discard mail with probable dangerous file types",
|
||||||
|
"sieve_preset_2": "Always mark the e-mail of a specific sender as seen"
|
||||||
},
|
},
|
||||||
"edit": {
|
"edit": {
|
||||||
"sogo_visible": "Alias is visible in SOGo",
|
"sogo_visible": "Alias is visible in SOGo",
|
||||||
|
|
|
@ -360,6 +360,7 @@ echo "var ALLOW_ADMIN_EMAIL_LOGIN = " . $ALLOW_ADMIN_EMAIL_LOGIN . ";\n";
|
||||||
</script>
|
</script>
|
||||||
<?php
|
<?php
|
||||||
$js_minifier->add('/web/js/site/mailbox.js');
|
$js_minifier->add('/web/js/site/mailbox.js');
|
||||||
|
$js_minifier->add('/web/js/presets/sieveMailbox.js');
|
||||||
$js_minifier->add('/web/js/site/pwgen.js');
|
$js_minifier->add('/web/js/site/pwgen.js');
|
||||||
require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/footer.inc.php';
|
require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/footer.inc.php';
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,8 +41,7 @@ if (!isset($_SESSION['mailcow_cc_role'])) {
|
||||||
</form>
|
</form>
|
||||||
<hr>
|
<hr>
|
||||||
<p><?=$lang['admin']['rspamd-com_settings'];?></p>
|
<p><?=$lang['admin']['rspamd-com_settings'];?></p>
|
||||||
<a href="#" class="small" id="rspamd_preset_1"><?=sprintf($lang['admin']['rsettings_insert_preset'], $lang['admin']['rsettings_preset_1']);?></a><br />
|
<ul id="rspamd_presets"></ul>
|
||||||
<a href="#" class="small" id="rspamd_preset_2"><?=sprintf($lang['admin']['rsettings_insert_preset'], $lang['admin']['rsettings_preset_2']);?></a>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -586,7 +586,7 @@ if (!isset($_SESSION['mailcow_cc_role'])) {
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="control-label col-sm-2" for="script_desc"><?=$lang['add']['sieve_desc'];?></label>
|
<label class="control-label col-sm-2" for="script_desc"><?=$lang['add']['sieve_desc'];?></label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
<input type="text" class="form-control" name="script_desc" required maxlength="255">
|
<input type="text" class="form-control" id="script_desc" name="script_desc" required maxlength="255">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
@ -610,6 +610,8 @@ if (!isset($_SESSION['mailcow_cc_role'])) {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
<?=$lang['mailbox']['sieve_preset_header']?>
|
||||||
|
<ul id="sieve_presets"></ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue