增加白名单文件 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{}
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() // 主进程逻辑
}

3
white.json Normal file
View File

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