Merge 982ec97361776418596ca6c4b6f4dada5dda6553 into 0ca47622a50116d0ddd7ffb316b157afb57d25e8

This commit is contained in:
He-Peter-Huang 2024-08-29 23:55:17 +08:00 committed by GitHub
commit 9d77b3d34f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 40 additions and 34 deletions

24
app/Http/Controllers/Client/Protocols/Clash.php Normal file → Executable file
View File

@ -62,20 +62,22 @@ class Clash
$config['proxies'] = array_merge($config['proxies'] ? $config['proxies'] : [], $proxy);
foreach ($config['proxy-groups'] as $k => $v) {
if (!is_array($config['proxy-groups'][$k]['proxies'])) $config['proxy-groups'][$k]['proxies'] = [];
$isFilter = false;
foreach ($config['proxy-groups'][$k]['proxies'] as $src) {
foreach ($proxies as $dst) {
if (!$this->isRegex($src)) continue;
$isFilter = true;
$config['proxy-groups'][$k]['proxies'] = array_values(array_diff($config['proxy-groups'][$k]['proxies'], [$src]));
if ($this->isMatch($src, $dst)) {
array_push($config['proxy-groups'][$k]['proxies'], $dst);
$updatedProxies = [];
foreach ($config['proxy-groups'][$k]['proxies'] as $index => $src) {
if ($this->isRegex($src)) {
foreach ($proxies as $dst) {
if ($this->isMatch($src, $dst)) {
$updatedProxies[] = $dst;
}
}
} else {
$updatedProxies[] = $src;
}
if ($isFilter) continue;
}
if ($isFilter) continue;
$config['proxy-groups'][$k]['proxies'] = array_merge($config['proxy-groups'][$k]['proxies'], $proxies);
if (empty($updatedProxies) && !empty($config['proxy-groups'][$k]['proxies'])) {
$updatedProxies = array_merge($updatedProxies, $proxies);
}
$config['proxy-groups'][$k]['proxies'] = $updatedProxies;
}
$config['proxy-groups'] = array_filter($config['proxy-groups'], function($group) {

24
app/Http/Controllers/Client/Protocols/ClashMeta.php Normal file → Executable file
View File

@ -53,20 +53,22 @@ class ClashMeta
$config['proxies'] = array_merge($config['proxies'] ? $config['proxies'] : [], $proxy);
foreach ($config['proxy-groups'] as $k => $v) {
if (!is_array($config['proxy-groups'][$k]['proxies'])) $config['proxy-groups'][$k]['proxies'] = [];
$isFilter = false;
foreach ($config['proxy-groups'][$k]['proxies'] as $src) {
foreach ($proxies as $dst) {
if (!$this->isRegex($src)) continue;
$isFilter = true;
$config['proxy-groups'][$k]['proxies'] = array_values(array_diff($config['proxy-groups'][$k]['proxies'], [$src]));
if ($this->isMatch($src, $dst)) {
array_push($config['proxy-groups'][$k]['proxies'], $dst);
$updatedProxies = [];
foreach ($config['proxy-groups'][$k]['proxies'] as $index => $src) {
if ($this->isRegex($src)) {
foreach ($proxies as $dst) {
if ($this->isMatch($src, $dst)) {
$updatedProxies[] = $dst;
}
}
} else {
$updatedProxies[] = $src;
}
if ($isFilter) continue;
}
if ($isFilter) continue;
$config['proxy-groups'][$k]['proxies'] = array_merge($config['proxy-groups'][$k]['proxies'], $proxies);
if (empty($updatedProxies) && !empty($config['proxy-groups'][$k]['proxies'])) {
$updatedProxies = array_merge($updatedProxies, $proxies);
}
$config['proxy-groups'][$k]['proxies'] = $updatedProxies;
}
$config['proxy-groups'] = array_filter($config['proxy-groups'], function($group) {
return $group['proxies'];

26
app/Http/Controllers/Client/Protocols/Stash.php Normal file → Executable file
View File

@ -59,21 +59,23 @@ class Stash
$config['proxies'] = array_merge($config['proxies'] ? $config['proxies'] : [], $proxy);
foreach ($config['proxy-groups'] as $k => $v) {
if (!is_array($config['proxy-groups'][$k]['proxies'])) continue;
$isFilter = false;
foreach ($config['proxy-groups'][$k]['proxies'] as $src) {
foreach ($proxies as $dst) {
if (!$this->isRegex($src)) continue;
$isFilter = true;
$config['proxy-groups'][$k]['proxies'] = array_values(array_diff($config['proxy-groups'][$k]['proxies'], [$src]));
if ($this->isMatch($src, $dst)) {
array_push($config['proxy-groups'][$k]['proxies'], $dst);
if (!is_array($config['proxy-groups'][$k]['proxies'])) $config['proxy-groups'][$k]['proxies'] = [];
$updatedProxies = [];
foreach ($config['proxy-groups'][$k]['proxies'] as $index => $src) {
if ($this->isRegex($src)) {
foreach ($proxies as $dst) {
if ($this->isMatch($src, $dst)) {
$updatedProxies[] = $dst;
}
}
} else {
$updatedProxies[] = $src;
}
if ($isFilter) continue;
}
if ($isFilter) continue;
$config['proxy-groups'][$k]['proxies'] = array_merge($config['proxy-groups'][$k]['proxies'], $proxies);
if (empty($updatedProxies) && !empty($config['proxy-groups'][$k]['proxies'])) {
$updatedProxies = array_merge($updatedProxies, $proxies);
}
$config['proxy-groups'][$k]['proxies'] = $updatedProxies;
}
$config['proxy-groups'] = array_filter($config['proxy-groups'], function($group) {
return $group['proxies'];