增加白名单文件 white.json

格式:
{
    "47.240.75.93": ""
}
还需要大量测试
This commit is contained in:
aixiao 2025-03-07 11:51:21 +08:00
parent c6a0fd4468
commit b11ae2e5c1
3 changed files with 43 additions and 8 deletions

BIN
denyip

Binary file not shown.

48
main.go
View File

@ -114,7 +114,7 @@ func waitForSignalAndCleanUp(cmd *exec.Cmd) {
} }
// 守护进程模式 // 守护进程模式
func startDaemon() { func StartDaemon() {
// 创建一个新的实例并让当前进程退出。注意这并不是守护进程的标准实现。 // 创建一个新的实例并让当前进程退出。注意这并不是守护进程的标准实现。
args := []string{} args := []string{}
for _, arg := range os.Args[1:] { for _, arg := range os.Args[1:] {
@ -135,7 +135,7 @@ func startDaemon() {
} }
// 子进程逻辑 // 子进程逻辑
func runChildProcess() { func RunChildProcess() {
sigChan := make(chan os.Signal, 1) sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) signal.Notify(sigChan, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT)
@ -197,9 +197,40 @@ func loadMapFromFile(filePath string) error {
return nil return nil
} }
func ReadWhiteList(filePath string) error { // 白名单读取
ProcessedMutex.Lock()
defer ProcessedMutex.Unlock()
file, err := os.Open(filePath)
if err != nil {
if os.IsNotExist(err) {
log.Println("文件不存在,跳过加载 Map")
return nil // 文件不存在不是致命错误
}
return fmt.Errorf("打开文件失败: %w", err)
}
defer file.Close()
decoder := json.NewDecoder(file)
if err := decoder.Decode(&ProcessedIPMap); err != nil {
return fmt.Errorf("解码 Map 失败: %w", err)
}
log.Println("白名单 Map 已成功从文件加载!!!")
return nil
}
func InitMap() { func InitMap() {
if err := loadMapFromFile("cn.json"); err != nil { if err := loadMapFromFile("cn.json"); err != nil {
log.Fatalf("加载 Map 失败: %v", err) log.Fatalf("加载 Map 失败: %v", err)
} else {
log.Printf("加载 Map 成功!!!")
}
if err := ReadWhiteList("white.json"); err != nil { // 白名单读取
log.Fatalf("加载白名单 Map 失败: %v", err)
} else {
log.Printf("加载白名单 Map 成功!!!")
} }
defer func() { defer func() {
@ -226,7 +257,8 @@ func WriteLocalAddr() {
} }
} }
func runMainProcess() { // 主进程逻辑
func RunMainProcess() { // 主进程逻辑
fmt.Println("主进程启动...") fmt.Println("主进程启动...")
@ -354,7 +386,7 @@ func runMainProcess() { // 主进程逻辑
waitForSignalAndCleanUp(cmd) waitForSignalAndCleanUp(cmd)
} }
func handleCmd() { func HandleCmd() {
// 定义命令行标志 // 定义命令行标志
var instruction string var instruction string
var help bool var help bool
@ -416,20 +448,20 @@ func handleCmd() {
func main() { func main() {
runtime.GOMAXPROCS(runtime.NumCPU()) // 设置最大CPU核数 runtime.GOMAXPROCS(runtime.NumCPU()) // 设置最大CPU核数
handleCmd() HandleCmd()
// 守护进程模式 // 守护进程模式
if *daemon { if *daemon {
startDaemon() StartDaemon()
} }
// 子进程逻辑 // 子进程逻辑
if *child { if *child {
runChildProcess() // 子进程逻辑 RunChildProcess() // 子进程逻辑
return return
} }
InitMap() InitMap()
runMainProcess() // 主进程逻辑 RunMainProcess() // 主进程逻辑
} }

3
white.json Normal file
View File

@ -0,0 +1,3 @@
{
"47.240.75.93": ""
}