Explorar o código

Modify Network Detection report style

兔姬桑 %!s(int64=4) %!d(string=hai) anos
pai
achega
3dfcb9437c

+ 25 - 30
app/Components/NetworkDetection.php

@@ -7,11 +7,6 @@ use Log;
 
 class NetworkDetection
 {
-    public const success = '✔️ 通讯正常';
-    public const oversea_blocked = '🛑 海外阻断';
-    public const china_blocked = '🛑 国内阻断';
-    public const disconnected = '❌ 断连';
-
     /**
      * 用外部API进行Ping检测.
      *
@@ -72,7 +67,7 @@ class NetworkDetection
      * @param  bool  $is_icmp  TRUE 为ICMP,FALSE 为tcp
      * @param  int|null  $port  检测端口,默认为空
      *
-     * @return bool|string
+     * @return bool
      */
     public function networkCheck(string $ip, bool $is_icmp, int $port = null)
     {
@@ -145,18 +140,18 @@ class NetworkDetection
             }
 
             if ($message['firewall-enable'] && $message['firewall-disable']) {
-                return self::success; // 正常
+                return 1; // 正常
             }
 
             if ($message['firewall-enable'] && ! $message['firewall-disable']) {
-                return self::oversea_blocked; // 国外访问异常
+                return 2; // 国外访问异常
             }
 
             if (! $message['firewall-enable'] && $message['firewall-disable']) {
-                return self::china_blocked; // 被墙
+                return 3; // 被墙
             }
 
-            return self::disconnected; // 服务器宕机
+            return 4; // 服务器宕机
         }
 
         return false;
@@ -182,18 +177,18 @@ class NetworkDetection
             }
 
             if ($cn[$checkName] === 'success' && $us['outside_'.$checkName] === 'success') {
-                return self::success; // 正常
+                return 1; // 正常
             }
 
             if ($cn[$checkName] === 'success' && $us['outside_'.$checkName] !== 'success') {
-                return self::oversea_blocked; // 国外访问异常
+                return 2; // 国外访问异常
             }
 
             if ($cn[$checkName] !== 'success' && $us['outside_'.$checkName] === 'success') {
-                return self::china_blocked; // 被墙
+                return 3; // 被墙
             }
 
-            return self::disconnected; // 服务器宕机
+            return 4; // 服务器宕机
         }
 
         return false;
@@ -221,18 +216,18 @@ class NetworkDetection
             }
 
             if ($message['data']['data']['inner'.$checkName] && $message['data']['data']['out'.$checkName]) {
-                return self::success; // 正常
+                return 1; // 正常
             }
 
             if ($message['data']['data']['inner'.$checkName] && ! $message['data']['data']['out'.$checkName]) {
-                return self::oversea_blocked; // 国外访问异常
+                return 2; // 国外访问异常
             }
 
             if (! $message['data']['data']['inner'.$checkName] && $message['data']['data']['out'.$checkName]) {
-                return self::china_blocked; // 被墙
+                return 3; // 被墙
             }
 
-            return self::disconnected; // 服务器宕机
+            return 4; // 服务器宕机
         }
 
         return false;
@@ -263,18 +258,18 @@ class NetworkDetection
             }
 
             if ($cn['data'][$checkName] && $us['data'][$checkName]) {
-                return self::success; // 正常
+                return 1; // 正常
             }
 
             if ($cn['data'][$checkName] && ! $us['data'][$checkName]) {
-                return self::oversea_blocked; // 国外访问异常
+                return 2; // 国外访问异常
             }
 
             if (! $cn['data'][$checkName] && $us['data'][$checkName]) {
-                return self::china_blocked; // 被墙
+                return 3; // 被墙
             }
 
-            return self::disconnected; // 服务器宕机
+            return 4; // 服务器宕机
         }
 
         return false;
@@ -297,18 +292,18 @@ class NetworkDetection
             }
 
             if ($message[0]['result'][$checkName] && $message[1]['result'][$checkName]) {
-                return self::success; // 正常
+                return 1; // 正常
             }
 
             if ($message[0]['result'][$checkName] && ! $message[1]['result'][$checkName]) {
-                return self::oversea_blocked; // 国外访问异常
+                return 2; // 国外访问异常
             }
 
             if (! $message[0]['result'][$checkName] && $message[1]['result'][$checkName]) {
-                return self::china_blocked; // 被墙
+                return 3; // 被墙
             }
 
