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 () => { -