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