初步支持禁止国内省份地域
This commit is contained in:
8
main.go
8
main.go
@@ -312,9 +312,12 @@ func RunMainProcess() { // 主进程逻辑
|
|||||||
goto next
|
goto next
|
||||||
}
|
}
|
||||||
|
|
||||||
|
REGION := "中国 内网" // 默认地域
|
||||||
|
|
||||||
if Is_Ip_Ipset(ipStr) != 0 { // IP 不在 ipset 集合中
|
if Is_Ip_Ipset(ipStr) != 0 { // IP 不在 ipset 集合中
|
||||||
|
|
||||||
if !strings.Contains(region, "中国") && !strings.Contains(region, "内网") { // 离线库判断不在中国内
|
//if !strings.Contains(region, "中国") && !strings.Contains(region, "内网") { // 离线库判断不在中国内
|
||||||
|
if !ContainsPart(region, REGION) {
|
||||||
log.Printf("\033[33m [%s %s] 离线库为国外, 进一步API判断\033[0m\n", ipStr, region)
|
log.Printf("\033[33m [%s %s] 离线库为国外, 进一步API判断\033[0m\n", ipStr, region)
|
||||||
|
|
||||||
if position, err := curl_(ipStr); err != nil { // 使用 API 判断地域
|
if position, err := curl_(ipStr); err != nil { // 使用 API 判断地域
|
||||||
@@ -322,7 +325,8 @@ func RunMainProcess() { // 主进程逻辑
|
|||||||
} else {
|
} else {
|
||||||
log.Printf("\033[31m [%s %s]\033[0m\n\n", ipStr, position) // 打印地域
|
log.Printf("\033[31m [%s %s]\033[0m\n\n", ipStr, position) // 打印地域
|
||||||
|
|
||||||
if !strings.Contains(position, "中国") && !strings.Contains(position, "内网") { // API 判断为国外
|
//if !strings.Contains(position, "中国") && !strings.Contains(position, "内网") { // API 判断为国外
|
||||||
|
if !ContainsPart(region, REGION) {
|
||||||
AddIPSet(IPSET_NAME, ipStr) // 添加 IP 到 ipset 集合
|
AddIPSet(IPSET_NAME, ipStr) // 添加 IP 到 ipset 集合
|
||||||
|
|
||||||
// 钉钉告警,废弃!钉钉可能限制文本长度,和发送次数!
|
// 钉钉告警,废弃!钉钉可能限制文本长度,和发送次数!
|
||||||
|
|||||||
31
region_name_match.go
Normal file
31
region_name_match.go
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SplitBySpace 按空格分割字符串
|
||||||
|
func SplitBySpace(s string) []string {
|
||||||
|
return strings.Split(s, " ")
|
||||||
|
}
|
||||||
|
|
||||||
|
// ContainsPart 判断 target 是否包含 regionParts 中的任意片段(模糊匹配)
|
||||||
|
func ContainsPart(target string, REGION string) bool {
|
||||||
|
regionParts := SplitBySpace(REGION)
|
||||||
|
|
||||||
|
for _, rp := range regionParts {
|
||||||
|
//fmt.Println("regionParts:", rp)
|
||||||
|
if strings.Contains(target, rp) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
func main() {
|
||||||
|
REGION := "中国 内网"
|
||||||
|
|
||||||
|
fmt.Println("结果1:", ContainsPart("美国", REGION)) // true
|
||||||
|
}
|
||||||
|
*/
|
||||||
@@ -1,2 +1,2 @@
|
|||||||
127.0.0.1
|
127.0.0.1
|
||||||
158.101.117.243
|
132.145.154.72
|
||||||
|
|||||||
Reference in New Issue
Block a user