Skip to content

Commit 946bd66

Browse files
authored
migrate to sing-box v1.12.12 (#64)
* migrate to sing-box v1.12.12 * update build/run tags * forgot quotes for build cmd * go mod tidy * fix infinite loop in Level if disabled * point wireguard-go and sing to lantern-main branch
1 parent b05d56d commit 946bd66

File tree

21 files changed

+441
-970
lines changed

21 files changed

+441
-970
lines changed

cmd/Makefile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1+
TAGS = with_gvisor,with_quic,with_dhcp,with_wireguard,with_utls,with_acme,with_clash_api,with_tailscale
2+
13
build:
2-
go build -v -tags \
3-
"with_gvisor,with_dhcp,with_wireguard,with_reality_server,with_clash_api,with_quic,with_utls,with_acme" \
4-
-o lantern-box .
4+
go build -v -tags "$(TAGS)" -o lantern-box .
55
run:
6-
go run -tags=with_gvisor,with_dhcp,with_wireguard,with_reality_server,with_clash_api,with_quic,with_utls,with_acme . run --config $(config)
6+
go run -tags=$(TAGS) . run --config $(config)

cmd/main.go

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,9 @@ import (
55
"fmt"
66
"os"
77

8-
box "github.com/sagernet/sing-box"
98
"github.com/spf13/cobra"
109

11-
"github.com/getlantern/lantern-box/protocol"
10+
box "github.com/getlantern/lantern-box"
1211
)
1312

1413
var globalCtx context.Context
@@ -23,13 +22,7 @@ var rootCmd = &cobra.Command{
2322
}
2423

2524
func preRun(cmd *cobra.Command, args []string) {
26-
inboundRegistry, outboundRegistry, endpointRegistry := protocol.GetRegistries()
27-
globalCtx = box.Context(
28-
context.Background(),
29-
inboundRegistry,
30-
outboundRegistry,
31-
endpointRegistry,
32-
)
25+
globalCtx = box.BaseContext()
3326
}
3427

3528
func main() {

context.go

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,39 @@ package box
33
import (
44
"context"
55

6-
box "github.com/sagernet/sing-box"
6+
"github.com/sagernet/sing-box/experimental/libbox"
77

88
"github.com/getlantern/lantern-box/protocol"
99
)
1010

11-
// BoxContext returns a box context with the registered inbound, outbound, and endpoint protocols.
12-
func BoxContext() context.Context {
13-
in, out, ep := protocol.GetRegistries()
14-
return box.Context(context.Background(), in, out, ep)
11+
type PlatformInterface interface {
12+
LocalDNSTransport() libbox.LocalDNSTransport
13+
}
14+
15+
// BaseContext returns a context with all sing-box and lantern-box protocols and DNS transports registered.
16+
func BaseContext() context.Context {
17+
return BaseContextWithDNSTransport(nil)
18+
}
19+
20+
// BaseContextWithDNSTransport returns the [BaseContext] and registers the [libbox.LocalDNSTransport]
21+
// provided by the given [PlatformInterface].
22+
func BaseContextWithDNSTransport(platformInterface PlatformInterface) context.Context {
23+
var pi libbox.PlatformInterface
24+
if platformInterface != nil {
25+
pi = &platformAdapter{pltIfc: platformInterface}
26+
}
27+
ctx := libbox.BaseContext(pi)
28+
return protocol.RegisterProtocols(ctx)
29+
}
30+
31+
// platformAdapter is a helper to adapt PlatformInterface to libbox.PlatformInterface and satisfy
32+
// libbox.BaseContext, which only uses LocalDNSTransport. This avoids misleading callers into thinking
33+
// they need to implement the full libbox.PlatformInterface when only LocalDNSTransport is required.
34+
type platformAdapter struct {
35+
libbox.PlatformInterface
36+
pltIfc PlatformInterface
37+
}
38+
39+
func (p *platformAdapter) LocalDNSTransport() libbox.LocalDNSTransport {
40+
return p.pltIfc.LocalDNSTransport()
1541
}

go.mod

Lines changed: 85 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,19 @@ go 1.23.6
44

55
toolchain go1.24.1
66

7-
replace github.com/sagernet/sing => github.com/getlantern/sing v0.6.13-0.20250812195008-c4468d0c7c42
7+
replace github.com/sagernet/sing => github.com/getlantern/sing v0.7.14-0.20251208213946-adbf4abe8692
88

9-
replace github.com/sagernet/sing-box => github.com/getlantern/sing-box-minimal v1.11.15-lantern.0.20250820161012-d4dd96e95ed6
9+
replace github.com/sagernet/sing-box => github.com/getlantern/sing-box-minimal v1.12.13-0.20251205011046-be268b083378
1010

11-
replace github.com/tetratelabs/wazero => github.com/refraction-networking/wazero v1.7.1-w
11+
replace github.com/sagernet/wireguard-go => github.com/getlantern/wireguard-go v0.0.1-beta.7.0.20251208214020-d78e69f1eff4
1212

13-
replace github.com/sagernet/wireguard-go => github.com/getlantern/wireguard-go v0.0.1-beta.5.0.20250310145906-45220d8aec77
13+
replace github.com/tetratelabs/wazero => github.com/refraction-networking/wazero v1.7.1-w
1414

1515
// replace github.com/sagernet/sing-box => ../sing-box-minimal
16+
//
17+
// replace github.com/sagernet/sing => ../sing
18+
//
19+
// replace github.com/sagernet/wireguard-go => ../wireguard-go
1620

1721
require (
1822
github.com/Jigsaw-Code/outline-sdk v0.0.19
@@ -21,25 +25,25 @@ require (
2125
github.com/getlantern/lantern-water v0.0.0-20250331153903-07abebe611e8
2226
github.com/gobwas/ws v1.4.0
2327
github.com/refraction-networking/water v0.7.1-alpha
24-
github.com/sagernet/sing v0.6.10
28+
github.com/sagernet/sing v0.7.13
2529
github.com/sagernet/sing-box v1.11.5
26-
github.com/sagernet/sing-dns v0.4.6
27-
github.com/sagernet/wireguard-go v0.0.1-beta.7
2830
github.com/spf13/cobra v1.10.1
2931
github.com/stretchr/testify v1.10.0
3032
github.com/tetratelabs/wazero v1.7.3
3133
go.opentelemetry.io/otel v1.35.0
3234
go.opentelemetry.io/otel/metric v1.35.0
3335
go.opentelemetry.io/otel/trace v1.35.0
34-
go4.org/netipx v0.0.0-20231129151722-fdeea329fbba
3536
gopkg.in/yaml.v3 v3.0.1
3637
)
3738

3839
require (
40+
filippo.io/edwards25519 v1.1.0 // indirect
3941
github.com/RoaringBitmap/roaring v1.2.3 // indirect
4042
github.com/ajg/form v1.5.1 // indirect
4143
github.com/ajwerner/btree v0.0.0-20211221152037-f427b3e689c0 // indirect
44+
github.com/akutz/memconn v0.1.0 // indirect
4245
github.com/alecthomas/atomic v0.1.0-alpha2 // indirect
46+
github.com/alexbrainman/sspi v0.0.0-20231016080023-1a75b4708caa // indirect
4347
github.com/anacrolix/chansync v0.3.0 // indirect
4448
github.com/anacrolix/dht/v2 v2.19.2-0.20221121215055-066ad8494444 // indirect
4549
github.com/anacrolix/envpprof v1.3.0 // indirect
@@ -57,55 +61,74 @@ require (
5761
github.com/anacrolix/upnp v0.1.3-0.20220123035249-922794e51c96 // indirect
5862
github.com/anacrolix/utp v0.1.0 // indirect
5963
github.com/andybalholm/brotli v1.1.0 // indirect
64+
github.com/anytls/sing-anytls v0.0.11 // indirect
6065
github.com/bahlo/generic-list-go v0.2.0 // indirect
6166
github.com/benbjohnson/immutable v0.3.0 // indirect
62-
github.com/bits-and-blooms/bitset v1.2.2 // indirect
67+
github.com/bits-and-blooms/bitset v1.13.0 // indirect
6368
github.com/blang/vfs v1.0.0 // indirect
6469
github.com/bradfitz/iter v0.0.0-20191230175014-e8f45d346db8 // indirect
65-
github.com/caddyserver/certmagic v0.20.0 // indirect
66-
github.com/cloudflare/circl v1.6.0 // indirect
70+
github.com/caddyserver/certmagic v0.23.0 // indirect
71+
github.com/caddyserver/zerossl v0.1.3 // indirect
72+
github.com/coder/websocket v1.8.13 // indirect
73+
github.com/coreos/go-iptables v0.7.1-0.20240112124308-65c67c9f46e6 // indirect
6774
github.com/cretz/bine v0.2.0 // indirect
6875
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
76+
github.com/dblohm7/wingoes v0.0.0-20240119213807-a09d6be7affa // indirect
77+
github.com/digitalocean/go-smbios v0.0.0-20180907143718-390a4f403a8e // indirect
6978
github.com/dustin/go-humanize v1.0.0 // indirect
7079
github.com/edsrzf/mmap-go v1.1.0 // indirect
7180
github.com/fsnotify/fsnotify v1.7.0 // indirect
81+
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
82+
github.com/gaissmai/bart v0.11.1 // indirect
7283
github.com/gaukas/wazerofs v0.1.0 // indirect
7384
github.com/getlantern/errors v1.0.4 // indirect
7485
github.com/getlantern/hidden v0.0.0-20220104173330-f221c5a24770 // indirect
7586
github.com/getlantern/ops v0.0.0-20231025133620-f368ab734534 // indirect
76-
github.com/go-chi/chi/v5 v5.2.1 // indirect
87+
github.com/go-chi/chi/v5 v5.2.2 // indirect
7788
github.com/go-chi/render v1.0.3 // indirect
89+
github.com/go-json-experiment/json v0.0.0-20250103232110-6a9a0fde9288 // indirect
7890
github.com/go-llsqlite/adapter v0.0.0-20230927005056-7f5ce7f0c916 // indirect
7991
github.com/go-llsqlite/crawshaw v0.4.0 // indirect
8092
github.com/go-logr/logr v1.4.2 // indirect
8193
github.com/go-logr/stdr v1.2.2 // indirect
8294
github.com/go-ole/go-ole v1.3.0 // indirect
8395
github.com/gobwas/httphead v0.1.0 // indirect
8496
github.com/gobwas/pool v0.2.1 // indirect
97+
github.com/godbus/dbus/v5 v5.1.1-0.20230522191255-76236955d466 // indirect
8598
github.com/gofrs/uuid/v5 v5.3.2 // indirect
99+
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
86100
github.com/google/btree v1.1.3 // indirect
87101
github.com/google/go-cmp v0.7.0 // indirect
102+
github.com/google/nftables v0.2.1-0.20240414091927-5e242ec57806 // indirect
88103
github.com/google/uuid v1.6.0 // indirect
104+
github.com/gorilla/csrf v1.7.3-0.20250123201450-9dd6af1f6d30 // indirect
105+
github.com/gorilla/securecookie v1.1.2 // indirect
89106
github.com/gorilla/websocket v1.5.3 // indirect
90107
github.com/hashicorp/yamux v0.1.2 // indirect
108+
github.com/hdevalence/ed25519consensus v0.2.0 // indirect
91109
github.com/huandu/xstrings v1.3.2 // indirect
110+
github.com/illarion/gonotify/v2 v2.0.3 // indirect
92111
github.com/inconshreveable/mousetrap v1.1.0 // indirect
93-
github.com/insomniacslk/dhcp v0.0.0-20250109001534-8abf58130905 // indirect
94-
github.com/josharian/native v1.1.1-0.20230202152459-5c7d0dd6ab86 // indirect
112+
github.com/insomniacslk/dhcp v0.0.0-20250417080101-5f8cf70e8c5f // indirect
113+
github.com/jsimonetti/rtnetlink v1.4.0 // indirect
95114
github.com/klauspost/compress v1.17.11 // indirect
96-
github.com/klauspost/cpuid/v2 v2.2.9 // indirect
97-
github.com/libdns/alidns v1.0.3 // indirect
98-
github.com/libdns/cloudflare v0.1.1 // indirect
99-
github.com/libdns/libdns v0.2.2 // indirect
115+
github.com/klauspost/cpuid/v2 v2.2.10 // indirect
116+
github.com/kortschak/wol v0.0.0-20200729010619-da482cc4850a // indirect
117+
github.com/libdns/alidns v1.0.5-libdns.v1.beta1 // indirect
118+
github.com/libdns/cloudflare v0.2.2-0.20250708034226-c574dccb31a6 // indirect
119+
github.com/libdns/libdns v1.1.0 // indirect
100120
github.com/logrusorgru/aurora v2.0.3+incompatible // indirect
101121
github.com/mattn/go-isatty v0.0.16 // indirect
102-
github.com/mdlayher/netlink v1.7.2 // indirect
122+
github.com/mdlayher/genetlink v1.3.2 // indirect
123+
github.com/mdlayher/netlink v1.7.3-0.20250113171957-fbb4dce95f42 // indirect
124+
github.com/mdlayher/sdnotify v1.0.0 // indirect
103125
github.com/mdlayher/socket v0.5.1 // indirect
104-
github.com/metacubex/tfo-go v0.0.0-20241231083714-66613d49c422 // indirect
105-
github.com/mholt/acmez v1.2.0 // indirect
106-
github.com/miekg/dns v1.1.63 // indirect
126+
github.com/metacubex/tfo-go v0.0.0-20250921095601-b102db4216c0 // indirect
127+
github.com/metacubex/utls v1.8.3 // indirect
128+
github.com/mholt/acmez/v3 v3.1.2 // indirect
129+
github.com/miekg/dns v1.1.67 // indirect
130+
github.com/mitchellh/go-ps v1.0.0 // indirect
107131
github.com/mschoch/smat v0.2.0 // indirect
108-
github.com/oschwald/maxminddb-golang v1.12.0 // indirect
109132
github.com/pierrec/lz4/v4 v4.1.21 // indirect
110133
github.com/pion/datachannel v1.5.2 // indirect
111134
github.com/pion/dtls/v2 v2.2.7 // indirect
@@ -126,56 +149,69 @@ require (
126149
github.com/pion/webrtc/v3 v3.1.42 // indirect
127150
github.com/pkg/errors v0.9.1 // indirect
128151
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
152+
github.com/prometheus-community/pro-bing v0.4.0 // indirect
129153
github.com/quic-go/qpack v0.5.1 // indirect
130-
github.com/quic-go/qtls-go1-20 v0.4.1 // indirect
131154
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
132155
github.com/rs/dnscache v0.0.0-20211102005908-e0241e321417 // indirect
156+
github.com/safchain/ethtool v0.3.0 // indirect
133157
github.com/sagernet/bbolt v0.0.0-20231014093535-ea5cb2fe9f0a // indirect
134-
github.com/sagernet/cloudflare-tls v0.0.0-20231208171750-a4483c1b7cd1 // indirect
135158
github.com/sagernet/cors v1.2.1 // indirect
136159
github.com/sagernet/fswatch v0.1.1 // indirect
137-
github.com/sagernet/gvisor v0.0.0-20241123041152-536d05261cff // indirect
160+
github.com/sagernet/gvisor v0.0.0-20250325023245-7a9c0f5725fb // indirect
138161
github.com/sagernet/netlink v0.0.0-20240612041022-b9a21c07ac6a // indirect
139162
github.com/sagernet/nftables v0.3.0-beta.4 // indirect
140-
github.com/sagernet/quic-go v0.49.0-beta.1 // indirect
141-
github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691 // indirect
142-
github.com/sagernet/sing-mux v0.3.2 // indirect
143-
github.com/sagernet/sing-quic v0.4.4 // indirect
163+
github.com/sagernet/quic-go v0.52.0-sing-box-mod.3 // indirect
164+
github.com/sagernet/sing-mux v0.3.3 // indirect
165+
github.com/sagernet/sing-quic v0.5.2-0.20250909083218-00a55617c0fb // indirect
144166
github.com/sagernet/sing-shadowsocks v0.2.8 // indirect
145167
github.com/sagernet/sing-shadowsocks2 v0.2.1 // indirect
146-
github.com/sagernet/sing-shadowtls v0.2.0 // indirect
147-
github.com/sagernet/sing-tun v0.6.9 // indirect
148-
github.com/sagernet/sing-vmess v0.2.3 // indirect
168+
github.com/sagernet/sing-shadowtls v0.2.1-0.20250503051639-fcd445d33c11 // indirect
169+
github.com/sagernet/sing-tun v0.7.3 // indirect
170+
github.com/sagernet/sing-vmess v0.2.7 // indirect
149171
github.com/sagernet/smux v1.5.34-mod.2 // indirect
150-
github.com/sagernet/utls v1.6.7 // indirect
172+
github.com/sagernet/tailscale v1.80.3-sing-box-1.12-mod.2 // indirect
173+
github.com/sagernet/wireguard-go v0.0.1-beta.7 // indirect
151174
github.com/sagernet/ws v0.0.0-20231204124109-acfe8907c854 // indirect
152175
github.com/shadowsocks/go-shadowsocks2 v0.1.5 // indirect
153176
github.com/spf13/pflag v1.0.9 // indirect
154177
github.com/stretchr/objx v0.5.2 // indirect
178+
github.com/tailscale/certstore v0.1.1-0.20231202035212-d3fa0460f47e // indirect
179+
github.com/tailscale/go-winio v0.0.0-20231025203758-c4f33415bf55 // indirect
180+
github.com/tailscale/golang-x-crypto v0.0.0-20240604161659-3fde5e568aa4 // indirect
181+
github.com/tailscale/goupnp v1.0.1-0.20210804011211-c64d0f06ea05 // indirect
182+
github.com/tailscale/hujson v0.0.0-20221223112325-20486734a56a // indirect
183+
github.com/tailscale/netlink v1.1.1-0.20240822203006-4d49adab4de7 // indirect
184+
github.com/tailscale/peercred v0.0.0-20250107143737-35a0c7bd7edc // indirect
185+
github.com/tailscale/web-client-prebuilt v0.0.0-20250124233751-d4cd19a26976 // indirect
155186
github.com/tevino/abool/v2 v2.1.0 // indirect
156187
github.com/tidwall/btree v1.6.0 // indirect
157-
github.com/u-root/uio v0.0.0-20240118234441-a3c409a6018e // indirect
158-
github.com/vishvananda/netns v0.0.4 // indirect
188+
github.com/u-root/uio v0.0.0-20240224005618-d2acac8f3701 // indirect
189+
github.com/vishvananda/netns v0.0.5 // indirect
190+
github.com/x448/float16 v0.8.4 // indirect
159191
github.com/zeebo/blake3 v0.2.4 // indirect
160192
go.etcd.io/bbolt v1.3.6 // indirect
161193
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
162-
go.opentelemetry.io/otel/sdk/metric v1.35.0 // indirect
163194
go.uber.org/mock v0.5.0 // indirect
164195
go.uber.org/multierr v1.11.0 // indirect
165196
go.uber.org/zap v1.27.0 // indirect
166-
golang.org/x/crypto v0.33.0 // indirect
167-
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
168-
golang.org/x/mod v0.23.0 // indirect
169-
golang.org/x/net v0.35.0 // indirect
170-
golang.org/x/sync v0.11.0 // indirect
171-
golang.org/x/sys v0.30.0 // indirect
172-
golang.org/x/text v0.22.0 // indirect
173-
golang.org/x/time v0.7.0 // indirect
174-
golang.org/x/tools v0.28.0 // indirect
197+
go.uber.org/zap/exp v0.3.0 // indirect
198+
go4.org/mem v0.0.0-20240501181205-ae6ca9944745 // indirect
199+
go4.org/netipx v0.0.0-20231129151722-fdeea329fbba // indirect
200+
golang.org/x/crypto v0.41.0 // indirect
201+
golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6 // indirect
202+
golang.org/x/mod v0.27.0 // indirect
203+
golang.org/x/net v0.43.0 // indirect
204+
golang.org/x/sync v0.16.0 // indirect
205+
golang.org/x/sys v0.35.0 // indirect
206+
golang.org/x/term v0.34.0 // indirect
207+
golang.org/x/text v0.28.0 // indirect
208+
golang.org/x/time v0.9.0 // indirect
209+
golang.org/x/tools v0.36.0 // indirect
175210
golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 // indirect
176-
google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect
177-
google.golang.org/grpc v1.70.0 // indirect
178-
google.golang.org/protobuf v1.36.5 // indirect
211+
golang.zx2c4.com/wireguard/windows v0.5.3 // indirect
212+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463 // indirect
213+
google.golang.org/grpc v1.73.0 // indirect
214+
google.golang.org/protobuf v1.36.6 // indirect
179215
lukechampine.com/blake3 v1.3.0 // indirect
180216
modernc.org/libc v1.22.3 // indirect
181217
modernc.org/mathutil v1.5.0 // indirect

0 commit comments

Comments
 (0)