feat: Add client.subscribe.servers hook for plugin-based server extension

- Add HookManager::filter('client.subscribe.servers') hook in ClientController::subscribe()
- Allow plugins to inject custom servers into subscription responses
- Update protocol classes to support extended server configurations
- Enable dynamic server list modification before protocol processing
This commit is contained in:
xboard
2025-07-11 21:19:23 +08:00
parent 1e59bc8ca1
commit 97788e3c8f
13 changed files with 48 additions and 47 deletions

View File

@@ -35,22 +35,22 @@ class General extends AbstractProtocol
foreach ($servers as $item) {
if ($item['type'] === 'vmess') {
$uri .= self::buildVmess($user['uuid'], $item);
$uri .= self::buildVmess($item['password'], $item);
}
if ($item['type'] === 'vless') {
$uri .= self::buildVless($user['uuid'], $item);
$uri .= self::buildVless($item['password'], $item);
}
if ($item['type'] === 'shadowsocks') {
$uri .= self::buildShadowsocks($item['password'], $item);
}
if ($item['type'] === 'trojan') {
$uri .= self::buildTrojan($user['uuid'], $item);
$uri .= self::buildTrojan($item['password'], $item);
}
if ($item['type'] === 'hysteria') {
$uri .= self::buildHysteria($user['uuid'], $item);
$uri .= self::buildHysteria($item['password'], $item);
}
if ($item['type'] === 'socks') {
$uri .= self::buildSocks($user['uuid'], $item);
$uri .= self::buildSocks($item['password'], $item);
}
}
return response(base64_encode($uri))->header('content-type', 'text/plain');