Shuffle/e2e/support/tcp-forward.mjs
cschlaefke 23816377a5
Some checks failed
CI / flutter (pull_request) Successful in 1m15s
CI / web-build (pull_request) Successful in 54s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Successful in 30s
CI / e2e (pull_request) Failing after 4m3s
ci(e2e): add Playwright e2e job on docker-host with throttle GoTrue and artifacts
Refs #38

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 10:45:17 +01:00

40 lines
1.3 KiB
JavaScript

// Einfacher TCP-Relay fuer CI unter Docker-in-Docker (Issue #38, D2).
//
// Die Supabase-Ports (Kong 54321, Postgres 54322, Mailpit 54324, Extra-GoTrue 9998) liegen im dind,
// nicht im Job-Container. Die Tests und die Web-App erwarten 127.0.0.1. Dieses Skript leitet
// 127.0.0.1:<port> an <host>:<port> weiter (HTTP und Postgres, rein TCP).
//
// Aufruf: node tcp-forward.mjs <ziel-host> <port> [<port> ...]
import net from 'node:net';
const [host, ...ports] = process.argv.slice(2);
if (!host || ports.length === 0) {
console.error('Aufruf: node tcp-forward.mjs <ziel-host> <port> [<port> ...]');
process.exit(2);
}
for (const p of ports) {
const port = Number(p);
if (!Number.isInteger(port) || port < 1 || port > 65535) {
console.error(`Ungueltiger Port: ${p}`);
process.exit(2);
}
net
.createServer((client) => {
const upstream = net.connect(port, host);
client.pipe(upstream).pipe(client);
const close = () => {
client.destroy();
upstream.destroy();
};
client.on('error', close);
upstream.on('error', close);
client.on('close', close);
upstream.on('close', close);
})
.on('error', (err) => {
console.error(`Relay ${port}: ${err.message}`);
process.exit(1);
})
.listen(port, '127.0.0.1', () => console.log(`127.0.0.1:${port} -> ${host}:${port}`));
}