From c96e32e257b70ff2c22208d9a5eba6f6832bb8fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Tue, 10 Nov 2020 09:22:17 +0800 Subject: [PATCH] =?UTF-8?q?waf/ip=E5=90=8D=E5=8D=95=E6=9C=89=E5=8F=98?= =?UTF-8?q?=E6=9B=B4=E7=AB=8B=E5=8D=B3=E5=8F=91=E9=80=81=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/iplibrary/manager_ip_list.go | 14 +++++++++++++- internal/nodes/api_stream.go | 14 ++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/internal/iplibrary/manager_ip_list.go b/internal/iplibrary/manager_ip_list.go index 78d4adb..717ab26 100644 --- a/internal/iplibrary/manager_ip_list.go +++ b/internal/iplibrary/manager_ip_list.go @@ -11,6 +11,7 @@ import ( ) var SharedIPListManager = NewIPListManager() +var IPListUpdateNotify = make(chan bool, 1) func init() { events.On(events.EventStart, func() { @@ -52,10 +53,21 @@ func (this *IPListManager) Start() { events.On(events.EventQuit, func() { ticker.Stop() }) - for range ticker.C { + for { + select { + case <-ticker.C: + case <-IPListUpdateNotify: + } err := this.loop() if err != nil { logs.Println("IP_LIST_MANAGER", err.Error()) + + // 方便立即重试 + select { + case IPListUpdateNotify <- true: + default: + + } } } } diff --git a/internal/nodes/api_stream.go b/internal/nodes/api_stream.go index 6eaa19c..2d564c2 100644 --- a/internal/nodes/api_stream.go +++ b/internal/nodes/api_stream.go @@ -9,6 +9,7 @@ import ( "github.com/TeaOSLab/EdgeNode/internal/caches" "github.com/TeaOSLab/EdgeNode/internal/errors" "github.com/TeaOSLab/EdgeNode/internal/events" + "github.com/TeaOSLab/EdgeNode/internal/iplibrary" "github.com/TeaOSLab/EdgeNode/internal/logs" "github.com/TeaOSLab/EdgeNode/internal/rpc" "io" @@ -95,6 +96,8 @@ func (this *APIStream) loop() error { err = this.handlePreheatCache(message) case messageconfigs.MessageCodeConfigChanged: // 配置变化 err = this.handleConfigChanged(message) + case messageconfigs.MessageCodeIPListChanged: // IPList变化 + err = this.handleIPListChanged(message) default: err = this.handleUnknownMessage(message) } @@ -438,6 +441,17 @@ func (this *APIStream) handleConfigChanged(message *pb.NodeStreamMessage) error return nil } +// 处理IPList变化 +func (this *APIStream) handleIPListChanged(message *pb.NodeStreamMessage) error { + select { + case iplibrary.IPListUpdateNotify <- true: + default: + + } + this.replyOk(message.RequestId, "ok") + return nil +} + // 处理未知消息 func (this *APIStream) handleUnknownMessage(message *pb.NodeStreamMessage) error { this.replyFail(message.RequestId, "unknown message code '"+message.Code+"'")