Files
waf-platform/EdgeCommon/pkg/nodeconfigs/http_cc_policy_plus.go
2026-02-04 20:27:13 +08:00

57 lines
1.9 KiB
Go

// Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
//go:build plus
package nodeconfigs
import (
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/firewallconfigs"
)
const (
HTTPCCPolicyMaxConnectionsPerIP = 30
HTTPCCPolicyRedirectsCheckingValidatePath = "/GE/CC/VALIDATOR"
HTTPCCPolicyRedirectsCheckingDurationSeconds = 120
HTTPCCPolicyRedirectsCheckingMaxRedirects = 30
HTTPCCPolicyRedirectsCheckingBlockSeconds = 3600
)
// HTTPCCPolicy CC策略
type HTTPCCPolicy struct {
IsOn bool `json:"isOn" yaml:"isOn"`
Thresholds []*serverconfigs.HTTPCCThreshold `json:"thresholds" yaml:"thresholds"` // 阈值
MaxConnectionsPerIP int `json:"maxConnectionsPerIP" yaml:"maxConnectionsPerIP"` // 单IP最大并发连接数
// 跳转校验
RedirectsChecking struct {
ValidatePath string `json:"validatePath" yaml:"validatePath"` // 校验路径
DurationSeconds int `json:"durationSeconds" yaml:"durationSeconds"` // 无效跳转检测周期
MaxRedirects int `json:"maxRedirects" yaml:"maxRedirects"` // 最大跳转次数
BlockSeconds int `json:"blockSeconds" yaml:"blockSeconds"` // 拦截时间
} `json:"redirectsChecking" yaml:"redirectsChecking"`
// 防火墙策略
Firewall struct {
Scope firewallconfigs.FirewallScope `json:"scope" yaml:"scope"`
} `json:"firewall" yaml:"firewall"`
}
func NewHTTPCCPolicy() *HTTPCCPolicy {
var policy = &HTTPCCPolicy{
IsOn: true,
}
policy.Firewall.Scope = firewallconfigs.FirewallScopeGlobal
return policy
}
func (this *HTTPCCPolicy) Init() error {
return nil
}
func (this *HTTPCCPolicy) FirewallScope() firewallconfigs.FirewallScope {
if len(this.Firewall.Scope) == 0 {
return firewallconfigs.FirewallScopeGlobal
}
return this.Firewall.Scope
}