From a70a29a33ac156398101e0a431ecc912093899a3 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Wed, 15 Mar 2017 12:45:29 +0000 Subject: [PATCH] [WebUI] Allow different history parsers --- interface/js/app/history.js | 102 +++++++++++++++++++++++++----------- 1 file changed, 71 insertions(+), 31 deletions(-) diff --git a/interface/js/app/history.js b/interface/js/app/history.js index 957b7f70b..b592ce0fc 100644 --- a/interface/js/app/history.js +++ b/interface/js/app/history.js @@ -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( + '' + item.time + '' + + '
' + item.id + '
' + + '
' + item.ip + '
' + + '' + item.action + '' + + '' + item.score.toFixed(2) + ' / ' + item.required_score.toFixed(2) + '' + + '
' + item.symbols + '
' + + '' + item.size + '' + + '' + item.scan_time.toFixed(3) + '' + + '
' + item.user + '
'); + }); + + 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( - '' + item.time + '' + - '
' + item.id + '
' + - '
' + item.ip + '
' + - '' + item.action + '' + - '' + item.score.toFixed(2) + ' / ' + item.required_score.toFixed(2) + '' + - '
' + item.symbols + '
' + - '' + item.size + '' + - '' + item.scan_time.toFixed(3) + '' + - '
' + item.user + '
'); - }); $('', { html: items.join('') }).insertAfter('#historyLog thead'); -- 2.39.5