浏览代码

[Web] Fix Rspamd plot

André 7 年之前
父节点
当前提交
82209196f5
共有 2 个文件被更改,包括 56 次插入38 次删除
  1. 36 38
      data/web/js/debug.js
  2. 20 0
      data/web/json_api.php

+ 36 - 38
data/web/js/debug.js

@@ -343,43 +343,41 @@ jQuery(function($){
             var ft_paging = ft.use(FooTable.Paging)
             var ft_paging = ft.use(FooTable.Paging)
             return ft_paging.totalRows;
             return ft_paging.totalRows;
           })
           })
-        }
-      }
-    });
-  }
-  function plot_rspamd() {
-    $.ajax({
-      url: '/api/v1/get/rspamd/actions',
-      success: function(data){
-        var total = 0;
-        $(data).map(function(){total += this[1];})
-        rspamd_labels = $.makeArray($(data).map(function(){return "<h5>" + this[0] + " (" + this[1] + ") " + Math.round(this[1]/total * 100) + "%</h5>";}));
-        rspamd_donut = $.jqplot('rspamd_donut', [data],
-          {
-            seriesDefaults: {
-              renderer: jQuery.jqplot.DonutRenderer,
-              rendererOptions: {
-                showDataLabels: true,
-                dataLabels: rspamd_labels,
-                dataLabelThreshold: 1,
-                sliceMargin: 5,
-                totalLabel: true
-              },
-              shadow: false,
-              seriesColors: ['#FF4136', '#75CAEB', '#FF851B', '#FF851B', '#28B62C']
-            },
-            legend: {
-              show:false,
-            },
-            grid: {
-              drawGridLines: true,
-              gridLineColor: '#efefef',
-              background: '#ffffff',
-              borderWidth: 0,
-              shadow: false,
+          $.ajax({
+            url: '/api/v1/get/rspamd/actions',
+            success: function(data){
+              var total = 0;
+              $(data).map(function(){total += this[1];})
+              rspamd_labels = $.makeArray($(data).map(function(){return "<h5>" + this[0] + " (" + this[1] + ") " + Math.round(this[1]/total * 100) + "%</h5>";}));
+              rspamd_donut_plot = $.jqplot('rspamd_donut', [data],
+                {
+                  seriesDefaults: {
+                    renderer: jQuery.jqplot.DonutRenderer,
+                    rendererOptions: {
+                      showDataLabels: true,
+                      dataLabels: rspamd_labels,
+                      dataLabelThreshold: 1,
+                      sliceMargin: 5,
+                      totalLabel: true
+                    },
+                    shadow: false,
+                    seriesColors: ['#FF4136', '#75CAEB', '#FF851B', '#FF851B', '#28B62C']
+                  },
+                  legend: {
+                    show:false,
+                  },
+                  grid: {
+                    drawGridLines: true,
+                    gridLineColor: '#efefef',
+                    background: '#ffffff',
+                    borderWidth: 0,
+                    shadow: false,
+                  }
+                }
+              );
             }
             }
-          }
-        );
+          });
+        }
       }
       }
     });
     });
   }
   }
@@ -538,8 +536,8 @@ jQuery(function($){
       var timer;
       var timer;
       clearTimeout(timer);
       clearTimeout(timer);
       timer = setTimeout(function () {
       timer = setTimeout(function () {
-        if (typeof rspamd_donut !== 'undefined') {
-          rspamd_donut.replot({});
+        if (typeof rspamd_donut_plot !== 'undefined') {
+          rspamd_donut_plot.replot({});
         }
         }
       }, 500);
       }, 500);
   });
   });

+ 20 - 0
data/web/json_api.php

@@ -158,6 +158,26 @@ if (isset($_SESSION['mailcow_cc_role']) || isset($_SESSION['pending_mailcow_cc_u
         switch ($category) {
         switch ($category) {
           case "rspamd":
           case "rspamd":
             switch ($object) {
             switch ($object) {
+              case "actions":
+                $curl = curl_init();
+                curl_setopt($curl, CURLOPT_UNIX_SOCKET_PATH, '/rspamd-sock/rspamd.sock');
+                curl_setopt($curl, CURLOPT_URL,"http://rspamd/stat");
+                curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
+                $data = curl_exec($curl);
+                if ($data) {
+                  $return = array();
+                  $stats_array = json_decode($data, true)['actions'];
+                  $stats_array['soft reject'] = $stats_array['soft reject'] + $stats_array['greylist'];
+                  unset($stats_array['greylist']);
+                  foreach ($stats_array as $action => $count) {
+                    $return[] = array($action, $count);
+                  }
+                  echo json_encode($return, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
+                }
+                elseif (!isset($data) || empty($data)) {
+                  echo '{}';
+                }
+              break;
               case "stat":
               case "stat":
                 $data = file_get_contents('http://rspamd-mailcow:11334/stat');
                 $data = file_get_contents('http://rspamd-mailcow:11334/stat');
                 process_get_return($data);
                 process_get_return($data);