fix(gmail): keep tailscale serve path at root
The default Gmail hook path configured by `clawdbot hooks gmail setup` is `/gmail-pubsub`. Tailscale strips the mount path before proxying, so the request lands on `/` and the hook 404s under the default configuration. When Tailscale is enabled, always listen on `/` internally and keep the public URL on the configured path (defaulting to `/gmail-pubsub`). This makes default and custom paths work reliably. Alternative (not implemented here): call tailscale with a full target URL so the backend keeps the path, e.g. `tailscale funnel --set-path /gmail-pubsub http://127.0.0.1:8788/gmail-pubsub`. We did not take this path because it requires changing the CLI invocation to pass URLs (not ports) plus extra validation, which is a larger behavior change.
This commit is contained in:
committed by
Peter Steinberger
parent
0de3bb36d5
commit
26ce65995f
@@ -134,6 +134,11 @@ export async function runGmailSetup(opts: GmailSetupOptions) {
|
||||
const serveBind = opts.bind ?? DEFAULT_GMAIL_SERVE_BIND;
|
||||
const servePort = opts.port ?? DEFAULT_GMAIL_SERVE_PORT;
|
||||
const configuredServePath = opts.path ?? baseConfig.hooks?.gmail?.serve?.path;
|
||||
const normalizedServePath =
|
||||
typeof configuredServePath === "string" &&
|
||||
configuredServePath.trim().length > 0
|
||||
? normalizeServePath(configuredServePath)
|
||||
: DEFAULT_GMAIL_SERVE_PATH;
|
||||
|
||||
const includeBody = opts.includeBody ?? true;
|
||||
const maxBytes = opts.maxBytes ?? DEFAULT_GMAIL_MAX_BYTES;
|
||||
@@ -142,18 +147,14 @@ export async function runGmailSetup(opts: GmailSetupOptions) {
|
||||
|
||||
const tailscaleMode = opts.tailscale ?? "funnel";
|
||||
// Tailscale strips the path before proxying; keep a public path while gog
|
||||
// listens on "/" unless the user explicitly configured a serve path.
|
||||
// listens on "/" whenever Tailscale is enabled.
|
||||
const servePath = normalizeServePath(
|
||||
tailscaleMode !== "off" && !configuredServePath
|
||||
? "/"
|
||||
: (configuredServePath ?? DEFAULT_GMAIL_SERVE_PATH),
|
||||
tailscaleMode !== "off" ? "/" : normalizedServePath,
|
||||
);
|
||||
const tailscalePath = normalizeServePath(
|
||||
opts.tailscalePath ??
|
||||
baseConfig.hooks?.gmail?.tailscale?.path ??
|
||||
(tailscaleMode !== "off"
|
||||
? (configuredServePath ?? DEFAULT_GMAIL_SERVE_PATH)
|
||||
: servePath),
|
||||
(tailscaleMode !== "off" ? normalizedServePath : servePath),
|
||||
);
|
||||
|
||||
await runGcloud(["config", "set", "project", projectId, "--quiet"]);
|
||||
|
||||
Reference in New Issue
Block a user