-            return self::disconnected; // 服务器宕机
+            return 4; // 服务器宕机
         }
 
         return false;
@@ -333,18 +328,18 @@ class NetworkDetection
             }
 
             if (str_contains($cn[$checkName], 'green') && str_contains($us[$checkName], 'green')) {
-                return self::success; // 正常
+                return 1; // 正常
             }
 
             if (str_contains($cn[$checkName], 'green') && ! str_contains($us[$checkName], 'green')) {
-                return self::oversea_blocked; // 国外访问异常
+                return 2; // 国外访问异常
             }
 
             if (! str_contains($cn[$checkName], 'green') && str_contains($us[$checkName], 'green')) {
-                return self::china_blocked; // 被墙
+                return 3; // 被墙
             }
 
-            return self::disconnected; // 服务器宕机
+            return 4; // 服务器宕机
         }
 
         return false;

+ 5 - 5
app/Console/Commands/NodeStatusDetection.php

@@ -75,19 +75,19 @@ class NodeStatusDetection extends Command
         $detectionCheckTimes = sysConfig('detection_check_times');
 
         foreach (Node::whereIsRelay(0)->whereStatus(1)->where('detection_type', '<>', 0)->get() as $node) {
-            $node_id = (int) $node->id;
+            $node_id = $node->id;
             // 使用DDNS的node先通过gethostbyname获取ipv4地址
             foreach ($node->ips() as $ip) {
                 if ($node->detection_type !== 1) {
                     $icmpCheck = (new NetworkDetection)->networkCheck($ip, true, $node->single ? $node->port : 22);
-                    if ($icmpCheck !== false && $icmpCheck !== '通讯正常') {
-                        $data[$node_id][$ip]['icmp'] = $icmpCheck;
+                    if ($icmpCheck !== false && $icmpCheck !== 1) {
+                        $data[$node_id][$ip]['icmp'] = config('common.network_status')[$icmpCheck];
                     }
                 }
                 if ($node->detection_type !== 2) {
                     $tcpCheck = (new NetworkDetection)->networkCheck($ip, false, $node->single ? $node->port : 22);
-                    if ($tcpCheck !== false && $tcpCheck !== '通讯正常') {
-                        $data[$node_id][$ip]['tcp'] = $tcpCheck;
+                    if ($tcpCheck !== false && $tcpCheck !== 1) {
+                        $data[$node_id][$ip]['tcp'] = config('common.network_status')[$tcpCheck];
                     }
                 }
             }

+ 12 - 2
app/Http/Controllers/Admin/NodeController.php

@@ -135,8 +135,18 @@ class NodeController extends Controller
     public function checkNode(Node $node): JsonResponse
     {
         foreach ($node->ips() as $ip) {
-            $data[$ip][0] = (new NetworkDetection)->networkCheck($ip, true, $node->single ? $node->port : 22); // ICMP
-            $data[$ip][1] = (new NetworkDetection)->networkCheck($ip, false, $node->single ? $node->port : 22); // TCP
+            $icmp = (new NetworkDetection)->networkCheck($ip, true, $node->single ? $node->port : 22); // ICMP
+            $tcp = (new NetworkDetection)->networkCheck($ip, false, $node->single ? $node->port : 22); // TCP
+            if ($icmp) {
+                $data[$ip][0] = config('common.network_status')[$icmp];
+            } else {
+                $data[$ip][0] = ' ';
+            }
+            if ($tcp) {
+                $data[$ip][1] = config('common.network_status')[$tcp];
+            } else {
+                $data[$ip][1] = ' ';
+            }
         }
 
         return Response::json(['status' => 'success', 'title' => '['.$node->name.']阻断信息', 'message' => $data ?? []]);

+ 7 - 1
config/common.php

@@ -26,7 +26,7 @@ return [
         ],
     ],
 
-    'oauth' => [
+    'oauth'          => [
         'labels' => [
             'facebook'  => 'Facebook',
             'twitter'   => 'Twitter',
@@ -48,4 +48,10 @@ return [
             'telegram'  => 'fa-telegram',
         ],
     ],
+    'network_status' => [
+        1 => '✔️ 通讯正常',
+        2 => '🛑 海外阻断',
+        3 => '🛑 国内阻断',
+        4 => '❌ 断连',
+    ],
 ];