From d98ec9f61ca8e6b37899f6d962a9ba287545eb97 Mon Sep 17 00:00:00 2001 From: Yuzuki999 Date: Wed, 21 Dec 2022 02:49:23 +0800 Subject: [PATCH] fix block routes --- api/panel/node.go | 14 ++++++++------ node/controller/node.go | 10 +++++----- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/api/panel/node.go b/api/panel/node.go index 8d814a4..d13a4d2 100644 --- a/api/panel/node.go +++ b/api/panel/node.go @@ -4,6 +4,7 @@ import ( "github.com/goccy/go-json" "regexp" "strconv" + "strings" ) type NodeInfo struct { @@ -60,12 +61,13 @@ func (c *Client) GetNodeInfo() (nodeInfo *NodeInfo, err error) { nodeInfo.NodeId = c.NodeId nodeInfo.NodeType = c.NodeType for i := range nodeInfo.Routes { // parse rules from routes - r := &nodeInfo.Routes[i] - if r.Action == "block" { - nodeInfo.Rules = append(nodeInfo.Rules, DestinationRule{ - ID: r.Id, - Pattern: regexp.MustCompile(r.Match), - }) + if nodeInfo.Routes[i].Action == "block" { + for _, v := range strings.Split(nodeInfo.Routes[i].Match, ",") { + nodeInfo.Rules = append(nodeInfo.Rules, DestinationRule{ + ID: nodeInfo.Routes[i].Id, + Pattern: regexp.MustCompile(v), + }) + } } } nodeInfo.Routes = nil diff --git a/node/controller/node.go b/node/controller/node.go index cf2d88e..e43e789 100644 --- a/node/controller/node.go +++ b/node/controller/node.go @@ -41,14 +41,14 @@ func New(server *core.Core, api panel.Panel, config *conf.ControllerConfig) *Nod func (c *Node) Start() error { c.clientInfo = c.apiClient.Describe() // First fetch Node Info - newNodeInfo, err := c.apiClient.GetNodeInfo() + var err error + c.nodeInfo, err = c.apiClient.GetNodeInfo() if err != nil { return fmt.Errorf("get node info failed: %s", err) } - c.nodeInfo = newNodeInfo c.Tag = c.buildNodeTag() // Add new tag - err = c.addNewTag(newNodeInfo) + err = c.addNewTag(c.nodeInfo) if err != nil { return fmt.Errorf("add new tag failed: %s", err) } @@ -60,7 +60,7 @@ func (c *Node) Start() error { if len(c.userList) == 0 { return errors.New("add users failed: not have any user") } - err = c.addNewUser(c.userList, newNodeInfo) + err = c.addNewUser(c.userList, c.nodeInfo) if err != nil { return err } @@ -69,7 +69,7 @@ func (c *Node) Start() error { } // Add Rule Manager if !c.DisableGetRule { - if err := c.server.UpdateRule(c.Tag, newNodeInfo.Rules); err != nil { + if err := c.server.UpdateRule(c.Tag, c.nodeInfo.Rules); err != nil { log.Printf("Update rule filed: %s", err) } }