From e1f074f116d48dab868cf5d09750532bd0df8e8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Fri, 22 Nov 2024 19:52:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=98=B2=E7=81=AB=E5=A2=99=E6=AD=A3?= =?UTF-8?q?=E7=A1=AE=E5=A4=84=E7=90=86=E5=A4=9Aip=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/service/firewall.go | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/internal/service/firewall.go b/internal/service/firewall.go index 9e24bd36..dbc474aa 100644 --- a/internal/service/firewall.go +++ b/internal/service/firewall.go @@ -3,6 +3,7 @@ package service import ( "net/http" "slices" + "strings" "github.com/go-rat/chix" @@ -177,11 +178,15 @@ func (s *FirewallService) CreateIPRule(w http.ResponseWriter, r *http.Request) { return } - if err = s.firewall.RichRules(firewall.FireInfo{ - Family: req.Family, Address: req.Address, Protocol: firewall.Protocol(req.Protocol), Strategy: firewall.Strategy(req.Strategy), Direction: firewall.Direction(req.Direction), - }, firewall.OperationAdd); err != nil { - Error(w, http.StatusInternalServerError, "%v", err) - return + // rich rule 下,address 不支持多个地址,需要单独添加 + addresses := strings.Split(req.Address, ",") + for address := range slices.Values(addresses) { + if err = s.firewall.RichRules(firewall.FireInfo{ + Family: req.Family, Address: address, Protocol: firewall.Protocol(req.Protocol), Strategy: firewall.Strategy(req.Strategy), Direction: firewall.Direction(req.Direction), + }, firewall.OperationAdd); err != nil { + Error(w, http.StatusInternalServerError, "%v", err) + return + } } Success(w, nil)