Repository navigation
Conversation
…al QR, run public_url override (#423) - cloudflare.rs: Cloudflared trait + SystemCloudflared {bin, home}; pure parsers for the Quick Tunnel URL (anchored, T0a fixture), route dns (B2: FQDN must equal the host, else WrongZone{stray}), tunnel list/create/token. Quick Tunnel passes --protocol http2 and keeps draining output (I5). - qr.rs: render_qr (Unicode half-blocks, 4-module quiet zone). - gateway.yml tunnel_ingress: local -> tunnel agent and manual run lines append --url http://127.0.0.1:<port> (B1); absent = unchanged. - mod.rs: RunOverrides + effective_config (re-validates) + run_with. - tunnel.rs: manual_run_lines extracted. create/list/route-dns/token fixtures are ASSUMED until the T0b probe.
… reap); login stays unbounded
…Quick Tunnel URL source; reject local ingress on port 0; no relative cloudflared fallback
…(one test's panic killed other tests' children); pid files written atomically
…ops inherited fds; hook-path embed gets the same (#361)
…holds a write fd on them (ETXTBSY on Linux CI)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
v3.5.2 track T3 — building blocks for
onebrain gateway setup.Closes #459
Closes #361
Refs #423
Cloudflareddriver: login (unbounded, browser) · list/create/route dns/token (60 s timeout, kill + reap) · Quick Tunnel spawn (URL parsed from stderr, output drained for the child's life, killed on Drop and from a panic hook — release ispanic = "abort"; Windows panic gap documented)route dnsclassifier: Created / AlreadyRouted / ConflictingRecord / WrongZone{stray} (FQDN ≠ host) / Failed — never trusts unrecognised exit-0 outputRunOverrides { public_url, default_vault }→run_with;effective_configre-validates (error names the Quick Tunnel URL); host guard + issuer follow the override;/approvalsuntouchedtunnel_ingress: local→ tunnel agent + manual run line add--url http://127.0.0.1:<port>;local+port: 0rejected; dashboard tunnels byte-identicaldaemon startcan hang indefinitely (macOS CI, intermittent) #361 (found by this PR's macOS CI hang):daemon start's detached__runmarks every inherited fd ≥ 3 close-on-exec inpre_exec— on macOS std creates pipes withpipe()then sets CLOEXEC separately, so a concurrent fork leaked a caller's pipe into the daemon andCommand::output()hung forever (lsof-proven; stress 3/60 hangs on main, 0/100 with the fix, 2/60 with the call site removed)qrcode0.14, no default features)Evidence: spoke: workspace 4167 ✓, clippy 1.98 ×2 + fmt exit 0,
coverage.sh --ci-gate94.89%, 25 sabotages red→green. Hub: gateway:: 678 ✓, clippy--no-default-featuresexit 0. Cold privilege-boundary review: no blocker; findings fixed.Behavioral audit (debug binary, scratch copy of real
~/.onebrain, NO_ACTIVATE): dashboard tunnel plist byte-identical to v3.5.1's render;tunnel_ingress: local→--url http://127.0.0.1:17799;local+port: 0→ hinted refusal (exit 1); real LaunchAgent untouched.🤖 Generated with Claude Code
https://claude.ai/code/session_01TmbNNd9q4jitHGvdtTmK6V