mirror of
				https://github.com/v2board/v2board.git
				synced 2025-10-31 09:21:46 +08:00 
			
		
		
		
	update: support shadowsocks app subscribe
This commit is contained in:
		| @@ -44,7 +44,7 @@ class ClientController extends Controller | ||||
|                     die($this->surge($user, $servers['vmess'], $servers['trojan'])); | ||||
|                 } | ||||
|                 if (strpos($_SERVER['HTTP_USER_AGENT'], 'shadowrocket') !== false) { | ||||
|                     die($this->shadowrocket($user, $servers['vmess'], $servers['trojan'])); | ||||
|                     die($this->shadowrocket($user, $servers['shadowsocks'], $servers['vmess'], $servers['trojan'])); | ||||
|                 } | ||||
|             } | ||||
|             die($this->origin($user, $servers['shadowsocks'], $servers['vmess'], $servers['trojan'])); | ||||
| @@ -71,7 +71,7 @@ class ClientController extends Controller | ||||
|         return base64_encode($uri); | ||||
|     } | ||||
|  | ||||
|     private function shadowrocket($user, $vmess = [], $trojan = []) | ||||
|     private function shadowrocket($user, $shadowsocks = [], $vmess = [], $trojan = []) | ||||
|     { | ||||
|         $uri = ''; | ||||
|         //display remaining traffic and expire date | ||||
| @@ -80,6 +80,9 @@ class ClientController extends Controller | ||||
|         $totalTraffic = round($user->transfer_enable / (1024*1024*1024), 2); | ||||
|         $expiredDate = date('Y-m-d', $user->expired_at); | ||||
|         $uri .= "STATUS=🚀↑:{$upload}GB,↓:{$download}GB,TOT:{$totalTraffic}GB💡Expires:{$expiredDate}\r\n"; | ||||
|         foreach ($shadowsocks as $item) { | ||||
|             $uri .= Shadowrocket::buildShadowsocks($user->uuid, $item); | ||||
|         } | ||||
|         foreach ($vmess as $item) { | ||||
|             $uri .= Shadowrocket::buildVmess($user->uuid, $item); | ||||
|         } | ||||
|   | ||||
| @@ -5,6 +5,17 @@ namespace App\Utils; | ||||
|  | ||||
| class Shadowrocket | ||||
| { | ||||
|     public static function buildShadowsocks($password, $server) | ||||
|     { | ||||
|         $name = rawurlencode($server->name); | ||||
|         $str = str_replace( | ||||
|             ['+', '/', '='], | ||||
|             ['-', '_', ''], | ||||
|             base64_encode("{$server->cipher}:{$password}") | ||||
|         ); | ||||
|         return "ss://{$str}@{$server->host}:{$server->port}#{$name}\r\n"; | ||||
|     } | ||||
|  | ||||
|     public static function buildVmess($uuid, $server) | ||||
|     { | ||||
|         $userinfo = base64_encode('auto:' . $uuid . '@' . $server->host . ':' . $server->port); | ||||
| @@ -31,12 +42,12 @@ class Shadowrocket | ||||
|  | ||||
|     public static function buildTrojan($password, $server) | ||||
|     { | ||||
|         $server->name = rawurlencode($server->name); | ||||
|         $name = rawurlencode($server->name); | ||||
|         $query = http_build_query([ | ||||
|             'allowInsecure' => $server->allow_insecure, | ||||
|             'peer' => $server->server_name | ||||
|         ]); | ||||
|         $uri = "trojan://{$password}@{$server->host}:{$server->port}?{$query}&tfo=1#{$server->name}"; | ||||
|         $uri = "trojan://{$password}@{$server->host}:{$server->port}?{$query}&tfo=1#{$name}"; | ||||
|         $uri .= "\r\n"; | ||||
|         return $uri; | ||||
|     } | ||||
|   | ||||
| @@ -10,12 +10,13 @@ class URLSchemes | ||||
| { | ||||
|     public static function buildShadowsocks(ServerShadowsocks $server, User $user) | ||||
|     { | ||||
|         $name = rawurlencode($server->name); | ||||
|         $str = str_replace( | ||||
|             ['+', '/', '='], | ||||
|             ['-', '_', ''], | ||||
|             base64_encode("{$server->cipher}:{$user->uuid}") | ||||
|         ); | ||||
|         return "ss://{$str}@{$server->host}:{$server->port}#{$server->name}\r\n"; | ||||
|         return "ss://{$str}@{$server->host}:{$server->port}#{$name}\r\n"; | ||||
|     } | ||||
|  | ||||
|  | ||||
| @@ -44,12 +45,13 @@ class URLSchemes | ||||
|  | ||||
|     public static function buildTrojan(ServerTrojan $server, User $user) | ||||
|     { | ||||
|         $name = rawurlencode($server->name); | ||||
|         $query = http_build_query([ | ||||
|             'allowInsecure' => $server->allow_insecure, | ||||
|             'peer' => $server->server_name, | ||||
|             'sni' => $server->server_name | ||||
|         ]); | ||||
|         $uri = "trojan://{$user->uuid}@{$server->host}:{$server->port}?{$query}#{$server->name}"; | ||||
|         $uri = "trojan://{$user->uuid}@{$server->host}:{$server->port}?{$query}#{$name}"; | ||||
|         $uri .= "\r\n"; | ||||
|         return $uri; | ||||
|     } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user