优化白名单

This commit is contained in:
2025-07-09 16:15:04 +08:00
parent 851b643374
commit de72ee1100
9 changed files with 155 additions and 32 deletions

View File

@@ -98,6 +98,35 @@ func Is_Ip_Ipset(ip string) int {
return 0
}
// RemoveIPIfInSets 在多个 ipset 中查找并删除某个 IP成功删除则返回集合名
func RemoveIPIfInSets(prefix string, max int, ip string) (string, error) {
for i := 0; i < max; i++ {
setName := fmt.Sprintf("%s%d", prefix, i)
// 检查 IP 是否在当前集合中
cmd := exec.Command("ipset", "test", setName, ip)
output, err := cmd.CombinedOutput()
if err != nil {
if strings.Contains(string(output), "is NOT in set") {
continue // 不在该集合中,尝试下一个
}
return "", fmt.Errorf("检测 %s 时出错: %v (%s)", setName, err, output)
}
// 存在,执行删除
cmd = exec.Command("ipset", "del", setName, ip)
output, err = cmd.CombinedOutput()
if err != nil {
return "", fmt.Errorf("从 %s 删除 %s 时出错: %v (%s)", setName, ip, err, output)
}
return setName, nil // 删除成功,返回集合名
}
return "", nil // 所有集合都没有该 IP无需删除
}
// 添加 Iptables 规则
func iptables_add(setName string) error {