Files
ProxyPanel/app/Http/Requests/Admin/NodeRequest.php
BrettonYe 2d61434ff0 Add Hysteria2 support
- Update services and controllers for new node support;
- Update relate views and language files;
- Improve client config generation and node type handling;
2026-01-30 20:04:32 +08:00

75 lines
3.2 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
class NodeRequest extends FormRequest
{
public function rules(): array
{
$rules = [
'is_ddns' => 'required|boolean',
'name' => 'required|string',
'server' => 'required_if:is_ddns,1|nullable|ends_with:'.implode(',', config('domains')),
'ip' => 'required_if:is_ddns,0|nullable',
'ipv6' => 'nullable',
'push_port' => 'numeric|between:1,65535|different:port',
'traffic_rate' => 'required|numeric|min:0',
'level' => 'required|exists:level,level',
'rule_group_id' => 'nullable|exists:rule_group,id',
'speed_limit' => 'required|numeric|min:0',
'client_limit' => 'required|numeric|min:0',
'labels' => 'nullable|exists:label,id',
'country_code' => 'required|exists:country,code',
'description' => 'nullable|string',
'next_renewal_date' => 'nullable|date',
'subscription_term' => ['nullable', 'string', 'regex:/^\d+\s+(day|days|week|weeks|month|months|year|years)$/'],
'renewal_cost' => 'nullable|numeric|min:0',
'sort' => 'required|numeric|between:0,255',
'is_udp' => 'required|boolean',
'status' => 'required|boolean',
'type' => 'required|numeric|between:0,5',
'method' => 'required_if:type,0,1,4|exists:ss_config,name',
'protocol' => 'required_if:type,1,4|exists:ss_config,name',
'protocol_param' => 'nullable|string',
'obfs' => 'required_if:type,1,4',
'obfs_param' => 'nullable|string',
'is_display' => 'required|numeric|between:0,3',
'detection_type' => 'required|numeric|between:0,3',
'single' => 'required_if:type,0,1,4|boolean',
'port' => 'nullable|numeric|between:1,65535|different:push_port|required_if:single,1|required_if:type,2,3,5',
'passwd' => 'exclude_unless:type,1,type,4|required_if:single,1|string|nullable',
'v2_alter_id' => 'nullable|numeric|between:0,65535',
'v2_method' => 'required_if:type,2',
'v2_net' => 'required_if:type,2',
'v2_type' => 'required_if:type,2',
'v2_host' => 'nullable|string',
'v2_path' => 'nullable|string',
'v2_sni' => 'nullable|string',
'v2_tls' => 'required_if:type,2|boolean',
'tls_provider' => 'nullable|json',
'relay_node_id' => 'nullable|exists:node,id',
'upload_mbps' => 'nullable|numeric|min:0',
'download_mbps' => 'nullable|numeric|min:0',
'ignore_client_bandwidth' => 'nullable|boolean',
'allow_insecure' => 'nullable|boolean',
'ports' => 'nullable|string',
];
// 对于 Hysteria2 (type=5),当 obfs 不为 'none' 时obfs_param 是必填的
if ($this->type === '5' && ! empty($this->obfs)) {
$rules['obfs_param'] = 'required|string';
}
return $rules;
}
public function messages(): array
{
return [
'server.required_if' => '开启DDNS 域名不能为空',
];
}
}