Wire BanditURLOverrides through to MutableURLTest#333
Wire BanditURLOverrides through to MutableURLTest#333myleshorton wants to merge 13 commits intomainfrom
Conversation
Pass per-proxy callback URLs from config response through to sing-box MutableURLTest URLOverrides, enabling per-ISP bandit proxy assignment on the client side. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR threads BanditURLOverrides from the loaded config through to Lantern’s MutableURLTestOutboundOptions.URLOverrides, enabling per-proxy URL test callback overrides to reach the sing-box mutable URL test implementation.
Changes:
- Extend
urlTestOutbound()andappendGroupOutbounds()to accepturlOverrides map[string]stringand forward it intoMutableURLTestOutboundOptions.URLOverrides. - Pass
cfg.BanditURLOverridesinto the Lantern server group’s URL test outbound; keep User/All URL test outbounds usingnil. - Update module dependencies (
go.mod/go.sum) to versions/branches that include the new options surface.
Reviewed changes
Copilot reviewed 4 out of 5 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| vpn/vpn.go | Updates pre-start URL test outbound construction to the new urlTestOutbound signature (currently passing nil overrides). |
| vpn/tunnel_test.go | Updates tests to call urlTestOutbound with the new signature. |
| vpn/boxoptions.go | Wires BanditURLOverrides into the Lantern group’s MutableURLTest outbound and adds URLOverrides to the outbound options. |
| go.mod | Bumps common/lantern-box (and other deps) to versions needed for the new override option surface. |
| go.sum | Corresponding checksum updates after dependency changes. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Forward cfg.BanditURLOverrides into the preTest urlTestOutbound so bandit callback URLs are used during pre-start URL testing, not just during normal operation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Verify that URLOverrides from config.BanditURLOverrides are correctly forwarded into the auto-lantern MutableURLTestOutboundOptions. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Periodically reports per-outbound throughput to the bandit system so it can optimize for actual download speed, not just connectivity. Interval and body size are randomized to avoid creating a fingerprintable signal. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…sts" This reverts commit 7b3bd80.
|
@myleshorton are the |
Basically each config response is a test for each "arm" of the multi-armed bandit, so each URL has a token for that test that allows the server to identify it when the client makes the callback. So each proxy gets its own token essentially. |
|
Gotcha. Then they'll become invalid as soon as we receive a new config... We could add a field, ( |
|
I don't quite understand the problem sorry. What's bad about them becoming invalid? |
|
When a new config is received, won't it have new override URLs that are specific to the new proxies? |
|
Yeah, but that's what we want -- that means the server wants to test those. |
Right, so when we get a new config while the VPN is connected, we update the outbounds/endpoints and just add the new tags to the |
|
Oh sorry I misunderstood! OK, I should be able to fix that. |
Persist URLOverrides in servers.Options so they survive file-watcher reloads, and call SetURLOverrides in updateGroup so new proxies from a config refresh get their bandit callback URLs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
OK that last commit implements a fairly straightforward solution I think? |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 8 out of 9 changed files in this pull request and generated 2 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Fix URLOverrides lost through removeDuplicates: stash overrides before dedup and pass the stashed value to SetURLOverrides - Persist URLOverrides through servers.Manager: clone in setServers and Servers so overrides survive save/load round-trips - go.sum updated by go mod tidy Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The merge() function rebuilds Options without carrying URLOverrides, so AddServers would silently drop them. Merge incoming URLOverrides into the existing group's map alongside Locations. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
# Conflicts: # go.mod # go.sum # vpn/tunnel.go
Update lantern-box to v0.0.6-0.20260304185010-31f62b643c0e (latest) and resolve go.mod/go.sum merge conflicts. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Summary
BanditURLOverridesfrom config response through to sing-boxMutableURLTestOutboundOptions.URLOverridesurlTestOutbound()andappendGroupOutbounds()to accept and forwardurlOverrides map[string]stringnilcommonandlantern-boxbandit-url-overrides branchesTest plan
go vet ./vpn/...passesTestConnectionandTestUpdateServersstill pass🤖 Generated with Claude Code