优化核心逻辑
This commit is contained in:
parent
b51d64644f
commit
18ab5ae4ef
@ -10,6 +10,9 @@
|
||||
克隆项目仓库:
|
||||
|
||||
```bash
|
||||
apt-get install ipset
|
||||
apt-get install libpcap-dev
|
||||
|
||||
git clone https://git.aixiao.me/aixiao/DenyIP-go.git
|
||||
cd DenyIP-go
|
||||
```
|
||||
|
2
ipset.go
2
ipset.go
@ -81,7 +81,7 @@ func Is_Name_Ipset(setName string) int {
|
||||
}
|
||||
|
||||
func Is_Ip_Ipset(ip string) int {
|
||||
cmd := exec.Command("sh", "-c", fmt.Sprintf("ipset list | grep \"%s\" | cut -d ':' -f 2 | sed 's/ //g'", ip))
|
||||
cmd := exec.Command("sh", "-c", fmt.Sprintf("ipset list | grep \"%s\"", ip))
|
||||
err := cmd.Run()
|
||||
|
||||
if err != nil {
|
||||
|
21
main.go
21
main.go
@ -175,14 +175,6 @@ func runMainProcess() { // 主进程逻辑
|
||||
e1 := IpList.Front() // 获取链表第一个元素
|
||||
region, _ := ip2region(e1.Value.(net.IP).String()) // 离线Ip位置库初步判断地域
|
||||
|
||||
log.Printf("当前 Ipset 链 %s %d\n", IPSET_NAME, func() int { // 打印 当前 Ipset 链长度
|
||||
_len, _err := NumIPSet(IPSET_NAME)
|
||||
if _err == nil {
|
||||
return _len
|
||||
}
|
||||
return 0
|
||||
}())
|
||||
|
||||
if Is_Ip_Ipset(e1.Value.(net.IP).String()) != 0 { // Ip不在 Ipset 集合中
|
||||
if !strings.Contains(region, "中国") && !strings.Contains(region, "内网") { // 离线库判断不在中国内,尝试API判断
|
||||
if position, err := curl_(e1.Value.(net.IP).String()); err != nil { //API判断地域
|
||||
@ -198,12 +190,19 @@ func runMainProcess() { // 主进程逻辑
|
||||
IpList.Remove(e1)
|
||||
}
|
||||
} else { // 在 Ipset 集合中
|
||||
log.Printf("\033[31m%s 已经在 Ipset 集合中\033[0m\n", e1.Value.(net.IP).String())
|
||||
log.Printf("\033[31m %s 在 Ipset 集合中 \033[0m\n", e1.Value.(net.IP).String())
|
||||
IpList.Remove(e1)
|
||||
}
|
||||
|
||||
log.Printf("Ip 链表长度:%d\n", IpList.Len()) // 链表长度
|
||||
time.Sleep(2 * time.Second)
|
||||
log.Printf(" 当前Ip链表长度:%d, Ipset名:%s, 长:%d\n", IpList.Len(), IPSET_NAME, func() int { // 打印 当前 Ipset 链长度
|
||||
_len, _err := NumIPSet(IPSET_NAME)
|
||||
if _err == nil {
|
||||
return _len
|
||||
}
|
||||
return 0
|
||||
}())
|
||||
|
||||
time.Sleep(1 * time.Second)
|
||||
}
|
||||
IpMutex.Unlock() // 链表解锁互斥锁
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user