Browse Source

[WebUI] Allow different history parsers

tags/1.5.3
Vsevolod Stakhov 7 years ago
parent
commit
a70a29a33a
1 changed files with 71 additions and 31 deletions
  1. 71
    31
      interface/js/app/history.js

+ 71
- 31
interface/js/app/history.js View File

@@ -26,6 +26,76 @@ define(['jquery', 'datatables'],
function($) {
var interface = {};

function unix_time_format(tm) {

}

function process_history_v2(data) {
var items = [];

$.each(data.rows, function (i, item) {

});

return items;
}

function process_history_legacy(data) {
var items = [];

$.each(data, function (i, item) {
var action;

if (item.action === 'clean' || item.action === 'no action') {
action = 'label-success';
} else if (item.action === 'rewrite subject' || item.action === 'add header' || item.action === 'probable spam') {
action = 'label-warning';
} else if (item.action === 'spam' || item.action === 'reject') {
action = 'label-danger';
} else {
action = 'label-info';
}

var score;
if (item.score < item.required_score) {
score = 'label-success';
} else {
score = 'label-danger';
}

items.push(
'<tr><td data-order="' + item.unix_time + '">' + item.time + '</td>' +
'<td data-order="' + item.id + '"><div class="cell-overflow" tabindex="1" title="' + item.id + '">' + item.id + '</div></td>' +
'<td data-order="' + item.ip + '"><div class="cell-overflow" tabindex="1" title="' + item.ip + '">' + item.ip + '</div></td>' +
'<td data-order="' + item.action + '"><span class="label ' + action + '">' + item.action + '</span></td>' +
'<td data-order="' + item.score + '"><span class="label ' + score + '">' + item.score.toFixed(2) + ' / ' + item.required_score.toFixed(2) + '</span></td>' +
'<td data-order="' + item.symbols + '"><div class="cell-overflow" tabindex="1" title="' + item.symbols + '">' + item.symbols + '</div></td>' +
'<td data-order="' + item.size + '">' + item.size + '</td>' +
'<td data-order="' + item.scan_time + '">' + item.scan_time.toFixed(3) + '</td>' +
'<td data-order="' + item.user + '"><div class="cell-overflow" tabindex="1" "title="' + item.user + '">' + item.user + '</div></td></tr>');
});

return items;
}

var process_functions = {
"2": process_history_v2,
"legacy": process_history_legacy
}

function process_history_data(data) {
var pf = process_functions.legacy;

if (data.version) {
var strkey = data.version.toString();
if (process_functions[strkey]) {
pf = process_functions[strkey];
}
}

return pf(data);
}

interface.getHistory = function (rspamd, tables) {
if (tables.history !== undefined) {
var history_length = document.getElementsByName('historyLog_length')[0];
@@ -39,7 +109,6 @@ function($) {
$('#historyLog').children('tbody').remove();
}

var items = [];
$.ajax({
dataType: 'json',
url: 'history',
@@ -51,37 +120,8 @@ function($) {
rspamd.alertMessage('alert-error', 'Cannot receive history');
},
success: function (data) {
$.each(data, function (i, item) {
var action;

if (item.action === 'clean' || item.action === 'no action') {
action = 'label-success';
} else if (item.action === 'rewrite subject' || item.action === 'add header' || item.action === 'probable spam') {
action = 'label-warning';
} else if (item.action === 'spam' || item.action === 'reject') {
action = 'label-danger';
} else {
action = 'label-info';
}

var score;
if (item.score < item.required_score) {
score = 'label-success';
} else {
score = 'label-danger';
}
var items = process_history_data(data);

items.push(
'<tr><td data-order="' + item.unix_time + '">' + item.time + '</td>' +
'<td data-order="' + item.id + '"><div class="cell-overflow" tabindex="1" title="' + item.id + '">' + item.id + '</div></td>' +
'<td data-order="' + item.ip + '"><div class="cell-overflow" tabindex="1" title="' + item.ip + '">' + item.ip + '</div></td>' +
'<td data-order="' + item.action + '"><span class="label ' + action + '">' + item.action + '</span></td>' +
'<td data-order="' + item.score + '"><span class="label ' + score + '">' + item.score.toFixed(2) + ' / ' + item.required_score.toFixed(2) + '</span></td>' +
'<td data-order="' + item.symbols + '"><div class="cell-overflow" tabindex="1" title="' + item.symbols + '">' + item.symbols + '</div></td>' +
'<td data-order="' + item.size + '">' + item.size + '</td>' +
'<td data-order="' + item.scan_time + '">' + item.scan_time.toFixed(3) + '</td>' +
'<td data-order="' + item.user + '"><div class="cell-overflow" tabindex="1" "title="' + item.user + '">' + item.user + '</div></td></tr>');
});
$('<tbody/>', {
html: items.join('')
}).insertAfter('#historyLog thead');

Loading…
Cancel
Save