diff --git a/internal/db/models/http_firewall_policy_dao.go b/internal/db/models/http_firewall_policy_dao.go index 320c8b3c..d0beeca4 100644 --- a/internal/db/models/http_firewall_policy_dao.go +++ b/internal/db/models/http_firewall_policy_dao.go @@ -249,7 +249,7 @@ func (this *HTTPFirewallPolicyDAO) UpdateFirewallPolicyInbound(tx *dbs.Tx, polic } // UpdateFirewallPolicy 修改策略 -func (this *HTTPFirewallPolicyDAO) UpdateFirewallPolicy(tx *dbs.Tx, policyId int64, isOn bool, name string, description string, inboundJSON []byte, outboundJSON []byte, blockOptionsJSON []byte, mode firewallconfigs.FirewallMode) error { +func (this *HTTPFirewallPolicyDAO) UpdateFirewallPolicy(tx *dbs.Tx, policyId int64, isOn bool, name string, description string, inboundJSON []byte, outboundJSON []byte, blockOptionsJSON []byte, mode firewallconfigs.FirewallMode, useLocalFirewall bool) error { if policyId <= 0 { return errors.New("invalid policyId") } @@ -272,6 +272,7 @@ func (this *HTTPFirewallPolicyDAO) UpdateFirewallPolicy(tx *dbs.Tx, policyId int if len(blockOptionsJSON) > 0 { op.BlockOptions = blockOptionsJSON } + op.UseLocalFirewall = useLocalFirewall err := this.Save(tx, op) if err != nil { return err @@ -339,6 +340,7 @@ func (this *HTTPFirewallPolicyDAO) ComposeFirewallPolicy(tx *dbs.Tx, policyId in config.IsOn = policy.IsOn == 1 config.Name = policy.Name config.Description = policy.Description + config.UseLocalFirewall = policy.UseLocalFirewall == 1 if len(policy.Mode) == 0 { policy.Mode = firewallconfigs.FirewallModeDefend diff --git a/internal/db/models/http_firewall_policy_model.go b/internal/db/models/http_firewall_policy_model.go index 7a4ea85d..6a3b067e 100644 --- a/internal/db/models/http_firewall_policy_model.go +++ b/internal/db/models/http_firewall_policy_model.go @@ -2,39 +2,41 @@ package models // HTTPFirewallPolicy HTTP防火墙 type HTTPFirewallPolicy struct { - Id uint32 `field:"id"` // ID - TemplateId uint32 `field:"templateId"` // 模版ID - AdminId uint32 `field:"adminId"` // 管理员ID - UserId uint32 `field:"userId"` // 用户ID - ServerId uint32 `field:"serverId"` // 服务ID - GroupId uint32 `field:"groupId"` // 服务分组ID - State uint8 `field:"state"` // 状态 - CreatedAt uint64 `field:"createdAt"` // 创建时间 - IsOn uint8 `field:"isOn"` // 是否启用 - Name string `field:"name"` // 名称 - Description string `field:"description"` // 描述 - Inbound string `field:"inbound"` // 入站规则 - Outbound string `field:"outbound"` // 出站规则 - BlockOptions string `field:"blockOptions"` // BLOCK选项 - Mode string `field:"mode"` // 模式 + Id uint32 `field:"id"` // ID + TemplateId uint32 `field:"templateId"` // 模版ID + AdminId uint32 `field:"adminId"` // 管理员ID + UserId uint32 `field:"userId"` // 用户ID + ServerId uint32 `field:"serverId"` // 服务ID + GroupId uint32 `field:"groupId"` // 服务分组ID + State uint8 `field:"state"` // 状态 + CreatedAt uint64 `field:"createdAt"` // 创建时间 + IsOn uint8 `field:"isOn"` // 是否启用 + Name string `field:"name"` // 名称 + Description string `field:"description"` // 描述 + Inbound string `field:"inbound"` // 入站规则 + Outbound string `field:"outbound"` // 出站规则 + BlockOptions string `field:"blockOptions"` // BLOCK选项 + Mode string `field:"mode"` // 模式 + UseLocalFirewall uint8 `field:"useLocalFirewall"` // 是否自动使用本地防火墙 } type HTTPFirewallPolicyOperator struct { - Id interface{} // ID - TemplateId interface{} // 模版ID - AdminId interface{} // 管理员ID - UserId interface{} // 用户ID - ServerId interface{} // 服务ID - GroupId interface{} // 服务分组ID - State interface{} // 状态 - CreatedAt interface{} // 创建时间 - IsOn interface{} // 是否启用 - Name interface{} // 名称 - Description interface{} // 描述 - Inbound interface{} // 入站规则 - Outbound interface{} // 出站规则 - BlockOptions interface{} // BLOCK选项 - Mode interface{} // 模式 + Id interface{} // ID + TemplateId interface{} // 模版ID + AdminId interface{} // 管理员ID + UserId interface{} // 用户ID + ServerId interface{} // 服务ID + GroupId interface{} // 服务分组ID + State interface{} // 状态 + CreatedAt interface{} // 创建时间 + IsOn interface{} // 是否启用 + Name interface{} // 名称 + Description interface{} // 描述 + Inbound interface{} // 入站规则 + Outbound interface{} // 出站规则 + BlockOptions interface{} // BLOCK选项 + Mode interface{} // 模式 + UseLocalFirewall interface{} // 是否自动使用本地防火墙 } func NewHTTPFirewallPolicyOperator() *HTTPFirewallPolicyOperator { diff --git a/internal/rpc/services/service_http_firewall_policy.go b/internal/rpc/services/service_http_firewall_policy.go index fdc663c0..0294147c 100644 --- a/internal/rpc/services/service_http_firewall_policy.go +++ b/internal/rpc/services/service_http_firewall_policy.go @@ -37,13 +37,14 @@ func (this *HTTPFirewallPolicyService) FindAllEnabledHTTPFirewallPolicies(ctx co result := []*pb.HTTPFirewallPolicy{} for _, p := range policies { result = append(result, &pb.HTTPFirewallPolicy{ - Id: int64(p.Id), - Name: p.Name, - Description: p.Description, - IsOn: p.IsOn == 1, - InboundJSON: []byte(p.Inbound), - OutboundJSON: []byte(p.Outbound), - Mode: p.Mode, + Id: int64(p.Id), + Name: p.Name, + Description: p.Description, + IsOn: p.IsOn == 1, + InboundJSON: []byte(p.Inbound), + OutboundJSON: []byte(p.Outbound), + Mode: p.Mode, + UseLocalFirewall: p.UseLocalFirewall == 1, }) } @@ -284,7 +285,7 @@ func (this *HTTPFirewallPolicyService) UpdateHTTPFirewallPolicy(ctx context.Cont return nil, err } - err = models.SharedHTTPFirewallPolicyDAO.UpdateFirewallPolicy(tx, req.HttpFirewallPolicyId, req.IsOn, req.Name, req.Description, inboundConfigJSON, outboundConfigJSON, req.BlockOptionsJSON, req.Mode) + err = models.SharedHTTPFirewallPolicyDAO.UpdateFirewallPolicy(tx, req.HttpFirewallPolicyId, req.IsOn, req.Name, req.Description, inboundConfigJSON, outboundConfigJSON, req.BlockOptionsJSON, req.Mode, req.UseLocalFirewall) if err != nil { return nil, err } @@ -377,13 +378,14 @@ func (this *HTTPFirewallPolicyService) ListEnabledHTTPFirewallPolicies(ctx conte result := []*pb.HTTPFirewallPolicy{} for _, p := range policies { result = append(result, &pb.HTTPFirewallPolicy{ - Id: int64(p.Id), - Name: p.Name, - Description: p.Description, - IsOn: p.IsOn == 1, - InboundJSON: []byte(p.Inbound), - OutboundJSON: []byte(p.Outbound), - Mode: p.Mode, + Id: int64(p.Id), + Name: p.Name, + Description: p.Description, + IsOn: p.IsOn == 1, + InboundJSON: []byte(p.Inbound), + OutboundJSON: []byte(p.Outbound), + Mode: p.Mode, + UseLocalFirewall: p.UseLocalFirewall == 1, }) }