Browse Source

feature: server push status

tokumeikoi 4 years ago
parent
commit
cbe5882e01

+ 1 - 0
app/Http/Controllers/Admin/Server/ManageController.php

@@ -20,6 +20,7 @@ class ManageController extends Controller
             $serverService->getV2rayServers(),
             $serverService->getTrojanServers()
         );
+        $serverService->mergeData($servers);
         $tmp = array_column($servers, 'sort');
         array_multisort($tmp, SORT_ASC, $servers);
         return response([

+ 1 - 0
app/Http/Controllers/Server/DeepbworkController.php

@@ -74,6 +74,7 @@ class DeepbworkController extends Controller
         $data = file_get_contents('php://input');
         $data = json_decode($data, true);
         Cache::put(CacheKey::get('SERVER_V2RAY_ONLINE_USER', $server->id), count($data), 3600);
+        Cache::put(CacheKey::get('SERVER_V2RAY_LAST_PUSH_AT', $server->id), time(), 3600);
         $userService = new UserService();
         DB::beginTransaction();
         try {

+ 1 - 0
app/Http/Controllers/Server/ShadowsocksTidalabController.php

@@ -40,6 +40,7 @@ class ShadowsocksTidalabController extends Controller
             abort(500, 'fail');
         }
         Cache::put(CacheKey::get('SERVER_SHADOWSOCKS_LAST_CHECK_AT', $server->id), time(), 3600);
+        Cache::put(CacheKey::get('SERVER_SHADOWSOCKS_LAST_PUSH_AT', $server->id), time(), 3600);
         $serverService = new ServerService();
         $users = $serverService->getAvailableUsers(json_decode($server->group_id));
         $result = [];

+ 1 - 0
app/Http/Controllers/Server/TrojanTidalabController.php

@@ -40,6 +40,7 @@ class TrojanTidalabController extends Controller
             abort(500, 'fail');
         }
         Cache::put(CacheKey::get('SERVER_TROJAN_LAST_CHECK_AT', $server->id), time(), 3600);
+        Cache::put(CacheKey::get('SERVER_TROJAN_LAST_PUSH_AT', $server->id), time(), 3600);
         $serverService = new ServerService();
         $users = $serverService->getAvailableUsers(json_decode($server->group_id));
         $result = [];

+ 21 - 20
app/Services/ServerService.php

@@ -298,13 +298,6 @@ class ServerService
                 $server[$i]['tags'] = json_decode($server[$i]['tags']);
             }
             $server[$i]['group_id'] = json_decode($server[$i]['group_id']);
-            $server[$i]['online'] = Cache::get(CacheKey::get('SERVER_SHADOWSOCKS_ONLINE_USER', $server[$i]['parent_id'] ? $server[$i]['parent_id'] : $server[$i]['id']));
-            if ($server[$i]['parent_id']) {
-                $server[$i]['last_check_at'] = Cache::get(CacheKey::get('SERVER_SHADOWSOCKS_LAST_CHECK_AT', $server[$i]['parent_id']));
-            } else {
-                $server[$i]['last_check_at'] = Cache::get(CacheKey::get('SERVER_SHADOWSOCKS_LAST_CHECK_AT', $server[$i]['id']));
-            }
-            $server[$i]['available'] = (time() - 300) < $server[$i]['last_check_at'];
         }
         return $server->toArray();
     }
@@ -327,13 +320,6 @@ class ServerService
                 $server[$i]['ruleSettings'] = json_decode($server[$i]['ruleSettings']);
             }
             $server[$i]['group_id'] = json_decode($server[$i]['group_id']);
-            $server[$i]['online'] = Cache::get(CacheKey::get('SERVER_V2RAY_ONLINE_USER', $server[$i]['parent_id'] ? $server[$i]['parent_id'] : $server[$i]['id']));
-            if ($server[$i]['parent_id']) {
-                $server[$i]['last_check_at'] = Cache::get(CacheKey::get('SERVER_V2RAY_LAST_CHECK_AT', $server[$i]['parent_id']));
-            } else {
-                $server[$i]['last_check_at'] = Cache::get(CacheKey::get('SERVER_V2RAY_LAST_CHECK_AT', $server[$i]['id']));
-            }
-            $server[$i]['available'] = (time() - 300) < $server[$i]['last_check_at'];
         }
         return $server->toArray();
     }
