UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

49 lines (48 loc) 2.45 kB
import { i as formatErrorMessage } from "./errors-BXgSefBE.js"; import { i as enableTailscaleServe, n as disableTailscaleServe, o as getTailnetHostname, r as enableTailscaleFunnel, s as hasTailscaleFunnelRouteForPort, t as disableTailscaleFunnel } from "./tailscale-BOFw04AY.js"; import { n as resolveTailscalePublishedHost } from "./tailscale-status-B3whvNX4.js"; //#region src/gateway/server-tailscale.ts async function startGatewayTailscaleExposure(params) { if (params.tailscaleMode === "off") return null; const serviceName = params.tailscaleMode === "serve" ? params.serviceName?.trim() || void 0 : void 0; try { if (params.tailscaleMode === "serve") { if (params.preserveFunnel === true) { if (await hasTailscaleFunnelRouteForPort(params.port)) { const resetSuffix = params.resetOnExit ? "; resetOnExit is a no-op because no Serve route was applied this run" : ""; params.logTailscale.info(`serve skipped: preserving externally configured Tailscale Funnel for port ${params.port}${resetSuffix}`); return null; } } if (serviceName) await enableTailscaleServe(params.port, void 0, serviceName); else await enableTailscaleServe(params.port); } else await enableTailscaleFunnel(params.port); const host = await getTailnetHostname().catch(() => null); if (host) { const uiPath = params.controlUiBasePath ? `${params.controlUiBasePath}/` : "/"; const publicHost = resolveTailscalePublishedHost({ tailscaleMode: params.tailscaleMode, tailnetHost: host, serviceName }); if (publicHost) { const serviceLabel = serviceName ? ` for ${serviceName}` : ""; params.logTailscale.info(`${params.tailscaleMode} enabled${serviceLabel}: https://${publicHost}${uiPath} (WS via wss://${publicHost})`); } else params.logTailscale.info(`${params.tailscaleMode} enabled`); } else params.logTailscale.info(`${params.tailscaleMode} enabled`); } catch (err) { params.logTailscale.warn(`${params.tailscaleMode} failed: ${formatErrorMessage(err)}`); } if (!params.resetOnExit) return null; return async () => { try { if (params.tailscaleMode === "serve") if (serviceName) await disableTailscaleServe(void 0, serviceName); else await disableTailscaleServe(); else await disableTailscaleFunnel(); } catch (err) { params.logTailscale.warn(`${params.tailscaleMode} cleanup failed: ${formatErrorMessage(err)}`); } }; } //#endregion export { startGatewayTailscaleExposure };