mirror of
https://github.com/lkddi/Xboard.git
synced 2026-04-14 02:50:52 +08:00
feat: new xboard
This commit is contained in:
115
app/Http/Requests/Admin/ServerSave.php
Normal file
115
app/Http/Requests/Admin/ServerSave.php
Normal file
@@ -0,0 +1,115 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace App\Http\Requests\Admin;
|
||||
|
||||
use App\Models\Server;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class ServerSave extends FormRequest
|
||||
{
|
||||
private const PROTOCOL_RULES = [
|
||||
'shadowsocks' => [
|
||||
'cipher' => 'required|string',
|
||||
'obfs' => 'nullable|string',
|
||||
'obfs_settings.path' => 'nullable|string',
|
||||
'obfs_settings.host' => 'nullable|string',
|
||||
],
|
||||
'vmess' => [
|
||||
'tls' => 'required|integer',
|
||||
'network' => 'required|string',
|
||||
'network_settings' => 'nullable|array',
|
||||
'tls_settings.server_name' => 'nullable|string',
|
||||
'tls_settings.allow_insecure' => 'nullable|boolean',
|
||||
],
|
||||
'trojan' => [
|
||||
'network' => 'required|string',
|
||||
'network_settings' => 'nullable|array',
|
||||
'server_name' => 'nullable|string',
|
||||
'allow_insecure' => 'nullable|boolean',
|
||||
],
|
||||
'hysteria' => [
|
||||
'version' => 'required|integer',
|
||||
'alpn' => 'nullable|string',
|
||||
'obfs.open' => 'nullable|boolean',
|
||||
'obfs.type' => 'string|nullable',
|
||||
'obfs.password' => 'string|nullable',
|
||||
'tls.server_name' => 'nullable|string',
|
||||
'tls.allow_insecure' => 'nullable|boolean',
|
||||
'bandwidth.up' => 'nullable|integer',
|
||||
'bandwidth.down' => 'nullable|integer',
|
||||
],
|
||||
'vless' => [
|
||||
'tls' => 'required|integer',
|
||||
'network' => 'required|string',
|
||||
'network_settings' => 'nullable|array',
|
||||
'flow' => 'nullable|string',
|
||||
'tls_settings.server_name' => 'nullable|string',
|
||||
'tls_settings.allow_insecure' => 'nullable|boolean',
|
||||
'reality_settings.allow_insecure' => 'nullable|boolean',
|
||||
'reality_settings.server_name' => 'nullable|string',
|
||||
'reality_settings.server_port' => 'nullable|integer',
|
||||
'reality_settings.public_key' => 'nullable|string',
|
||||
'reality_settings.private_key' => 'nullable|string',
|
||||
'reality_settings.short_id' => 'nullable|string',
|
||||
]
|
||||
];
|
||||
|
||||
private function getBaseRules(): array
|
||||
{
|
||||
return [
|
||||
'type' => 'required|in:' . implode(',', Server::VALID_TYPES),
|
||||
'spectific_key' => 'nullable|string',
|
||||
'code' => 'nullable|string',
|
||||
'show' => '',
|
||||
'name' => 'required|string',
|
||||
'group_ids' => 'nullable|array',
|
||||
'route_ids' => 'nullable|array',
|
||||
'parent_id' => 'nullable|integer',
|
||||
'host' => 'required',
|
||||
'port' => 'required',
|
||||
'server_port' => 'required',
|
||||
'tags' => 'nullable|array',
|
||||
'excludes' => 'nullable|array',
|
||||
'ips' => 'nullable|array',
|
||||
'rate' => 'required|numeric',
|
||||
'protocol_settings' => 'array',
|
||||
];
|
||||
}
|
||||
|
||||
public function rules(): array
|
||||
{
|
||||
$type = $this->input('type');
|
||||
$rules = $this->getBaseRules();
|
||||
|
||||
foreach (self::PROTOCOL_RULES[$type] ?? [] as $field => $rule) {
|
||||
$rules['protocol_settings.' . $field] = $rule;
|
||||
}
|
||||
|
||||
return $rules;
|
||||
}
|
||||
|
||||
public function messages()
|
||||
{
|
||||
return [
|
||||
'name.required' => '节点名称不能为空',
|
||||
'group_ids.required' => '权限组不能为空',
|
||||
'group_ids.array' => '权限组格式不正确',
|
||||
'route_ids.array' => '路由组格式不正确',
|
||||
'parent_id.integer' => '父ID格式不正确',
|
||||
'host.required' => '节点地址不能为空',
|
||||
'port.required' => '连接端口不能为空',
|
||||
'server_port.required' => '后端服务端口不能为空',
|
||||
'tls.required' => 'TLS不能为空',
|
||||
'tags.array' => '标签格式不正确',
|
||||
'rate.required' => '倍率不能为空',
|
||||
'rate.numeric' => '倍率格式不正确',
|
||||
'network.required' => '传输协议不能为空',
|
||||
'network.in' => '传输协议格式不正确',
|
||||
'networkSettings.array' => '传输协议配置有误',
|
||||
'ruleSettings.array' => '规则配置有误',
|
||||
'tlsSettings.array' => 'tls配置有误',
|
||||
'dnsSettings.array' => 'dns配置有误'
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user