Files
pikasTech-HWLAB/cmd/hwlab-tunnel-client/main.mjs
T
2026-05-22 11:16:29 +08:00

54 lines
1.4 KiB
JavaScript

#!/usr/bin/env node
import {
createServiceServer,
listen,
parsePort,
resolveHostPort
} from "../../internal/dev-entrypoint/http.mjs";
const serviceId = "hwlab-tunnel-client";
const mode = process.env.HWLAB_TUNNEL_MODE || "frp-client";
const serverAddress = process.env.HWLAB_FRP_SERVER_ADDR || "74.48.78.17";
const publicPort = parsePort(process.env.HWLAB_FRP_PUBLIC_PORT, 16667);
const webPublicPort = parsePort(process.env.HWLAB_FRP_WEB_PUBLIC_PORT, 16666);
const localService = process.env.HWLAB_TUNNEL_LOCAL_SERVICE || "hwlab-edge-proxy";
const localPort = parsePort(process.env.HWLAB_TUNNEL_LOCAL_PORT, 6667);
const { host, port } = resolveHostPort({
listenEnv: "HWLAB_TUNNEL_LISTEN",
hostEnv: "HWLAB_TUNNEL_HOST",
portEnv: "HWLAB_TUNNEL_PORT",
fallbackPort: 7402
});
function tunnelState() {
return {
serviceId,
environment: "dev",
status: "configured",
mode,
reverseLink: {
direction: "d601-to-master",
serverAddress,
publicPort,
webPublicPort,
localService,
localPort
},
liveConnection: "not_started_by_entrypoint"
};
}
const routes = new Map();
routes.set("GET /status", () => tunnelState());
routes.set("GET /tunnel", () => tunnelState().reverseLink);
listen(
createServiceServer({
serviceId,
role: "frp-client",
routes,
details: () => tunnelState()
}),
{ serviceId, host, port }
);