fix block routes

This commit is contained in:
Yuzuki999 2022-12-21 02:49:23 +08:00
parent bb430dbb8d
commit d98ec9f61c
2 changed files with 13 additions and 11 deletions

View File

@ -4,6 +4,7 @@ import (
"github.com/goccy/go-json" "github.com/goccy/go-json"
"regexp" "regexp"
"strconv" "strconv"
"strings"
) )
type NodeInfo struct { type NodeInfo struct {
@ -60,12 +61,13 @@ func (c *Client) GetNodeInfo() (nodeInfo *NodeInfo, err error) {
nodeInfo.NodeId = c.NodeId nodeInfo.NodeId = c.NodeId
nodeInfo.NodeType = c.NodeType nodeInfo.NodeType = c.NodeType
for i := range nodeInfo.Routes { // parse rules from routes for i := range nodeInfo.Routes { // parse rules from routes
r := &nodeInfo.Routes[i] if nodeInfo.Routes[i].Action == "block" {
if r.Action == "block" { for _, v := range strings.Split(nodeInfo.Routes[i].Match, ",") {
nodeInfo.Rules = append(nodeInfo.Rules, DestinationRule{ nodeInfo.Rules = append(nodeInfo.Rules, DestinationRule{
ID: r.Id, ID: nodeInfo.Routes[i].Id,
Pattern: regexp.MustCompile(r.Match), Pattern: regexp.MustCompile(v),
}) })
}
} }
} }
nodeInfo.Routes = nil nodeInfo.Routes = nil

View File

@ -41,14 +41,14 @@ func New(server *core.Core, api panel.Panel, config *conf.ControllerConfig) *Nod
func (c *Node) Start() error { func (c *Node) Start() error {
c.clientInfo = c.apiClient.Describe() c.clientInfo = c.apiClient.Describe()
// First fetch Node Info // First fetch Node Info
newNodeInfo, err := c.apiClient.GetNodeInfo() var err error
c.nodeInfo, err = c.apiClient.GetNodeInfo()
if err != nil { if err != nil {
return fmt.Errorf("get node info failed: %s", err) return fmt.Errorf("get node info failed: %s", err)
} }
c.nodeInfo = newNodeInfo
c.Tag = c.buildNodeTag() c.Tag = c.buildNodeTag()
// Add new tag // Add new tag
err = c.addNewTag(newNodeInfo) err = c.addNewTag(c.nodeInfo)
if err != nil { if err != nil {
return fmt.Errorf("add new tag failed: %s", err) return fmt.Errorf("add new tag failed: %s", err)
} }
@ -60,7 +60,7 @@ func (c *Node) Start() error {
if len(c.userList) == 0 { if len(c.userList) == 0 {
return errors.New("add users failed: not have any user") 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 { if err != nil {
return err return err
} }
@ -69,7 +69,7 @@ func (c *Node) Start() error {
} }
// Add Rule Manager // Add Rule Manager
if !c.DisableGetRule { 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) log.Printf("Update rule filed: %s", err)
} }
} }