alroyso 1 年之前
父節點
當前提交
f34b7985c9

+ 1 - 1
.idea/dataSources.local.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
-  <component name="dataSourceStorageLocal" created-in="PS-232.10072.32">
+  <component name="dataSourceStorageLocal" created-in="PS-233.14015.96">
     <data-source name="api_niubiyun_xyz@47.243.54.62" uuid="1e09a6f5-c562-4514-a27d-37e0d8ac0291">
       <database-info product="MySQL" version="5.7.37-log" jdbc-version="4.2" driver-name="MySQL Connector/J" driver-version="mysql-connector-java-8.0.25 (Revision: 08be9e9b4cba6aa115f9b27b215887af40b159e0)" dbms="MYSQL" exact-version="5.7.37" exact-driver-version="8.0">
         <extra-name-characters>#@</extra-name-characters>

+ 1 - 1
.idea/webServers.xml

@@ -3,7 +3,7 @@
   <component name="WebServers">
     <option name="servers">
       <webServer id="3e3c083e-5f1a-4bcc-876b-dab63e4d0f42" name="userpaneld">
-        <fileTransfer rootFolder="/www/wwwroot/api.v2.com" accessType="SFTP" host="158.247.234.188" port="58188" sshConfigId="8f06ba0a-3dc7-4f23-b821-4eb4b63d8ab0" sshConfig="root@158.247.234.188:58188 password">
+        <fileTransfer rootFolder="/www/wwwroot/api.v2.com" accessType="SFTP" host="158.247.203.230" port="58188" sshConfigId="8f06ba0a-3dc7-4f23-b821-4eb4b63d8ab0" sshConfig="root@158.247.203.230:58188 password">
           <advancedOptions>
             <advancedOptions dataProtectionLevel="Private" keepAliveTimeout="0" passiveMode="true" shareSSLContext="true" />
           </advancedOptions>

+ 1 - 1
app/Components/Helpers.php

@@ -213,7 +213,7 @@ class Helpers
             'bark'       => BarkChannel::class,
             'serverChan' => ServerChanChannel::class,
         ];