@@ -347,14 +333,29 @@ class ServerService
                 $server[$i]['tags'] = json_decode($server[$i]['tags']);
             }
             $server[$i]['group_id'] = json_decode($server[$i]['group_id']);
-            $server[$i]['online'] = Cache::get(CacheKey::get('SERVER_TROJAN_ONLINE_USER', $server[$i]['parent_id'] ? $server[$i]['parent_id'] : $server[$i]['id']));
-            if ($server[$i]['parent_id']) {
-                $server[$i]['last_check_at'] = Cache::get(CacheKey::get('SERVER_TROJAN_LAST_CHECK_AT', $server[$i]['parent_id']));
+        }
+        return $server->toArray();
+    }
+
+    public function mergeData(&$servers)
+    {
+        foreach ($servers as $k => $v) {
+            $serverType = strtoupper($servers[$k]['type']);
+            $servers[$k]['online'] = Cache::get(CacheKey::get("SERVER_{$serverType}_ONLINE_USER", $servers[$k]['parent_id'] ? $servers[$k]['parent_id'] : $servers[$k]['id']));
+            if ($servers[$k]['parent_id']) {
+                $servers[$k]['last_check_at'] = Cache::get(CacheKey::get("SERVER_{$serverType}_LAST_CHECK_AT", $servers[$k]['parent_id']));
+                $servers[$k]['last_push_at'] = Cache::get(CacheKey::get("SERVER_{$serverType}_LAST_PUSH_AT", $servers[$k]['parent_id']));
             } else {
-                $server[$i]['last_check_at'] = Cache::get(CacheKey::get('SERVER_TROJAN_LAST_CHECK_AT', $server[$i]['id']));
+                $servers[$k]['last_check_at'] = Cache::get(CacheKey::get("SERVER_{$serverType}_LAST_CHECK_AT", $servers[$k]['id']));
+                $servers[$k]['last_push_at'] = Cache::get(CacheKey::get("SERVER_{$serverType}_LAST_PUSH_AT", $servers[$k]['id']));
+            }
+            if ((time() - 300) >= $servers[$k]['last_check_at']) {
+                $servers[$k]['available_status'] = 0;
+            } else if ((time() - 300) >= $servers[$k]['last_push_at']) {
+                $servers[$k]['available_status'] = 1;
+            } else {
+                $servers[$k]['available_status'] = 2;
             }
-            $server[$i]['available'] = (time() - 300) < $server[$i]['last_check_at'];
         }
-        return $server->toArray();
     }
 }

+ 3 - 0
app/Utils/CacheKey.php

@@ -9,10 +9,13 @@ class CacheKey
         'LAST_SEND_EMAIL_VERIFY_TIMESTAMP' => '最后一次发送邮箱验证码时间',
         'SERVER_V2RAY_ONLINE_USER' => '节点在线用户',
         'SERVER_V2RAY_LAST_CHECK_AT' => '节点最后检查时间',
+        'SERVER_V2RAY_LAST_PUSH_AT' => '节点最后推送时间',
         'SERVER_TROJAN_ONLINE_USER' => 'trojan节点在线用户',
         'SERVER_TROJAN_LAST_CHECK_AT' => 'trojan节点最后检查时间',
+        'SERVER_TROJAN_LAST_PUSH_AT' => 'trojan节点最后推送时间',
         'SERVER_SHADOWSOCKS_ONLINE_USER' => 'ss节点在线用户',
         'SERVER_SHADOWSOCKS_LAST_CHECK_AT' => 'ss节点最后检查时间',
+        'SERVER_SHADOWSOCKS_LAST_PUSH_AT' => 'ss节点最后推送时间',
         'TEMP_TOKEN' => '临时令牌',
         'LAST_SEND_EMAIL_REMIND_TRAFFIC'
     ];

+ 1 - 1
config/app.php

@@ -236,5 +236,5 @@ return [
     | The only modification by laravel config
     |
     */
-    'version' => '1.5.1'
+    'version' => '1.5.1.1616569427547'
 ];

File diff suppressed because it is too large
+ 0 - 0
public/assets/admin/umi.js


Some files were not shown because too many files changed in this diff