diff --git a/app/Http/Controllers/V1/Client/ClientController.php b/app/Http/Controllers/V1/Client/ClientController.php index 20ab34e..7bd810d 100644 --- a/app/Http/Controllers/V1/Client/ClientController.php +++ b/app/Http/Controllers/V1/Client/ClientController.php @@ -56,6 +56,7 @@ class ClientController extends Controller ?? General::class; $servers = ServerService::getAvailableServers($user); + $servers = HookManager::filter('client.subscribe.servers', $servers, $user, $request); $serversFiltered = $this->filterServers( servers: $servers, diff --git a/app/Models/Server.php b/app/Models/Server.php index bf6da5a..39d7540 100644 --- a/app/Models/Server.php +++ b/app/Models/Server.php @@ -293,7 +293,7 @@ class Server extends Model $this->attributes['protocol_settings'] = json_encode($castedSettings); } - public function generateShadowsocksPassword(User $user): string + public function generateServerPassword(User $user): string { if ($this->type !== self::TYPE_SHADOWSOCKS) { return $user->uuid; diff --git a/app/Protocols/Clash.php b/app/Protocols/Clash.php index 5563004..6a246a0 100644 --- a/app/Protocols/Clash.php +++ b/app/Protocols/Clash.php @@ -42,19 +42,19 @@ class Clash extends AbstractProtocol array_push($proxies, $item['name']); } if ($item['type'] === 'vmess') { - array_push($proxy, self::buildVmess($user['uuid'], $item)); - array_push($proxies, $item['name']); + array_push($proxy, self::buildVmess($item['password'], $item)); + array_push($proxies, $item['name']); } if ($item['type'] === 'trojan') { - array_push($proxy, self::buildTrojan($user['uuid'], $item)); + array_push($proxy, self::buildTrojan($item['password'], $item)); array_push($proxies, $item['name']); } if ($item['type'] === 'socks') { - array_push($proxy, self::buildSocks5($user['uuid'], $item)); + array_push($proxy, self::buildSocks5($item['password'], $item)); array_push($proxies, $item['name']); } if ($item['type'] === 'http') { - array_push($proxy, self::buildHttp($user['uuid'], $item)); + array_push($proxy, self::buildHttp($item['password'], $item)); array_push($proxies, $item['name']); } } diff --git a/app/Protocols/ClashMeta.php b/app/Protocols/ClashMeta.php index 4b5f858..b7a53d6 100644 --- a/app/Protocols/ClashMeta.php +++ b/app/Protocols/ClashMeta.php @@ -84,42 +84,42 @@ class ClashMeta extends AbstractProtocol array_push($proxies, $item['name']); } if ($item['type'] === 'vmess') { - array_push($proxy, self::buildVmess($user['uuid'], $item)); + array_push($proxy, self::buildVmess($item['password'], $item)); array_push($proxies, $item['name']); } if ($item['type'] === 'trojan') { - array_push($proxy, self::buildTrojan($user['uuid'], $item)); + array_push($proxy, self::buildTrojan($item['password'], $item)); array_push($proxies, $item['name']); } if ( $item['type'] === 'vless' && in_array(data_get($protocol_settings, 'network'), ['tcp', 'ws', 'grpc', 'http', 'h2']) ) { - array_push($proxy, self::buildVless($user['uuid'], $item)); + array_push($proxy, self::buildVless($item['password'], $item)); array_push($proxies, $item['name']); } if ($item['type'] === 'hysteria') { - array_push($proxy, self::buildHysteria($user['uuid'], $item, $user)); + array_push($proxy, self::buildHysteria($item['password'], $item, $user)); array_push($proxies, $item['name']); } if ($item['type'] === 'tuic') { - array_push($proxy, self::buildTuic($user['uuid'], $item)); + array_push($proxy, self::buildTuic($item['password'], $item)); array_push($proxies, $item['name']); } if ($item['type'] === 'anytls') { - array_push($proxy, self::buildAnyTLS($user['uuid'], $item)); + array_push($proxy, self::buildAnyTLS($item['password'], $item)); array_push($proxies, $item['name']); } if ($item['type'] === 'socks') { - array_push($proxy, self::buildSocks5($user['uuid'], $item)); + array_push($proxy, self::buildSocks5($item['password'], $item)); array_push($proxies, $item['name']); } if ($item['type'] === 'http') { - array_push($proxy, self::buildHttp($user['uuid'], $item)); + array_push($proxy, self::buildHttp($item['password'], $item)); array_push($proxies, $item['name']); } if ($item['type'] === 'mieru') { - array_push($proxy, self::buildMieru($user['uuid'], $item)); + array_push($proxy, self::buildMieru($item['password'], $item)); array_push($proxies, $item['name']); } } diff --git a/app/Protocols/General.php b/app/Protocols/General.php index 4077a52..a409105 100644 --- a/app/Protocols/General.php +++ b/app/Protocols/General.php @@ -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'); diff --git a/app/Protocols/Loon.php b/app/Protocols/Loon.php index a8fd35d..e54384e 100644 --- a/app/Protocols/Loon.php +++ b/app/Protocols/Loon.php @@ -32,13 +32,13 @@ class Loon extends AbstractProtocol $uri .= self::buildShadowsocks($item['password'], $item); } if ($item['type'] === 'vmess') { - $uri .= self::buildVmess($user['uuid'], $item); + $uri .= self::buildVmess($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, $user); + $uri .= self::buildHysteria($item['password'], $item, $user); } } return response($uri) diff --git a/app/Protocols/QuantumultX.php b/app/Protocols/QuantumultX.php index 7af4679..30d69c9 100644 --- a/app/Protocols/QuantumultX.php +++ b/app/Protocols/QuantumultX.php @@ -18,10 +18,10 @@ class QuantumultX extends AbstractProtocol $uri .= self::buildShadowsocks($item['password'], $item); } if ($item['type'] === 'vmess') { - $uri .= self::buildVmess($user['uuid'], $item); + $uri .= self::buildVmess($item['password'], $item); } if ($item['type'] === 'trojan') { - $uri .= self::buildTrojan($user['uuid'], $item); + $uri .= self::buildTrojan($item['password'], $item); } } return response(base64_encode($uri)) diff --git a/app/Protocols/Shadowrocket.php b/app/Protocols/Shadowrocket.php index ca508e8..4b99441 100644 --- a/app/Protocols/Shadowrocket.php +++ b/app/Protocols/Shadowrocket.php @@ -39,25 +39,25 @@ class Shadowrocket extends AbstractProtocol $uri .= self::buildShadowsocks($item['password'], $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'] === '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'] === 'tuic') { - $uri .= self::buildTuic($user['uuid'], $item); + $uri .= self::buildTuic($item['password'], $item); } if ($item['type'] === 'anytls') { - $uri .= self::buildAnyTLS($user['uuid'], $item); + $uri .= self::buildAnyTLS($item['password'], $item); } if ($item['type'] === 'socks') { - $uri .= self::buildSocks($user['uuid'], $item); + $uri .= self::buildSocks($item['password'], $item); } } return response(base64_encode($uri)) diff --git a/app/Protocols/Shadowsocks.php b/app/Protocols/Shadowsocks.php index 4f14796..6ed9b79 100644 --- a/app/Protocols/Shadowsocks.php +++ b/app/Protocols/Shadowsocks.php @@ -47,7 +47,7 @@ class Shadowsocks extends AbstractProtocol "remarks" => $server['name'], "server" => $server['host'], "server_port" => $server['port'], - "password" => $user['uuid'], + "password" => $item['password'], "method" => data_get($server, 'protocol_settings.cipher') ]; return $config; diff --git a/app/Protocols/Stash.php b/app/Protocols/Stash.php index 26035fc..d9f9ae5 100644 --- a/app/Protocols/Stash.php +++ b/app/Protocols/Stash.php @@ -85,35 +85,35 @@ class Stash extends AbstractProtocol array_push($proxies, $item['name']); } if ($item['type'] === 'vmess') { - array_push($proxy, self::buildVmess($user['uuid'], $item)); + array_push($proxy, self::buildVmess($item['password'], $item)); array_push($proxies, $item['name']); } if ($item['type'] === 'vless') { - array_push($proxy, $this->buildVless($user['uuid'], $item)); + array_push($proxy, $this->buildVless($item['password'], $item)); array_push($proxies, $item['name']); } if ($item['type'] === 'hysteria') { - array_push($proxy, self::buildHysteria($user['uuid'], $item)); + array_push($proxy, self::buildHysteria($item['password'], $item)); array_push($proxies, $item['name']); } if ($item['type'] === 'trojan') { - array_push($proxy, self::buildTrojan($user['uuid'], $item)); + array_push($proxy, self::buildTrojan($item['password'], $item)); array_push($proxies, $item['name']); } if ($item['type'] === 'tuic') { - array_push($proxy, self::buildTuic($user['uuid'], $item)); + array_push($proxy, self::buildTuic($item['password'], $item)); array_push($proxies, $item['name']); } // if ($item['type'] === 'anytls') { - // array_push($proxy, self::buildAnyTLS($user['uuid'], $item)); + // array_push($proxy, self::buildAnyTLS($item['password'], $item)); // array_push($proxies, $item['name']); // } if ($item['type'] === 'socks') { - array_push($proxy, self::buildSocks5($user['uuid'], $item)); + array_push($proxy, self::buildSocks5($item['password'], $item)); array_push($proxies, $item['name']); } if ($item['type'] === 'http') { - array_push($proxy, self::buildHttp($user['uuid'], $item)); + array_push($proxy, self::buildHttp($item['password'], $item)); array_push($proxies, $item['name']); } } diff --git a/app/Protocols/Surfboard.php b/app/Protocols/Surfboard.php index 9f9152b..edf0d3a 100644 --- a/app/Protocols/Surfboard.php +++ b/app/Protocols/Surfboard.php @@ -40,13 +40,13 @@ class Surfboard extends AbstractProtocol } if ($item['type'] === 'vmess') { // [Proxy] - $proxies .= self::buildVmess($user['uuid'], $item); + $proxies .= self::buildVmess($item['password'], $item); // [Proxy Group] $proxyGroup .= $item['name'] . ', '; } if ($item['type'] === 'trojan') { // [Proxy] - $proxies .= self::buildTrojan($user['uuid'], $item); + $proxies .= self::buildTrojan($item['password'], $item); // [Proxy Group] $proxyGroup .= $item['name'] . ', '; } diff --git a/app/Protocols/Surge.php b/app/Protocols/Surge.php index 0a248b3..7cdd42d 100644 --- a/app/Protocols/Surge.php +++ b/app/Protocols/Surge.php @@ -46,15 +46,15 @@ class Surge extends AbstractProtocol $proxyGroup .= $item['name'] . ', '; } if ($item['type'] === 'vmess') { - $proxies .= self::buildVmess($user['uuid'], $item); + $proxies .= self::buildVmess($item['password'], $item); $proxyGroup .= $item['name'] . ', '; } if ($item['type'] === 'trojan') { - $proxies .= self::buildTrojan($user['uuid'], $item); + $proxies .= self::buildTrojan($item['password'], $item); $proxyGroup .= $item['name'] . ', '; } if ($item['type'] === 'hysteria') { - $proxies .= self::buildHysteria($user['uuid'], $item); + $proxies .= self::buildHysteria($item['password'], $item); $proxyGroup .= $item['name'] . ', '; } } diff --git a/app/Services/ServerService.php b/app/Services/ServerService.php index 3fe250c..15eb63e 100644 --- a/app/Services/ServerService.php +++ b/app/Services/ServerService.php @@ -52,7 +52,7 @@ class ServerService } else { $server->port = (int) $server->port; } - $server->password = $server->generateShadowsocksPassword($user); + $server->password = $server->generateServerPassword($user); return $server; })->toArray();