From 7644e1a5f6faba87bd39797f8894fa3e581dd389 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Sun, 8 Jun 2025 15:32:45 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E9=98=B2=E7=81=AB?= =?UTF-8?q?=E5=A2=99=E5=88=9B=E5=BB=BA=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 ++++------ web/src/views/firewall/CreateIpModal.vue | 6 +--- web/src/views/firewall/CreateModal.vue | 35 ++++++++++-------------- 3 files changed, 21 insertions(+), 35 deletions(-) diff --git a/internal/service/firewall.go b/internal/service/firewall.go index 06a94e7f..4275920c 100644 --- a/internal/service/firewall.go +++ b/internal/service/firewall.go @@ -3,7 +3,6 @@ package service import ( "net/http" "slices" - "strings" "github.com/go-rat/chix" @@ -179,15 +178,11 @@ func (s *FirewallService) CreateIPRule(w http.ResponseWriter, r *http.Request) { 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 - } + 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 } Success(w, nil) diff --git a/web/src/views/firewall/CreateIpModal.vue b/web/src/views/firewall/CreateIpModal.vue index 50ef3d7e..11da7de5 100644 --- a/web/src/views/firewall/CreateIpModal.vue +++ b/web/src/views/firewall/CreateIpModal.vue @@ -104,11 +104,7 @@ const handleCreate = async () => { diff --git a/web/src/views/firewall/CreateModal.vue b/web/src/views/firewall/CreateModal.vue index fd2d0e07..1712a96a 100644 --- a/web/src/views/firewall/CreateModal.vue +++ b/web/src/views/firewall/CreateModal.vue @@ -64,25 +64,23 @@ const createModel = ref({ protocol: 'tcp', port_start: 80, port_end: 80, - address: '', + address: [], strategy: 'accept', direction: 'in' }) const handleCreate = async () => { - useRequest(firewall.createRule(createModel.value)).onSuccess(() => { - show.value = false - createModel.value = { - family: 'ipv4', - protocol: 'tcp', - port_start: 80, - port_end: 80, - address: '', - strategy: 'accept', - direction: 'in' - } - window.$message.success($gettext('Created successfully')) - }) + for (const address of createModel.value.address) { + useRequest( + firewall.createRule({ + ...createModel.value, + address + }) + ).onSuccess(() => { + window.$message.success($gettext('%{ address } created successfully', { address: address })) + show.value = false + }) + } } @@ -127,13 +125,10 @@ const handleCreate = async () => { -