]> source.dussan.org Git - rspamd.git/commitdiff
[WebUI] Allow different history parsers
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 15 Mar 2017 12:45:29 +0000 (12:45 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 15 Mar 2017 12:45:29 +0000 (12:45 +0000)
interface/js/app/history.js

index 957b7f70b9a69a9ad9b2009573904faf0a41b9c6..b592ce0fc72c67ef6454324d25723d44a5ef0df7 100644 (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');