Bläddra i källkod

Added SOGo logs

andryyy 8 år sedan
förälder
incheckning
2291b4e121
5 ändrade filer med 92 tillägg och 4 borttagningar
  1. 15 0
      data/web/admin.php
  2. 8 0
      data/web/inc/functions.inc.php
  3. 52 1
      data/web/js/admin.js
  4. 15 1
      data/web/json_api.php
  5. 2 2
      data/web/lang/lang.de.php

+ 15 - 0
data/web/admin.php

@@ -328,6 +328,21 @@ $tfa_data = get_tfa();
         </div>
       </div>
     </div>
+    <div class="panel panel-default">
+      <div class="panel-heading">SOGo
+        <div class="btn-group pull-right">
+          <a class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" href="#"><?=$lang['admin']['action'];?> <span class="caret"></span></a>
+          <ul class="dropdown-menu">
+            <li><a href="#" id="refresh_sogo_log"><?=$lang['admin']['refresh'];?></a></li>
+          </ul>
+        </div>
+      </div>
+      <div class="panel-body">
+        <div class="table-responsive">
+          <table class="table table-striped" id="sogo_log"></table>
+        </div>
+      </div>
+    </div>
   </div>
 
   </div>

+ 8 - 0
data/web/inc/functions.inc.php

@@ -5228,6 +5228,14 @@ function get_logs($container, $lines = 100) {
       return $data_array;
     }
   }
+  if ($container == "sogo-mailcow") {
+    if ($data = $redis->lRange('SOGO_LOG', 1, $lines)) {
+      foreach ($data as $json_line) {
+        $data_array[] = json_decode($json_line, true);
+      }
+      return $data_array;
+    }
+  }
   return false;
 }
 ?>

+ 52 - 1
data/web/js/admin.js

@@ -79,6 +79,10 @@ jQuery(function($){
     e.preventDefault();
     draw_dovecot_logs();
   });
+  $("#refresh_sogo_log").on('click', function(e) {
+    e.preventDefault();
+    draw_sogo_logs();
+  });
   function draw_postfix_logs() {
     ft_postfix_logs = FooTable.init('#postfix_log', {
       "columns": [
@@ -126,6 +130,53 @@ jQuery(function($){
       }
     });
   }
+  function draw_sogo_logs() {
+    ft_sogo_logs = FooTable.init('#sogo_log', {
+      "columns": [
+        {"name":"time","formatter":function unix_time_format(tm) { var date = new Date(tm ? tm * 1000 : 0); return date.toLocaleString();},"title":lang.time,"style":{"width":"170px"}},
+        {"name":"priority","title":lang.priority,"style":{"width":"80px"}},
+        {"name":"message","title":lang.message},
+      ],
+      "rows": $.ajax({
+        dataType: 'json',
+        url: '/api/v1/get/logs/sogo/1000',
+        jsonp: false,
+        error: function () {
+          console.log('Cannot draw sogo log table');
+        },
+        success: function (data) {
+          $.each(data, function (i, item) {
+            var danger_class = ["emerg", "alert", "crit"];
+            var warning_class = ["warning"];
+            var info_class = ["notice", "info", "debug"];
+            if (jQuery.inArray(item.priority, danger_class) !== -1) {
+              item.priority = '<span class="label label-danger">' + item.priority + '</span>';
+            } 
+            else if (jQuery.inArray(item.priority, warning_class) !== -1) {
+              item.priority = '<span class="label label-warning">' + item.priority + '</span>';
+            }
+            else if (jQuery.inArray(item.priority, info_class) !== -1) {
+              item.priority = '<span class="label label-info">' + item.priority + '</span>';
+            }
+          });
+        }
+      }),
+      "empty": lang.empty,
+      "paging": {
+        "enabled": true,
+        "limit": 5,
+        "size": pagination_size
+      },
+      "filtering": {
+        "enabled": true,
+        "position": "left",
+        "placeholder": lang.filter_table
+      },
+      "sorting": {
+        "enabled": true
+      }
+    });
+  }
   function draw_dovecot_logs() {
     ft_postfix_logs = FooTable.init('#dovecot_log', {
       "columns": [
@@ -214,7 +265,6 @@ jQuery(function($){
       }
     });
   }
-
   function draw_fwd_hosts() {
     ft_domainadmins = FooTable.init('#forwardinghoststable', {
       "columns": [
@@ -260,6 +310,7 @@ jQuery(function($){
 
   draw_postfix_logs();
   draw_dovecot_logs();
+  draw_sogo_logs();
   draw_domain_admins();
   draw_fwd_hosts();
 });

+ 15 - 1
data/web/json_api.php

@@ -80,7 +80,6 @@ if (isset($_SESSION['mailcow_cc_role']) || isset($_SESSION['pending_mailcow_cc_u
                   echo '{}';
                 }
               break;
-
               case "postfix":
                 if (isset($extra) && !empty($extra)) {
                   $extra = intval($extra);
@@ -96,6 +95,21 @@ if (isset($_SESSION['mailcow_cc_role']) || isset($_SESSION['pending_mailcow_cc_u
                   echo '{}';
                 }
               break;
+              case "sogo":
+                if (isset($extra) && !empty($extra)) {
+                  $extra = intval($extra);
+                  $logs = get_logs('sogo-mailcow', $extra);
+                }
+                else {
+                  $logs = get_logs('sogo-mailcow', -1);
+                }
+                if (isset($logs) && !empty($logs)) {
+                  echo json_encode($logs, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
+                }
+                else {
+                  echo '{}';
+                }
+              break;
             }
           break;
           case "mailbox":

+ 2 - 2
data/web/lang/lang.de.php

@@ -33,8 +33,8 @@ $lang['danger']['alias_empty'] = 'Alias-Adresse darf nicht leer sein';
 $lang['danger']['goto_empty'] = 'Ziel-Adresse darf nicht leer sein';
 $lang['danger']['policy_list_from_exists'] = 'Ein Eintrag mit diesem Wert existiert bereits';
 $lang['danger']['policy_list_from_invalid'] = 'Eintrag hat ungültiges Format';
-$lang['danger']['alias_invalid'] = 'Alias-Adrese ist ungültig';
-$lang['danger']['goto_invalid'] = 'Ziel-Adrese ist ungültig';
+$lang['danger']['alias_invalid'] = 'Alias-Adresse ist ungültig';
+$lang['danger']['goto_invalid'] = 'Ziel-Adresse ist ungültig';
 $lang['danger']['last_key'] = 'Letzter Key kann nicht gelöscht werden';
 $lang['danger']['alias_domain_invalid'] = 'Alias-Domain ist ungültig';
 $lang['danger']['target_domain_invalid'] = 'Ziel-Domain ist ungültig';