From a13d269c28fcba241c5b024527269c6c8dd924a5 Mon Sep 17 00:00:00 2001 From: xbingW Date: Wed, 9 Apr 2025 19:25:11 +0800 Subject: [PATCH] feat: path --- .../tools/rule/create_blacklist_rule.go | 38 +++++++++++++------ .../tools/rule/create_whitelist_rule.go | 38 +++++++++++++------ 2 files changed, 52 insertions(+), 24 deletions(-) diff --git a/mcp_go/internal/tools/rule/create_blacklist_rule.go b/mcp_go/internal/tools/rule/create_blacklist_rule.go index 2e04a29..3e7b81b 100644 --- a/mcp_go/internal/tools/rule/create_blacklist_rule.go +++ b/mcp_go/internal/tools/rule/create_blacklist_rule.go @@ -11,8 +11,9 @@ import ( type CreateBlacklistRule struct{} type CreateBlacklistRuleParams struct { - Name string `json:"name" desc:"name" required:"true"` - IP []string `json:"ip" desc:"ip" required:"false"` + Name string `json:"name" desc:"name" required:"true"` + IP []string `json:"ip" desc:"ip" required:"false"` + URINoQuery []string `json:"uri_no_query" desc:"uri_no_query" required:"false"` } func (t *CreateBlacklistRule) Name() string { @@ -28,21 +29,34 @@ func (t *CreateBlacklistRule) Validate(params CreateBlacklistRuleParams) error { } func (t *CreateBlacklistRule) Execute(ctx context.Context, params CreateBlacklistRuleParams) (int64, error) { + var pattern [][]api.Pattern + if len(params.IP) > 0 { + pattern = append(pattern, []api.Pattern{ + { + K: api.KeySrcIP, + Op: api.OpEq, + V: params.IP, + SubK: "", + }, + }) + } + if len(params.URINoQuery) > 0 { + pattern = append(pattern, []api.Pattern{ + { + K: api.KeyURINoQuery, + Op: api.OpEq, + V: params.URINoQuery, + SubK: "", + }, + }) + } + id, err := rule.CreateRule(ctx, &rule.CreateRuleRequest{ Name: params.Name, IP: params.IP, IsEnabled: true, Action: int(api.PolicyRuleActionDeny), - Pattern: [][]api.Pattern{ - { - { - K: api.KeySrcIP, - Op: api.OpEq, - V: params.IP, - SubK: "", - }, - }, - }, + Pattern: pattern, }) if err != nil { return 0, err diff --git a/mcp_go/internal/tools/rule/create_whitelist_rule.go b/mcp_go/internal/tools/rule/create_whitelist_rule.go index 0451eb5..4b83f84 100644 --- a/mcp_go/internal/tools/rule/create_whitelist_rule.go +++ b/mcp_go/internal/tools/rule/create_whitelist_rule.go @@ -11,8 +11,9 @@ import ( type CreateWhitelistRule struct{} type CreateWhitelistRuleParams struct { - Name string `json:"name" desc:"name" required:"true"` - IP []string `json:"ip" desc:"ip" required:"false"` + Name string `json:"name" desc:"name" required:"true"` + IP []string `json:"ip" desc:"ip" required:"false"` + URINoQuery []string `json:"uri_no_query" desc:"uri_no_query" required:"false"` } func (t *CreateWhitelistRule) Name() string { @@ -28,21 +29,34 @@ func (t *CreateWhitelistRule) Validate(params CreateWhitelistRuleParams) error { } func (t *CreateWhitelistRule) Execute(ctx context.Context, params CreateWhitelistRuleParams) (int64, error) { + var pattern [][]api.Pattern + if len(params.IP) > 0 { + pattern = append(pattern, []api.Pattern{ + { + K: api.KeySrcIP, + Op: api.OpEq, + V: params.IP, + SubK: "", + }, + }) + } + if len(params.URINoQuery) > 0 { + pattern = append(pattern, []api.Pattern{ + { + K: api.KeyURINoQuery, + Op: api.OpEq, + V: params.URINoQuery, + SubK: "", + }, + }) + } + id, err := rule.CreateRule(ctx, &rule.CreateRuleRequest{ Name: params.Name, IP: params.IP, IsEnabled: true, Action: int(api.PolicyRuleActionAllow), - Pattern: [][]api.Pattern{ - { - { - K: api.KeySrcIP, - Op: api.OpEq, - V: params.IP, - SubK: "", - }, - }, - }, + Pattern: pattern, }) if err != nil { return 0, err