增加白名单文件 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{}
|
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
3
white.json
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"47.240.75.93": ""
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user