$server['name'], 'alterId' => $server['alter_id'] ]; if ($server['tls']) { $tlsSettings = json_decode($server['tlsSettings'], true); $config['tls'] = 1; if (isset($tlsSettings['serverName'])) $config['peer'] = $tlsSettings['serverName']; if (isset($tlsSettings['allowInsecure'])) $config['allowInsecure'] = 1; } if ($server['network'] === 'ws') { $wsSettings = json_decode($server['networkSettings'], true); $config['obfs'] = "websocket"; if (isset($wsSettings['path'])) $config['path'] = $wsSettings['path']; if (isset($wsSettings['headers']['Host'])) $config['obfsParam'] = $wsSettings['headers']['Host']; } $query = http_build_query($config, null, '&', PHP_QUERY_RFC3986); $uri = "vmess://{$userinfo}?{$query}&tfo=1"; $uri .= "\r\n"; return $uri; } public static function buildTrojan($password, $server) { $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#{$name}"; $uri .= "\r\n"; return $uri; } }