commit a170fd6: [WebUI] Use /stat path to get stat

moisseev moiseev at mezonplus.ru
Fri Aug 7 17:14:06 UTC 2020


Author: moisseev
Date: 2020-08-07 19:08:31 +0300
URL: https://github.com/rspamd/rspamd/commit/a170fd6b4c87d41c5e096093e8ee10a762c58290

[WebUI] Use /stat path to get stat
instead of /auth path

---
 interface/js/app/stats.js | 92 ++++++++++++++++++++++++-----------------------
 1 file changed, 47 insertions(+), 45 deletions(-)

diff --git a/interface/js/app/stats.js b/interface/js/app/stats.js
index 4c7f5067b..26ac26b44 100644
--- a/interface/js/app/stats.js
+++ b/interface/js/app/stats.js
@@ -68,7 +68,16 @@ define(["jquery", "d3pie"],
             var stat_w = [];
 
             $.each(data, function (i, item) {
-                var widget = "";
+                var widgetsOrder = ["scanned", "no action", "greylist", "add header", "reject", "learned"];
+
+                function widget(k, v) {
+                    var titleAtt = d3.format(",")(v) + " " + k;
+                    return '<div class="card stat-box d-inline-block text-center bg-light shadow-sm mr-3 px-3">' +
+                      '<div class="widget overflow-hidden p-2" title="' + titleAtt +
+                      '"><strong class="d-block mt-2 mb-1 font-weight-bold">' +
+                    d3.format(".3~s")(v) + "</strong>" + k + "</div></div>";
+                }
+
                 if (i === "auth" || i === "error") return; // Skip to the next iteration
                 if (i === "uptime" || i === "version") {
                     var cls = "border-right ";
@@ -77,27 +86,15 @@ define(["jquery", "d3pie"],
                         cls = "";
                         val = msToTime(item);
                     }
-                    widget = "<div class=\"" + cls + "float-left px-3\"><strong class=\"d-block mt-2 mb-1 font-weight-bold\">" + val +
-                      "</strong>" + i + "</div>";
-                    $(widget).appendTo(widgets);
+                    $('<div class="' + cls + 'float-left px-3"><strong class="d-block mt-2 mb-1 font-weight-bold">' +
+                      val + "</strong>" + i + "</div>")
+                        .appendTo(widgets);
+                } else if (i === "actions") {
+                    $.each(item, function (action, count) {
+                        stat_w[widgetsOrder.indexOf(action)] = widget(action, count);
+                    });
                 } else {
-                    var titleAtt = d3.format(",")(item) + " " + i;
-                    widget = "<div class=\"card stat-box d-inline-block text-center bg-light shadow-sm mr-3 px-3\"><div class=\"widget overflow-hidden p-2\" title=\"" +
-                      titleAtt + "\"><strong class=\"d-block mt-2 mb-1 font-weight-bold\">" +
-                    d3.format(".3~s")(item) + "</strong>" + i + "</div></div>";
-                    if (i === "scanned") {
-                        stat_w[0] = widget;
-                    } else if (i === "clean") {
-                        stat_w[1] = widget;
-                    } else if (i === "greylist") {
-                        stat_w[2] = widget;
-                    } else if (i === "probable") {
-                        stat_w[3] = widget;
-                    } else if (i === "reject") {
-                        stat_w[4] = widget;
-                    } else if (i === "learned") {
-                        stat_w[5] = widget;
-                    }
+                    stat_w[widgetsOrder.indexOf(i)] = widget(i, item);
                 }
             });
             $.each(stat_w, function (i, item) {
@@ -146,22 +143,22 @@ define(["jquery", "d3pie"],
             var creds = JSON.parse(sessionStorage.getItem("Credentials"));
             if (!creds || !creds[checked_server]) return null;
 
-            var data = creds[checked_server].data;
+            var data = creds[checked_server].data.actions;
             var new_data = [{
                 color: "#66CC00",
                 label: "Clean",
-                data: data.clean,
-                value: data.clean
+                data: data["no action"],
+                value: data["no action"]
             }, {
                 color: "#BF8040",
                 label: "Temporarily rejected",
-                data: data.soft_reject,
-                value: data.soft_reject
+                data: data["soft reject"],
+                value: data["soft reject"]
             }, {
                 color: "#FFAD00",
                 label: "Probable spam",
-                data: data.probable,
-                value: data.probable
+                data: data["add header"],
+                value: data["add header"]
             }, {
                 color: "#436EEE",
                 label: "Greylisted",
@@ -179,34 +176,39 @@ define(["jquery", "d3pie"],
         // Public API
         var ui = {
             statWidgets: function (rspamd, graphs, checked_server) {
-                rspamd.query("auth", {
+                rspamd.query("stat", {
                     success: function (neighbours_status) {
                         var neighbours_sum = {
                             version: neighbours_status[0].data.version,
-                            auth: "ok",
                             uptime: 0,
-                            clean: 0,
-                            probable: 0,
-                            greylist: 0,
-                            reject: 0,
-                            soft_reject: 0,
                             scanned: 0,
                             learned: 0,
-                            config_id: ""
+                            actions: {
+                                "no action": 0,
+                                "add header": 0,
+                                "greylist": 0,
+                                "reject": 0,
+                                "soft reject": 0,
+                            }
                         };
                         var status_count = 0;
                         for (var e in neighbours_status) {
                             if (neighbours_status[e].status === true) {
-                            // Remove alert status
+                                // Remove alert status
                                 localStorage.removeItem(e + "_alerted");
-                                neighbours_sum.clean += neighbours_status[e].data.clean;
-                                neighbours_sum.probable += neighbours_status[e].data.probable;
-                                neighbours_sum.greylist += neighbours_status[e].data.greylist;
-                                neighbours_sum.reject += neighbours_status[e].data.reject;
-                                neighbours_sum.soft_reject += neighbours_status[e].data.soft_reject;
-                                neighbours_sum.scanned += neighbours_status[e].data.scanned;
-                                neighbours_sum.learned += neighbours_status[e].data.learned;
-                                neighbours_sum.uptime += neighbours_status[e].data.uptime;
+
+                                var data = neighbours_status[e].data;
+                                for (var action in neighbours_sum.actions) {
+                                    if ({}.hasOwnProperty.call(neighbours_sum.actions, action)) {
+                                        neighbours_sum.actions[action] += data.actions[action];
+                                    }
+                                }
+                                var items = ["learned", "scanned", "uptime"];
+                                for (var i in items) {
+                                    if ({}.hasOwnProperty.call(items, i)) {
+                                        neighbours_sum[items[i]] += data[items[i]];
+                                    }
+                                }
                                 status_count++;
                             }
                         }


More information about the Commits mailing list