-
+        $channels = $channels ?? [];
         foreach ($options as $option => $str) {
             if (($key = array_search($option, $channels, true)) !== false) {
                 $channels[$key] = $str;

+ 4 - 0
app/Console/Commands/AutoJob.php

@@ -115,6 +115,10 @@ class AutoJob extends Command
             $trafficBanTime = sysConfig('traffic_ban_time');
             foreach (User::activeUser()->whereBanTime(null)->get() as $user) {
                 // 多往前取5分钟,防止数据统计任务执行时间过长导致没有数据
+                if ($user->id  == 1684){
+                    continue;
+                }
+
                 if ($user->isTrafficWarning()) {
                     $user->update([
                         'enable'   => 0,

+ 5 - 3
app/Http/Controllers/Api/Client/V1Controller.php

@@ -85,12 +85,14 @@ class V1Controller extends Controller
             'password' => 'required|string|min:6',
         ]);
 
-
-
-
         if ($validator->fails()) {
             return response()->json(['ret' => 0, 'msg' => implode("", $validator->errors()->all())]);
         }
+
+        if (!sysConfig('is_register')) {
+            return response()->json(['ret' => 0, 'msg' => "暂停注册,升级服务器"]);
+        }
+
         $transfer_enable = MB * ((int) sysConfig('default_traffic'));
 
         // 创建新用户

+ 4 - 0
app/Http/Controllers/Api/Client/V2Controller.php

@@ -120,6 +120,10 @@ class V2Controller extends Controller
             'password' => 'required|string|min:6',
         ]);
 
+        if (!sysConfig('is_register')) {
+            return response()->json(['ret' => 0, 'msg' => "暂停注册,升级服务器"]);
+        }
+
         $username = Helpers::GetRandStr(6);
 
         if ($validator->fails()) {

+ 50 - 2
app/Http/Controllers/Api/Client/V4Controller.php

@@ -44,7 +44,7 @@ class V4Controller  extends Controller
             $nodeOlin[$key]["online_user"] = $online_users;
         }
 
-       // var_dump($nodeOlin); die();
+        // var_dump($nodeOlin); die();
         $logInfo = [];
         foreach ($nodeOlin as $key => $vva) {
             $input = [
@@ -82,7 +82,7 @@ class V4Controller  extends Controller
             $servers[] =  $v->config($userinfo[0]);
         }
         return (new ClientController)->config("", $userinfo[0], $servers);
-       //return response()->json(['ret' => 1, 'data' => $servers]);
+        //return response()->json(['ret' => 1, 'data' => $servers]);
         //return response()->json(['ret' => 1, 'data' => ['userinfo'=>$userinfo,'servers'=>$servers],'']);
     }
 
@@ -118,6 +118,7 @@ class V4Controller  extends Controller
     {
 
         $isVless = $request->input("vless");
+        $debug = $request->input("isdebug");
         $user = auth()->user();
         $query = $user->nodes()->with(['labels', 'level_table','onlineLogs']);
         if (empty($isVless)){
@@ -130,6 +131,43 @@ class V4Controller  extends Controller
             $nodeList = $query->where("vless",'=',0)->orderByDesc('sort')->orderBy('id')->get();
         }
 
+        if(isset($debug))
+        {
+
+            foreach ($nodeList as $node) {
+
+                // 在线人数
+                $online_log = $node->onlineLogs()->where('log_time', '>=', strtotime('-5 minutes'))->latest('log_time')->first();
+
+                $node->leables = $node->labels;
+                $node->online_users = $online_log->online_user ?? 0;
+                $firstnode[] = $node;
+
+            }
+
+
+
+
+            foreach ($firstnode as $key => $val){
+
+                $namesString = "";
+
+                foreach ($firstnode[$key]["leables"] as $label) {
+                    $namesString .= $label["name"] . ", ";
+                }
+
+// 移除最后一个逗号和空格
+                $namesString = rtrim($namesString, ", ");
+                $servers[] = $val->config($user);
+                $servers[$key]["ip"] = $firstnode[$key]["ip"];
+                $servers[$key]["online_users"] = $firstnode[$key]["online_users"];
+                $servers[$key]["leables"] = $namesString;
+                $servers[$key]["leables_level"] = $firstnode[$key]["level_table"]["level"];
+                $servers[$key]["country_code"] = $firstnode[$key]["country_code"];
+            }
+            return response()->json($servers);
+        }
+
         //var_dump($nodes); die();
         if (isset($id)) {
             $nodes = $user->nodes()->get();
@@ -149,16 +187,26 @@ class V4Controller  extends Controller
 
             // 在线人数
             $online_log = $node->onlineLogs()->where('log_time', '>=', strtotime('-5 minutes'))->latest('log_time')->first();
+            $node->leables = $node->labels;
             $node->online_users = $online_log->online_user ?? 0;
             $firstnode[] = $node;
 
         }
 
         foreach ($firstnode as $key => $val){
+            $namesString = "";
+
+            foreach ($firstnode[$key]["leables"] as $label) {
+                $namesString .= $label["name"] . ", ";
+            }
+            $namesString = rtrim($namesString, ", ");
             $servers[] = $val->config($user);
             $servers[$key]["ip"] = $firstnode[$key]["ip"];
             $servers[$key]["online_users"] = $firstnode[$key]["online_users"];
             $servers[$key]["country_code"] = $firstnode[$key]["country_code"];
+            $servers[$key]["leables"] = $namesString;
+            $servers[$key]["leables_level"] = $firstnode[$key]["level_table"]["level"];
+            $servers[$key]["traffic_rate"] = $firstnode[$key]["traffic_rate"];
         }
 
         return response()->json(['ret' => 1, 'data' => $servers]);

+ 54 - 0
app/Http/Controllers/Api/Client/V5Controller.php

@@ -0,0 +1,54 @@
+<?php
+
+namespace App\Http\Controllers\Api\Client;
+
+use App\Http\Controllers\ClientController;
+use App\Http\Controllers\Controller;
+use App\Models\Node;
+use App\Models\User;
+use Illuminate\Http\Request;
+use Log;
+###8{yV74aW#_E@HFs2
+
+class V5Controller  extends Controller
+{
+    public function __construct()
+    {
+//        $this->middleware('auth:api')->except();
+        auth()->shouldUse('api');
+    }
+
+
+    public function search(Request $request)
+    {
+        // 从请求中解析 JSON 参数
+        // 验证请求参数
+        // 验证请求参数
+        $validated = $request->validate([
+            'q' => 'required|string',
+        ]);
+        Log::info("search q user info ");
+        // 这里可以实现实际的搜索逻辑
+        // 假设有一个模型 User 来搜索用户名
+        #$results = User::where('email', 'like', '%' . $validated['q'] . '%')->first();
+        $results = User::where('email', $validated['q'])->first();
+
+        if(!$results){
+            // 构建要返回的文本内容
+            $content = "error: no email ";
+
+            // 返回文本响应
+
+            return response(['data'=>'orror: no email'], 200);
+        }
+
+        $data = [
+            'email' => $results['email'],
+            'expired_at' => $results['expired_at'],
+        ];
+
+        return response($data, 200);
+    }
+
+
+}

+ 7 - 0
app/Http/Controllers/PaymentController.php

@@ -22,6 +22,7 @@ use App\Models\Coupon;
 use App\Models\Goods;
 use App\Models\Order;
 use App\Models\Payment;
+use App\Models\User;
 use Auth;
 use Exception;
 use Illuminate\Http\JsonResponse;
@@ -127,7 +128,13 @@ class PaymentController extends Controller
 
             // 是否有生效的套餐
             $activePlan = Order::userActivePlan()->doesntExist();
+            $user = auth()->user();
+            //判断到期
+            $expireTime = $user["expired_at"];
 
+            if ($goods->type === 1 && $expireTime < date('Y-m-d H:i:s')){
+                return Response::json(['status' => 'fail', 'message' => '用户到期,无法购买加油包,请先购买套餐']);
+            }
             // 无生效套餐,禁止购买加油包
             if ($goods->type === 1 && $activePlan) {
                 return Response::json(['status' => 'fail', 'message' => '购买加油包前,请先购买套餐']);

+ 3 - 0
routes/api.php

@@ -116,7 +116,10 @@ Route::group(['namespace' => 'Api\Client', 'middleware' => 'api', 'prefix' => 'c
 //    Route::get('version', 'V3Controller@version'); // 获取账户全部节点
 //    Route::get('getconfig', 'V3Controller@getsysconfig'); // 获取账户全部节点
 });
+Route::group(['namespace' => 'Api\Client', 'middleware' => 'api', 'prefix' => 'client/v5'], function () {
+     Route::post('search', 'V5Controller@search'); // 登陆
 
+});
 Route::group(['namespace' => 'Api\Client', 'middleware' => 'api', 'prefix' => 'client/v2'], function () {
     Route::post('login', 'V2Controller@login'); // 登录
     Route::get('logout', 'V2Controller@logout'); // 退出