feature: add vmess global rules

This commit is contained in:
Tokumeikoi 2020-07-26 17:17:35 +08:00
parent 1b4d03044d
commit 1cf0ccb865
5 changed files with 33 additions and 21 deletions

View File

@ -108,7 +108,9 @@ class ConfigController extends Controller
'server' => [ 'server' => [
'server_token' => config('v2board.server_token'), 'server_token' => config('v2board.server_token'),
'server_license' => config('v2board.server_license'), 'server_license' => config('v2board.server_license'),
'server_log_level' => config('v2board.server_log_level', 'none') 'server_log_enable' => config('v2board.server_log_enable', 0),
'server_v2ray_domain' => config('v2board.server_v2ray_domain'),
'server_v2ray_protocol' => config('v2board.server_v2ray_protocol'),
], ],
'tutorial' => [ 'tutorial' => [
'apple_id' => config('v2board.apple_id') 'apple_id' => config('v2board.apple_id')

View File

@ -42,7 +42,9 @@ class ConfigSave extends FormRequest
// server // server
'server_token' => 'nullable|min:16', 'server_token' => 'nullable|min:16',
'server_license' => 'nullable', 'server_license' => 'nullable',
'server_log_level' => 'nullable|in:debug,info,warning,error,none', 'server_log_enable' => 'in:0,1',
'server_v2ray_domain' => '',
'server_v2ray_protocol' => '',
// alipay // alipay
'alipay_enable' => 'in:0,1', 'alipay_enable' => 'in:0,1',
'alipay_appid' => 'nullable|integer|min:16', 'alipay_appid' => 'nullable|integer|min:16',

View File

@ -171,32 +171,40 @@ class ServerService
private function setRule(Server $server, object $json) private function setRule(Server $server, object $json)
{ {
$domainRules = array_filter(explode(PHP_EOL, config('v2board.server_v2ray_domain')));
$protocolRules = array_filter(explode(PHP_EOL, config('v2board.server_v2ray_protocol')));
if ($server->ruleSettings) { if ($server->ruleSettings) {
$rules = json_decode($server->ruleSettings); $ruleSettings = json_decode($server->ruleSettings);
// domain // domain
if (isset($rules->domain)) { if (isset($ruleSettings->domain)) {
$rules->domain = array_filter($rules->domain); $ruleSettings->domain = array_filter($ruleSettings->domain);
if (!empty($rules->domain)) { if (!empty($ruleSettings->domain)) {
$domainObj = new \StdClass(); $domainRules = array_merge($domainRules, $ruleSettings->domain);
$domainObj->type = 'field';
$domainObj->domain = $rules->domain;
$domainObj->outboundTag = 'block';
array_push($json->routing->rules, $domainObj);
} }
} }
// protocol // protocol
if (isset($rules->protocol)) { if (isset($ruleSettings->protocol)) {
$rules->protocol = array_filter($rules->protocol); $ruleSettings->protocol = array_filter($ruleSettings->protocol);
if (!empty($rules->protocol)) { if (!empty($ruleSettings->protocol)) {
$protocolRules = array_merge($protocolRules, $ruleSettings->protocol);
}
}
}
if (!empty($domainRules)) {
$domainObj = new \StdClass();
$domainObj->type = 'field';
$domainObj->domain = $domainRules;
$domainObj->outboundTag = 'block';
array_push($json->routing->rules, $domainObj);
}
if (!empty($protocolRules)) {
$protocolObj = new \StdClass(); $protocolObj = new \StdClass();
$protocolObj->type = 'field'; $protocolObj->type = 'field';
$protocolObj->protocol = $rules->protocol; $protocolObj->protocol = $protocolRules;
$protocolObj->outboundTag = 'block'; $protocolObj->outboundTag = 'block';
array_push($json->routing->rules, $protocolObj); array_push($json->routing->rules, $protocolObj);
} }
} }
}
}
private function setTls(Server $server, object $json) private function setTls(Server $server, object $json)
{ {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long