2
0
mirror of https://github.com/acepanel/panel.git synced 2026-02-04 07:57:21 +08:00

feat: 防火墙正确处理多ip规则

This commit is contained in:
耗子
2024-11-22 19:52:02 +08:00
parent a96bbf3dfb
commit e1f074f116

View File

@@ -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 ruleaddress 不支持多个地址,需要单独添加
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)