diff --git a/common.go b/common.go new file mode 100644 index 0000000..017db88 --- /dev/null +++ b/common.go @@ -0,0 +1,14 @@ +package main + +import ( + "log" + "os/exec" +) + +// CheckCommandExists 检测系统命令是否存在,不存在则退出程序 +func CheckCommandExists(cmd string) { + _, err := exec.LookPath(cmd) + if err != nil { + log.Fatalf("命令未找到: %s (请确保已安装该命令)", cmd) + } +} diff --git a/denyip b/denyip index b16dd2d..cdbd428 100644 Binary files a/denyip and b/denyip differ diff --git a/denyip.upx b/denyip.upx new file mode 100644 index 0000000..6d4d053 Binary files /dev/null and b/denyip.upx differ diff --git a/go.mod b/go.mod index 48c1b06..14b4e94 100644 --- a/go.mod +++ b/go.mod @@ -1,13 +1,13 @@ module denyip -go 1.25.3 +go 1.25.4 require ( github.com/google/gopacket v1.1.19 - github.com/lionsoul2014/ip2region/binding/golang v0.0.0-20251015133354-5a51b754117e + github.com/lionsoul2014/ip2region/binding/golang v0.0.0-20251113013923-bd30b77d5468 ) require ( - golang.org/x/net v0.46.0 // indirect - golang.org/x/sys v0.37.0 // indirect + golang.org/x/net v0.47.0 // indirect + golang.org/x/sys v0.38.0 // indirect ) diff --git a/go.sum b/go.sum index 6821e2a..434849d 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,13 @@ github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8= github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo/Vo+TKTo= +github.com/lionsoul2014/ip2region v3.8.1+incompatible h1:gPNjTKGDwD+ONRfEuarkO2/+m0cHUyKq54RYh3Y5OYo= +github.com/lionsoul2014/ip2region v3.8.1+incompatible/go.mod h1:+ZBN7PBoh5gG6/y0ZQ85vJDBe21WnfbRrQQwTfliJJI= github.com/lionsoul2014/ip2region/binding/golang v0.0.0-20251015133354-5a51b754117e h1:+SFFyvJZrJ/uns6ioXL9pd3Rg7CPDHy7fa45DcRoPzM= github.com/lionsoul2014/ip2region/binding/golang v0.0.0-20251015133354-5a51b754117e/go.mod h1:+mNMTBuDMdEGhWzoQgc6kBdqeaQpWh5ba8zqmp2MxCU= +github.com/lionsoul2014/ip2region/binding/golang v0.0.0-20251113013923-bd30b77d5468 h1:tAxRAx434lf9txMOrgrMVPIAm2/7nB7SkL5v7NnO8Cc= +github.com/lionsoul2014/ip2region/binding/golang v0.0.0-20251113013923-bd30b77d5468/go.mod h1:+mNMTBuDMdEGhWzoQgc6kBdqeaQpWh5ba8zqmp2MxCU= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= @@ -10,11 +16,15 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/main.go b/main.go index 2b04a3b..e9ee2cc 100644 --- a/main.go +++ b/main.go @@ -505,6 +505,9 @@ func main() { runtime.GOMAXPROCS(runtime.NumCPU()) // 设置最大CPU核数 HandleCmd() + CheckCommandExists("iptables") + CheckCommandExists("ipset") + embed_ip2region() // 加载白名单