diff --git a/denyip b/denyip index 883fb14..4913398 100644 Binary files a/denyip and b/denyip differ diff --git a/main.go b/main.go index 3040118..573fbf5 100644 --- a/main.go +++ b/main.go @@ -114,7 +114,7 @@ func waitForSignalAndCleanUp(cmd *exec.Cmd) { } // 守护进程模式 -func startDaemon() { +func StartDaemon() { // 创建一个新的实例并让当前进程退出。注意这并不是守护进程的标准实现。 args := []string{} for _, arg := range os.Args[1:] { @@ -135,7 +135,7 @@ func startDaemon() { } // 子进程逻辑 -func runChildProcess() { +func RunChildProcess() { sigChan := make(chan os.Signal, 1) signal.Notify(sigChan, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) @@ -197,9 +197,40 @@ func loadMapFromFile(filePath string) error { 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() { if err := loadMapFromFile("cn.json"); err != nil { 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() { @@ -226,7 +257,8 @@ func WriteLocalAddr() { } } -func runMainProcess() { // 主进程逻辑 + +func RunMainProcess() { // 主进程逻辑 fmt.Println("主进程启动...") @@ -354,7 +386,7 @@ func runMainProcess() { // 主进程逻辑 waitForSignalAndCleanUp(cmd) } -func handleCmd() { +func HandleCmd() { // 定义命令行标志 var instruction string var help bool @@ -416,20 +448,20 @@ func handleCmd() { func main() { runtime.GOMAXPROCS(runtime.NumCPU()) // 设置最大CPU核数 - handleCmd() + HandleCmd() // 守护进程模式 if *daemon { - startDaemon() + StartDaemon() } // 子进程逻辑 if *child { - runChildProcess() // 子进程逻辑 + RunChildProcess() // 子进程逻辑 return } InitMap() - runMainProcess() // 主进程逻辑 + RunMainProcess() // 主进程逻辑 } diff --git a/white.json b/white.json new file mode 100644 index 0000000..e2df15a --- /dev/null +++ b/white.json @@ -0,0 +1,3 @@ +{ + "47.240.75.93": "" +} \ No newline at end of file