v2board/app/Http/Controllers/V1/Admin/Server/HysteriaController.php

120 lines
3.2 KiB
PHP
Raw Normal View History

2023-03-08 02:28:00 +08:00
<?php
2023-06-12 02:32:49 +08:00
namespace App\Http\Controllers\V1\Admin\Server;
2023-03-08 02:28:00 +08:00
2023-06-12 02:32:49 +08:00
use App\Http\Controllers\Controller;
2023-03-08 02:28:00 +08:00
use App\Models\ServerHysteria;
use App\Utils\Helper;
2023-03-08 02:28:00 +08:00
use Illuminate\Http\Request;
class HysteriaController extends Controller
{
public function save(Request $request)
{
$params = $request->validate([
'show' => '',
'name' => 'required',
2023-09-25 16:15:58 +09:00
'version' => 'required|in:1,2',
2023-03-08 02:28:00 +08:00
'group_id' => 'required|array',
'route_id' => 'nullable|array',
'parent_id' => 'nullable|integer',
'host' => 'required',
'port' => 'required',
'server_port' => 'required',
'tags' => 'nullable|array',
'rate' => 'required|numeric',
'up_mbps' => 'required|numeric|min:1',
'down_mbps' => 'required|numeric|min:1',
'obfs' => 'nullable',
'obfs_password' => 'nullable',
2023-03-08 02:28:00 +08:00
'server_name' => 'nullable',
'insecure' => 'required|in:0,1'
]);
if(isset($params['obfs'])) {
if(!isset($params['obfs_password'])) $params['obfs_password'] = Helper::getServerKey($request->input('created_at'), 16);
} else {
$params['obfs_password'] = null;
}
2023-03-08 02:28:00 +08:00
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
]);
}
}