diff --git a/instance/src/bin/proxy.ts b/instance/src/bin/proxy.ts index c291337..16611d1 100755 --- a/instance/src/bin/proxy.ts +++ b/instance/src/bin/proxy.ts @@ -12,15 +12,19 @@ async function main() { console.log("[proxy] listening on port", from_port, "redirecting to", to_ip, "port", to_port); for await (const connection of server) { - try { - const client = await Deno.connect({ transport: "tcp", hostname: to_ip, port: parseInt(to_port) }); - const promise_connection_done = connection.readable.pipeTo(client.writable); - const promise_client_done = client.readable.pipeTo(connection.writable); - await Promise.all([promise_client_done, promise_connection_done]); - } catch (_) { /* isok */ } + serve(to_ip, to_port, connection); } } +async function serve(to_ip: string, to_port: string, connection: Deno.Conn) { + try { + const client = await Deno.connect({ transport: "tcp", hostname: to_ip, port: parseInt(to_port) }); + const promise_connection_done = connection.readable.pipeTo(client.writable); + const promise_client_done = client.readable.pipeTo(connection.writable); + await Promise.all([promise_client_done, promise_connection_done]); + } catch (_) { /* isok */ } +} + export function proxy_command(from_port: number, to_ip: string, to_port: number) { const path = new URL("", import.meta.url).pathname; const args = [from_port, to_ip, to_port].map((v) => v.toString());