Skip to content

Commit 83a2a3c

Browse files
author
yiguo
committed
improve main.go
1 parent 20317ec commit 83a2a3c

File tree

3 files changed

+60
-58
lines changed

3 files changed

+60
-58
lines changed

go.mod

+14-12
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
module github.com/xtls/libxray
22

3-
go 1.24.1
3+
go 1.24.2
44

55
replace github.com/xtls/xray-core => ../Xray-core
66

77
require (
88
github.com/stretchr/testify v1.10.0
99
github.com/xtls/xray-core v0.0.0-00010101000000-000000000000
10-
google.golang.org/protobuf v1.36.5
10+
google.golang.org/protobuf v1.36.6
1111
gopkg.in/yaml.v3 v3.0.1
1212
)
1313

@@ -29,7 +29,7 @@ require (
2929
github.com/pires/go-proxyproto v0.8.0 // indirect
3030
github.com/pmezard/go-difflib v1.0.0 // indirect
3131
github.com/quic-go/qpack v0.5.1 // indirect
32-
github.com/quic-go/quic-go v0.50.0 // indirect
32+
github.com/quic-go/quic-go v0.50.1 // indirect
3333
github.com/refraction-networking/utls v1.6.7 // indirect
3434
github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3 // indirect
3535
github.com/sagernet/sing v0.5.1 // indirect
@@ -41,19 +41,21 @@ require (
4141
github.com/xtls/reality v0.0.0-20240712055506-48f0b2d5ed6d // indirect
4242
go.uber.org/mock v0.5.0 // indirect
4343
go4.org/netipx v0.0.0-20231129151722-fdeea329fbba // indirect
44-
golang.org/x/crypto v0.36.0 // indirect
44+
golang.org/x/crypto v0.37.0 // indirect
4545
golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc // indirect
46-
golang.org/x/mod v0.21.0 // indirect
47-
golang.org/x/net v0.37.0 // indirect
48-
golang.org/x/sync v0.12.0 // indirect
49-
golang.org/x/sys v0.31.0 // indirect
50-
golang.org/x/text v0.23.0 // indirect
46+
golang.org/x/mobile v0.0.0-20250408133729-978277e7eaf7 // indirect
47+
golang.org/x/mod v0.24.0 // indirect
48+
golang.org/x/net v0.39.0 // indirect
49+
golang.org/x/sync v0.13.0 // indirect
50+
golang.org/x/sys v0.32.0 // indirect
51+
golang.org/x/text v0.24.0 // indirect
5152
golang.org/x/time v0.7.0 // indirect
52-
golang.org/x/tools v0.26.0 // indirect
53+
golang.org/x/tools v0.32.0 // indirect
5354
golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 // indirect
5455
golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173 // indirect
55-
google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect
56-
google.golang.org/grpc v1.71.0 // indirect
56+
google.golang.org/genproto v0.0.0-20250428153025-10db94c68c34 // indirect
57+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250425173222-7b384671a197 // indirect
58+
google.golang.org/grpc v1.71.1 // indirect
5759
gopkg.in/yaml.v2 v2.4.0 // indirect
5860
gvisor.dev/gvisor v0.0.0-20240320123526-dc6abceb7ff0 // indirect
5961
lukechampine.com/blake3 v1.4.0 // indirect

go.sum

+29-12
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0N
3636
github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
3737
github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM=
3838
github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
39-
github.com/miekg/dns v1.1.63 h1:8M5aAw6OMZfFXTT7K5V0Eu5YiiL8l7nUAkyN6C9YwaY=
40-
github.com/miekg/dns v1.1.63/go.mod h1:6NGHfjhpmr5lt3XPLuyfDJi5AXbNIPM9PY6H6sF1Nfs=
39+
github.com/miekg/dns v1.1.64 h1:wuZgD9wwCE6XMT05UU/mlSko71eRSXEAm2EbjQXLKnQ=
40+
github.com/miekg/dns v1.1.64/go.mod h1:Dzw9769uoKVaLuODMDZz9M6ynFU6Em65csPuoi8G0ck=
4141
github.com/onsi/ginkgo/v2 v2.19.0 h1:9Cnnf7UHo57Hy3k6/m5k3dRfGTMXGvxhHFvkDTCTpvA=
4242
github.com/onsi/ginkgo/v2 v2.19.0/go.mod h1:rlwLi9PilAFJ8jCg9UE1QP6VBpd6/xj3SRC0d6TU0To=
4343
github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk=
@@ -50,8 +50,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
5050
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
5151
github.com/quic-go/qpack v0.5.1 h1:giqksBPnT/HDtZ6VhtFKgoLOWmlyo9Ei6u9PqzIMbhI=
5252
github.com/quic-go/qpack v0.5.1/go.mod h1:+PC4XFrEskIVkcLzpEkbLqq1uCoxPhQuvK5rH1ZgaEg=
53-
github.com/quic-go/quic-go v0.50.0 h1:3H/ld1pa3CYhkcc20TPIyG1bNsdhn9qZBGN3b9/UyUo=
54-
github.com/quic-go/quic-go v0.50.0/go.mod h1:Vim6OmUvlYdwBhXP9ZVrtGmCMWa3wEqhq3NgYrI8b4E=
53+
github.com/quic-go/quic-go v0.50.1 h1:unsgjFIUqW8a2oopkY7YNONpV1gYND6Nt9hnt1PN94Q=
54+
github.com/quic-go/quic-go v0.50.1/go.mod h1:Vim6OmUvlYdwBhXP9ZVrtGmCMWa3wEqhq3NgYrI8b4E=
5555
github.com/refraction-networking/utls v1.6.7 h1:zVJ7sP1dJx/WtVuITug3qYUq034cDq9B2MR1K67ULZM=
5656
github.com/refraction-networking/utls v1.6.7/go.mod h1:BC3O4vQzye5hqpmDTWUqi4P5DDhzJfkV1tdqtawQIH0=
5757
github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3 h1:f/FNXud6gA3MNr8meMVVGxhp+QBTqY91tM8HjEuMjGg=
@@ -92,35 +92,52 @@ go4.org/netipx v0.0.0-20231129151722-fdeea329fbba h1:0b9z3AuHCjxk0x/opv64kcgZLBs
9292
go4.org/netipx v0.0.0-20231129151722-fdeea329fbba/go.mod h1:PLyyIXexvUFg3Owu6p/WfdlivPbZJsZdgWZlrGope/Y=
9393
golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
9494
golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
95+
golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc=
9596
golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc h1:O9NuF4s+E/PvMIy+9IUZB9znFwUIXEWSstNjek6VpVg=
9697
golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc=
97-
golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0=
98-
golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
99-
golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c=
100-
golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
98+
golang.org/x/mobile v0.0.0-20250408133729-978277e7eaf7 h1:8MGTx39304caZ/OMsjPfuxUoDGI2tRas92F5x97tIYc=
99+
golang.org/x/mobile v0.0.0-20250408133729-978277e7eaf7/go.mod h1:ftACcHgQ7vaOnQbHOHvXt9Y6bEPHrs5Ovk67ClwrPJA=
100+
golang.org/x/mod v0.23.0 h1:Zb7khfcRGKk+kqfxFaP5tZqCnDZMjC5VtUBs87Hr6QM=
101+
golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
102+
golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU=
103+
golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww=
104+
golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
105+
golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
106+
golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E=
101107
golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw=
102108
golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
109+
golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610=
110+
golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
103111
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
104112
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
105113
golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
106114
golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
107115
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
116+
golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
108117
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
109118
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
119+
golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU=
110120
golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ=
111121
golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
112-
golang.org/x/tools v0.26.0 h1:v/60pFQmzmT9ExmjDv2gGIfi3OqfKoEP6I5+umXlbnQ=
113-
golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0=
122+
golang.org/x/tools v0.30.0 h1:BgcpHewrV5AUp2G9MebG4XPFI1E2W41zU1SaqVA9vJY=
123+
golang.org/x/tools v0.30.0/go.mod h1:c347cR/OJfw5TI+GfX7RUPNMdDRRbjvYTS0jPyvsVtY=
124+
golang.org/x/tools v0.32.0 h1:Q7N1vhpkQv7ybVzLFtTjvQya2ewbwNDZzUgfXGqtMWU=
125+
golang.org/x/tools v0.32.0/go.mod h1:ZxrU41P/wAbZD8EDa6dDCa6XfpkhJ7HFMjHJXfBDu8s=
114126
golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 h1:B82qJJgjvYKsXS9jeunTOisW56dUokqW/FOteYJJ/yg=
115127
golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2/go.mod h1:deeaetjYA+DHMHg+sMSMI58GrEteJUUzzw7en6TJQcI=
116128
golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173 h1:/jFs0duh4rdb8uIfPMv78iAJGcPKDeqAFnaLBropIC4=
117129
golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173/go.mod h1:tkCQ4FQXmpAgYVh++1cq16/dH4QJtmvpRv19DWGAHSA=
130+
google.golang.org/genproto v0.0.0-20250428153025-10db94c68c34 h1:oklGWmm0ZiCw4efmdYZo5MF9t6nRvGzM5+0klSjOmGM=
131+
google.golang.org/genproto v0.0.0-20250428153025-10db94c68c34/go.mod h1:hiH/EqX5GBdTyIpkqMqDGUHDiBniln8b4FCw+NzPxQY=
118132
google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f h1:OxYkA3wjPsZyBylwymxSHa7ViiW1Sml4ToBrncvFehI=
119133
google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50=
134+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250425173222-7b384671a197 h1:29cjnHVylHwTzH66WfFZqgSQgnxzvWE+jvBwpZCLRxY=
135+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250425173222-7b384671a197/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
120136
google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg=
121137
google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec=
122-
google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=
123-
google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
138+
google.golang.org/grpc v1.71.1/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec=
139+
google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
140+
google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
124141
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
125142
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
126143
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=

main/main.go

+17-34
Original file line numberDiff line numberDiff line change
@@ -75,63 +75,46 @@ func makeLoadGeoDataRequest(datDir string, name string, geoType string) (string,
7575
return base64.StdEncoding.EncodeToString(data), nil
7676
}
7777

78-
func main() {
79-
cwd, err := os.Getwd()
78+
func downloadDat(url string, datDir string, fileName string, geoType string) {
79+
datFile := fmt.Sprintf("%s.dat", fileName)
80+
geositePath := path.Join(datDir, datFile)
81+
err := downloadFileIfNotExists(url, geositePath)
8082
if err != nil {
8183
fmt.Println(err)
8284
os.Exit(1)
8385
}
84-
datDir := path.Join(cwd, "dat")
85-
err = ensureDir(datDir)
86-
if err != nil {
87-
fmt.Println("Failed to ensure directory:", err)
88-
os.Exit(1)
89-
}
9086

91-
// Download geosite.dat
92-
geositeUrl := "https://github.com/v2fly/domain-list-community/releases/latest/download/dlc.dat"
93-
geositePath := path.Join(datDir, "geosite.dat")
94-
err = downloadFileIfNotExists(geositeUrl, geositePath)
87+
geoReq, err := makeLoadGeoDataRequest(datDir, fileName, geoType)
9588
if err != nil {
9689
fmt.Println(err)
9790
os.Exit(1)
9891
}
99-
100-
// Load geosite
101-
geoSiteReq, err := makeLoadGeoDataRequest(datDir, "geosite", "domain")
102-
if err != nil {
103-
fmt.Println(err)
104-
os.Exit(1)
105-
}
106-
res := libXray.CountGeoData(geoSiteReq)
92+
res := libXray.CountGeoData(geoReq)
10793
resp, err := parseCallResponse(res)
10894
if err != nil || !resp.Success {
10995
fmt.Println("Failed to load geosite:", res)
11096
os.Exit(1)
11197
}
98+
}
11299

113-
// Download geoip.dat
114-
geoipUrl := "https://github.com/v2fly/geoip/releases/latest/download/geoip.dat"
115-
geoipPath := path.Join(datDir, "geoip.dat")
116-
err = downloadFileIfNotExists(geoipUrl, geoipPath)
100+
func main() {
101+
cwd, err := os.Getwd()
117102
if err != nil {
118103
fmt.Println(err)
119104
os.Exit(1)
120105
}
121-
122-
// Load geoip
123-
geoIpReq, err := makeLoadGeoDataRequest(datDir, "geoip", "ip")
106+
datDir := path.Join(cwd, "dat")
107+
err = ensureDir(datDir)
124108
if err != nil {
125-
fmt.Println(err)
126-
os.Exit(1)
127-
}
128-
res = libXray.CountGeoData(geoIpReq)
129-
resp, err = parseCallResponse(res)
130-
if err != nil || !resp.Success {
131-
fmt.Println("Failed to load geoip:", res)
109+
fmt.Println("Failed to ensure directory:", err)
132110
os.Exit(1)
133111
}
134112

113+
// Download geosite.dat
114+
downloadDat("https://github.com/v2fly/domain-list-community/releases/latest/download/dlc.dat", datDir, "geosite", "domain")
115+
// Download geoip.dat
116+
downloadDat("https://github.com/v2fly/geoip/releases/latest/download/geoip.dat", datDir, "geoip", "ip")
117+
135118
// Save timestamp
136119
err = saveTimestamp(datDir)
137120
if err != nil {

0 commit comments

Comments
 (0)