mirror of
				https://github.com/v2board/v2board.git
				synced 2025-10-31 09:21:46 +08:00 
			
		
		
		
	update: add hysteria
This commit is contained in:
		
							
								
								
									
										114
									
								
								app/Http/Controllers/Admin/Server/HysteriaController.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										114
									
								
								app/Http/Controllers/Admin/Server/HysteriaController.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,114 @@ | ||||
| <?php | ||||
|  | ||||
| namespace App\Http\Controllers\Admin\Server; | ||||
|  | ||||
| use App\Http\Requests\Admin\ServerVmessSave; | ||||
| use App\Http\Requests\Admin\ServerVmessUpdate; | ||||
| use App\Models\ServerHysteria; | ||||
| use App\Services\ServerService; | ||||
| use Illuminate\Http\Request; | ||||
| use App\Http\Controllers\Controller; | ||||
| use App\Models\ServerVmess; | ||||
|  | ||||
| class HysteriaController extends Controller | ||||
| { | ||||
|     public function save(Request $request) | ||||
|     { | ||||
|         $params = $request->validate([ | ||||
|             'show' => '', | ||||
|             'name' => 'required', | ||||
|             'group_id' => 'required|array', | ||||
|             'route_id' => 'nullable|array', | ||||
|             'parent_id' => 'nullable|integer', | ||||
|             'host' => 'required', | ||||
|             'port' => 'required', | ||||
|             'server_port' => 'required', | ||||
|             'tls' => 'required', | ||||
|             'tags' => 'nullable|array', | ||||
|             'rate' => 'required|numeric', | ||||
|             'up_mbps' => 'required|numeric|min:1', | ||||
|             'down_mbps' => 'required|numeric|min:1', | ||||
|             'server_name' => 'nullable', | ||||
|             'insecure' => 'required|in:0,1' | ||||
|         ]); | ||||
|  | ||||
|         if ($request->input('id')) { | ||||
|             $server = ServerHysteria::find($request->input('id')); | ||||
|             if (!$server) { | ||||
|                 abort(500, '服务器不存在'); | ||||
|             } | ||||
|             try { | ||||
|                 $server->update($params); | ||||
|             } catch (\Exception $e) { | ||||
|                 abort(500, '保存失败'); | ||||
|             } | ||||
|             return response([ | ||||
|                 'data' => true | ||||
|             ]); | ||||
|         } | ||||
|  | ||||
|         if (!ServerHysteria::create($params)) { | ||||
|             abort(500, '创建失败'); | ||||
|         } | ||||
|  | ||||
|         return response([ | ||||
|             'data' => true | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     public function drop(Request $request) | ||||
|     { | ||||
|         if ($request->input('id')) { | ||||
|             $server = ServerHysteria::find($request->input('id')); | ||||
|             if (!$server) { | ||||
|                 abort(500, '节点ID不存在'); | ||||
|             } | ||||
|         } | ||||
|         return response([ | ||||
|             'data' => $server->delete() | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     public function update(Request $request) | ||||
|     { | ||||
|         $request->validate([ | ||||
|             'show' => 'in:0,1' | ||||
|         ], [ | ||||
|             'show.in' => '显示状态格式不正确' | ||||
|         ]); | ||||
|         $params = $request->only([ | ||||
|             'show', | ||||
|         ]); | ||||
|  | ||||
|         $server = ServerHysteria::find($request->input('id')); | ||||
|  | ||||
|         if (!$server) { | ||||
|             abort(500, '该服务器不存在'); | ||||
|         } | ||||
|         try { | ||||
|             $server->update($params); | ||||
|         } catch (\Exception $e) { | ||||
|             abort(500, '保存失败'); | ||||
|         } | ||||
|  | ||||
|         return response([ | ||||
|             'data' => true | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     public function copy(Request $request) | ||||
|     { | ||||
|         $server = ServerHysteria::find($request->input('id')); | ||||
|         $server->show = 0; | ||||
|         if (!$server) { | ||||
|             abort(500, '服务器不存在'); | ||||
|         } | ||||
|         if (!ServerHysteria::create($server->toArray())) { | ||||
|             abort(500, '复制失败'); | ||||
|         } | ||||
|  | ||||
|         return response([ | ||||
|             'data' => true | ||||
|         ]); | ||||
|     } | ||||
| } | ||||
| @@ -2,6 +2,7 @@ | ||||
|  | ||||
| namespace App\Http\Controllers\Admin\Server; | ||||
|  | ||||
| use App\Models\ServerHysteria; | ||||
| use App\Models\ServerVmess; | ||||
| use App\Models\ServerShadowsocks; | ||||
| use App\Models\ServerTrojan; | ||||
| @@ -44,6 +45,12 @@ class ManageController extends Controller | ||||
|                         abort(500, '保存失败'); | ||||
|                     } | ||||
|                     break; | ||||
|                 case 'hysteria': | ||||
|                     if (!ServerHysteria::find($v['value'])->update(['sort' => $v['sort']])) { | ||||
|                         DB::rollBack(); | ||||
|                         abort(500, '保存失败'); | ||||
|                     } | ||||
|                     break; | ||||
|             } | ||||
|         } | ||||
|         DB::commit(); | ||||
|   | ||||
| @@ -82,12 +82,12 @@ class ClashMeta | ||||
|     public static function buildShadowsocks($password, $server) | ||||
|     { | ||||
|         if ($server['cipher'] === '2022-blake3-aes-128-gcm') { | ||||
|             $serverKey = Helper::getShadowsocksServerKey($server['created_at'], 16); | ||||
|             $serverKey = Helper::getServerKey($server['created_at'], 16); | ||||
|             $userKey = Helper::uuidToBase64($password, 16); | ||||
|             $password = "{$serverKey}:{$userKey}"; | ||||
|         } | ||||
|         if ($server['cipher'] === '2022-blake3-aes-256-gcm') { | ||||
|             $serverKey = Helper::getShadowsocksServerKey($server['created_at'], 32); | ||||
|             $serverKey = Helper::getServerKey($server['created_at'], 32); | ||||
|             $userKey = Helper::uuidToBase64($password, 32); | ||||
|             $password = "{$serverKey}:{$userKey}"; | ||||
|         } | ||||
|   | ||||
| @@ -46,12 +46,12 @@ class Shadowrocket | ||||
|     public static function buildShadowsocks($password, $server) | ||||
|     { | ||||
|         if ($server['cipher'] === '2022-blake3-aes-128-gcm') { | ||||
|             $serverKey = Helper::getShadowsocksServerKey($server['created_at'], 16); | ||||
|             $serverKey = Helper::getServerKey($server['created_at'], 16); | ||||
|             $userKey = Helper::uuidToBase64($password, 16); | ||||
|             $password = "{$serverKey}:{$userKey}"; | ||||
|         } | ||||
|         if ($server['cipher'] === '2022-blake3-aes-256-gcm') { | ||||
|             $serverKey = Helper::getShadowsocksServerKey($server['created_at'], 32); | ||||
|             $serverKey = Helper::getServerKey($server['created_at'], 32); | ||||
|             $userKey = Helper::uuidToBase64($password, 32); | ||||
|             $password = "{$serverKey}:{$userKey}"; | ||||
|         } | ||||
|   | ||||
| @@ -40,12 +40,12 @@ class V2rayN | ||||
|     public static function buildShadowsocks($password, $server) | ||||
|     { | ||||
|         if ($server['cipher'] === '2022-blake3-aes-128-gcm') { | ||||
|             $serverKey = Helper::getShadowsocksServerKey($server['created_at'], 16); | ||||
|             $serverKey = Helper::getServerKey($server['created_at'], 16); | ||||
|             $userKey = Helper::uuidToBase64($password, 16); | ||||
|             $password = "{$serverKey}:{$userKey}"; | ||||
|         } | ||||
|         if ($server['cipher'] === '2022-blake3-aes-256-gcm') { | ||||
|             $serverKey = Helper::getShadowsocksServerKey($server['created_at'], 32); | ||||
|             $serverKey = Helper::getServerKey($server['created_at'], 32); | ||||
|             $userKey = Helper::uuidToBase64($password, 32); | ||||
|             $password = "{$serverKey}:{$userKey}"; | ||||
|         } | ||||
|   | ||||
| @@ -87,10 +87,10 @@ class UniProxyController extends Controller | ||||
|                 ]; | ||||
|  | ||||
|                 if ($this->nodeInfo->cipher === '2022-blake3-aes-128-gcm') { | ||||
|                     $response['server_key'] = Helper::getShadowsocksServerKey($this->nodeInfo->created_at, 16); | ||||
|                     $response['server_key'] = Helper::getServerKey($this->nodeInfo->created_at, 16); | ||||
|                 } | ||||
|                 if ($this->nodeInfo->cipher === '2022-blake3-aes-256-gcm') { | ||||
|                     $response['server_key'] = Helper::getShadowsocksServerKey($this->nodeInfo->created_at, 32); | ||||
|                     $response['server_key'] = Helper::getServerKey($this->nodeInfo->created_at, 32); | ||||
|                 } | ||||
|                 break; | ||||
|             case 'vmess': | ||||
| @@ -105,7 +105,17 @@ class UniProxyController extends Controller | ||||
|                 $response = [ | ||||
|                     'host' => $this->nodeInfo->host, | ||||
|                     'server_port' => $this->nodeInfo->server_port, | ||||
|                     'server_name' => $this->nodeInfo->server_name | ||||
|                     'server_name' => $this->nodeInfo->server_name, | ||||
|                 ]; | ||||
|                 break; | ||||
|             case 'hysteria': | ||||
|                 $response = [ | ||||
|                     'host' => $this->nodeInfo->host, | ||||
|                     'server_port' => $this->nodeInfo->server_port, | ||||
|                     'server_name' => $this->nodeInfo->server_name, | ||||
|                     'up_mbps' => $this->nodeInfo->up_mbps, | ||||
|                     'down_mbps' => $this->nodeInfo->down_mbps, | ||||
|                     'obfs' => Helper::getServerKey($this->nodeInfo->created_at, 16) | ||||
|                 ]; | ||||
|                 break; | ||||
|         } | ||||
|   | ||||
| @@ -64,6 +64,16 @@ class AdminRoute | ||||
|                 $router->post('copy', 'Admin\\Server\\ShadowsocksController@copy'); | ||||
|                 $router->post('sort', 'Admin\\Server\\ShadowsocksController@sort'); | ||||
|             }); | ||||
|             $router->group([ | ||||
|                 'prefix' => 'server/hysteria' | ||||
|             ], function ($router) { | ||||
|                 $router->get ('fetch', 'Admin\\Server\\HysteriaController@fetch'); | ||||
|                 $router->post('save', 'Admin\\Server\\HysteriaController@save'); | ||||
|                 $router->post('drop', 'Admin\\Server\\HysteriaController@drop'); | ||||
|                 $router->post('update', 'Admin\\Server\\HysteriaController@update'); | ||||
|                 $router->post('copy', 'Admin\\Server\\HysteriaController@copy'); | ||||
|                 $router->post('sort', 'Admin\\Server\\HysteriaController@sort'); | ||||
|             }); | ||||
|             // Order | ||||
|             $router->get ('/order/fetch', 'Admin\\OrderController@fetch'); | ||||
|             $router->post('/order/update', 'Admin\\OrderController@update'); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user