增加白名单文件 white.json
格式: { "47.240.75.93": "" } 还需要大量测试
This commit is contained in:
parent
c6a0fd4468
commit
b11ae2e5c1
48
main.go
48
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() // 主进程逻辑
|
||||
|
||||
}
|
||||
|
3
white.json
Normal file
3
white.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"47.240.75.93": ""
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user