|
@@ -299,17 +299,7 @@ func (s *webForwardingService) prepareWafData(ctx context.Context, req *v1.WebFo
|
|
|
return require, formData, nil
|
|
|
}
|
|
|
|
|
|
-func (s *webForwardingService) GetIp(ctx context.Context, gatewayGroupId int) (string, error) {
|
|
|
- WafGatewayGroupRuleId, err := s.gatewayGroupRep.GetGatewayGroupByRuleId(ctx, int64(gatewayGroupId))
|
|
|
- if err != nil {
|
|
|
- return "", err
|
|
|
- }
|
|
|
- ip, err := s.gatewayGroupIpRep.GetGateWayGroupFirstIpByGatewayGroupId(ctx, WafGatewayGroupRuleId.Id)
|
|
|
- if err != nil {
|
|
|
- return "", err
|
|
|
- }
|
|
|
- return ip, nil
|
|
|
-}
|
|
|
+
|
|
|
|
|
|
func (s *webForwardingService) AddWebForwarding(ctx context.Context, req *v1.WebForwardingRequest) error {
|
|
|
require, formData, err := s.prepareWafData(ctx, req)
|
|
@@ -324,19 +314,21 @@ func (s *webForwardingService) AddWebForwarding(ctx context.Context, req *v1.Web
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
+
|
|
|
+ gatewayIps, firstIp, err := s.wafformatter.GetIp(ctx, require.WafGatewayGroupId)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
if req.WebForwardingData.Domain != "" {
|
|
|
- ip, err := s.GetIp(ctx, require.WafGatewayGroupId)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
// 异步任务:将域名添加到白名单
|
|
|
doMain, err := s.wafformatter.ConvertToWildcardDomain(ctx, req.WebForwardingData.Domain)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
+ go s.wafformatter.PublishDomainWhitelistTask(doMain,firstIp, "add")
|
|
|
|
|
|
- go s.wafformatter.PublishDomainWhitelistTask(doMain,ip, "add")
|
|
|
}
|
|
|
+
|
|
|
// IP过白
|
|
|
var ips []string
|
|
|
if req.WebForwardingData.BackendList != nil {
|
|
@@ -347,12 +339,22 @@ func (s *webForwardingService) AddWebForwarding(ctx context.Context, req *v1.Web
|
|
|
}
|
|
|
ips = append(ips,ip)
|
|
|
}
|
|
|
- ips = append(ips, req.WebForwardingData.AllowIpList...)
|
|
|
- go s.wafformatter.PublishIpWhitelistTask(ips, "add")
|
|
|
-
|
|
|
+ go s.wafformatter.PublishIpWhitelistTask(ips, "add","")
|
|
|
+ }
|
|
|
+ var accessRuleIps []string
|
|
|
+ if len(req.WebForwardingData.AllowIpList) > 0 {
|
|
|
+ for _, v := range gatewayIps {
|
|
|
+ for _, ip := range req.WebForwardingData.AllowIpList {
|
|
|
+ if net.ParseIP(ip) != nil{
|
|
|
+ accessRuleIps = append(accessRuleIps, ip)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ go s.wafformatter.PublishIpWhitelistTask(accessRuleIps, "add",v)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|
|
|
+
|
|
|
webModel := s.buildWebForwardingModel(&req.WebForwardingData, wafWebId, require)
|
|
|
|
|
|
id, err := s.webForwardingRepository.AddWebForwarding(ctx, webModel)
|
|
@@ -388,12 +390,13 @@ func (s *webForwardingService) EditWebForwarding(ctx context.Context, req *v1.We
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
- if webData.Domain != req.WebForwardingData.Domain {
|
|
|
- Ip, err := s.GetIp(ctx, webData.WafGatewayGroupId)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
+ gatewayIps, firstIp, err := s.wafformatter.GetIp(ctx, webData.WafGatewayGroupId)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
// 异步任务:将域名添加到白名单
|
|
|
+ if webData.Domain != req.WebForwardingData.Domain {
|
|
|
+
|
|
|
doMain, err := s.wafformatter.ConvertToWildcardDomain(ctx, req.WebForwardingData.Domain)
|
|
|
if err != nil {
|
|
|
return err
|
|
@@ -402,8 +405,8 @@ func (s *webForwardingService) EditWebForwarding(ctx context.Context, req *v1.We
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
- go s.wafformatter.PublishDomainWhitelistTask(oldDomain, Ip, "del")
|
|
|
- go s.wafformatter.PublishDomainWhitelistTask(doMain, Ip, "add")
|
|
|
+ go s.wafformatter.PublishDomainWhitelistTask(oldDomain, firstIp, "del")
|
|
|
+ go s.wafformatter.PublishDomainWhitelistTask(doMain, firstIp, "add")
|
|
|
}
|
|
|
|
|
|
// IP过白
|
|
@@ -412,16 +415,16 @@ func (s *webForwardingService) EditWebForwarding(ctx context.Context, req *v1.We
|
|
|
return err
|
|
|
}
|
|
|
var oldIps []string
|
|
|
+ var oldAllowIps []string
|
|
|
var newIps []string
|
|
|
+ var newAllowIps []string
|
|
|
for _, v := range ipData.BackendList {
|
|
|
ip, _, err := net.SplitHostPort(v.Addr)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
oldIps = append(oldIps, ip)
|
|
|
- }
|
|
|
- if len(ipData.AllowIpList) > 0 {
|
|
|
- oldIps = append(oldIps, ipData.AllowIpList...)
|
|
|
+
|
|
|
}
|
|
|
for _, v := range req.WebForwardingData.BackendList {
|
|
|
ip, _, err := net.SplitHostPort(v.Addr)
|
|
@@ -430,18 +433,41 @@ func (s *webForwardingService) EditWebForwarding(ctx context.Context, req *v1.We
|
|
|
}
|
|
|
newIps = append(newIps, ip)
|
|
|
}
|
|
|
- if len(req.WebForwardingData.AllowIpList) > 0 {
|
|
|
- newIps = append(newIps, req.WebForwardingData.AllowIpList...)
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
addedIps, removedIps := s.wafformatter.findIpDifferences(oldIps, newIps)
|
|
|
if len(addedIps) > 0 {
|
|
|
- go s.wafformatter.PublishIpWhitelistTask(addedIps, "add")
|
|
|
+ go s.wafformatter.PublishIpWhitelistTask(addedIps, "add","")
|
|
|
}
|
|
|
if len(removedIps) > 0 {
|
|
|
- go s.wafformatter.PublishIpWhitelistTask(removedIps, "del")
|
|
|
+ go s.wafformatter.PublishIpWhitelistTask(removedIps, "del","")
|
|
|
+ }
|
|
|
+ if len(ipData.AllowIpList) > 0 {
|
|
|
+ for _, v := range ipData.AllowIpList {
|
|
|
+ if net.ParseIP(v) != nil{
|
|
|
+ oldAllowIps = append(oldAllowIps, v)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if len(req.WebForwardingData.AllowIpList) > 0 {
|
|
|
+ for _, v := range req.WebForwardingData.AllowIpList {
|
|
|
+ if net.ParseIP(v) != nil{
|
|
|
+ newAllowIps = append(newAllowIps, v)
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
+ addedAllowIps, removedAllowIps := s.wafformatter.findIpDifferences(oldAllowIps, newAllowIps)
|
|
|
+ for _, v := range gatewayIps {
|
|
|
+ if len(addedAllowIps) > 0 {
|
|
|
+ go s.wafformatter.PublishIpWhitelistTask(addedAllowIps, "add",v)
|
|
|
+ }
|
|
|
+ if len(removedAllowIps) > 0 {
|
|
|
+ go s.wafformatter.PublishIpWhitelistTask(removedAllowIps, "del",v)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -471,17 +497,19 @@ func (s *webForwardingService) DeleteWebForwarding(ctx context.Context, Ids []in
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
+
|
|
|
+ _, firstIp, err := s.wafformatter.GetIp(ctx, webData.WafGatewayGroupId)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
// 异步任务:将域名添加到白名单
|
|
|
if webData.Domain != "" {
|
|
|
- ip , err := s.GetIp(ctx, webData.WafGatewayGroupId)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
+
|
|
|
doMain, err := s.wafformatter.ConvertToWildcardDomain(ctx, webData.Domain)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
- go s.wafformatter.PublishDomainWhitelistTask(doMain,ip, "del")
|
|
|
+ go s.wafformatter.PublishDomainWhitelistTask(doMain,firstIp, "del")
|
|
|
}
|
|
|
// IP过白
|
|
|
ipData, err := s.webForwardingRepository.GetWebForwardingIpsByID(ctx, Id)
|
|
@@ -502,7 +530,7 @@ func (s *webForwardingService) DeleteWebForwarding(ctx context.Context, Ids []in
|
|
|
ips = append(ips, ipData.AllowIpList...)
|
|
|
}
|
|
|
if len(ips) > 0 {
|
|
|
- go s.wafformatter.PublishIpWhitelistTask(ips, "del")
|
|
|
+ go s.wafformatter.PublishIpWhitelistTask(ips, "del","")
|
|
|
}
|
|
|
|
|
|
|