mirror of
				https://github.com/TeaOSLab/EdgeCommon.git
				synced 2025-11-04 05:00:24 +08:00 
			
		
		
		
	新创建WAF时增加默认选项
This commit is contained in:
		@@ -423,12 +423,18 @@ func (this *NodeConfig) lookupWeb(server *serverconfigs.ServerConfig, web *serve
 | 
				
			|||||||
	if web.FirewallPolicy != nil && web.FirewallPolicy.IsOn {
 | 
						if web.FirewallPolicy != nil && web.FirewallPolicy.IsOn {
 | 
				
			||||||
		// 复用节点的选项设置
 | 
							// 复用节点的选项设置
 | 
				
			||||||
		if server.HTTPFirewallPolicy != nil {
 | 
							if server.HTTPFirewallPolicy != nil {
 | 
				
			||||||
			if (web.FirewallPolicy.BlockOptions == nil || !web.FirewallPolicy.BlockOptions.IsPrior) || server.HTTPFirewallPolicy.BlockOptions != nil {
 | 
								if (web.FirewallPolicy.BlockOptions == nil || !web.FirewallPolicy.BlockOptions.IsPrior) && server.HTTPFirewallPolicy.BlockOptions != nil {
 | 
				
			||||||
				web.FirewallPolicy.BlockOptions = server.HTTPFirewallPolicy.BlockOptions
 | 
									web.FirewallPolicy.BlockOptions = server.HTTPFirewallPolicy.BlockOptions
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			if (web.FirewallPolicy.CaptchaOptions == nil || !web.FirewallPolicy.CaptchaOptions.IsPrior) || server.HTTPFirewallPolicy.CaptchaOptions != nil {
 | 
								if (web.FirewallPolicy.CaptchaOptions == nil || !web.FirewallPolicy.CaptchaOptions.IsPrior) && server.HTTPFirewallPolicy.CaptchaOptions != nil {
 | 
				
			||||||
				web.FirewallPolicy.CaptchaOptions = server.HTTPFirewallPolicy.CaptchaOptions
 | 
									web.FirewallPolicy.CaptchaOptions = server.HTTPFirewallPolicy.CaptchaOptions
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
								if (web.FirewallPolicy.SYNFlood == nil || !web.FirewallPolicy.SYNFlood.IsPrior) && server.HTTPFirewallPolicy.SYNFlood != nil {
 | 
				
			||||||
 | 
									web.FirewallPolicy.SYNFlood = server.HTTPFirewallPolicy.SYNFlood
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								if (web.FirewallPolicy.Log == nil || !web.FirewallPolicy.Log.IsPrior) && server.HTTPFirewallPolicy.Log != nil {
 | 
				
			||||||
 | 
									web.FirewallPolicy.Log = server.HTTPFirewallPolicy.Log
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			web.FirewallPolicy.Mode = server.HTTPFirewallPolicy.Mode
 | 
								web.FirewallPolicy.Mode = server.HTTPFirewallPolicy.Mode
 | 
				
			||||||
			web.FirewallPolicy.UseLocalFirewall = server.HTTPFirewallPolicy.UseLocalFirewall
 | 
								web.FirewallPolicy.UseLocalFirewall = server.HTTPFirewallPolicy.UseLocalFirewall
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ package firewallconfigs
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import "github.com/iwind/TeaGo/maps"
 | 
					import "github.com/iwind/TeaGo/maps"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 防火墙动作配置
 | 
					// FirewallActionConfig 防火墙动作配置
 | 
				
			||||||
type FirewallActionConfig struct {
 | 
					type FirewallActionConfig struct {
 | 
				
			||||||
	Id         int64    `yaml:"id" json:"id"`                 // Id
 | 
						Id         int64    `yaml:"id" json:"id"`                 // Id
 | 
				
			||||||
	Type       string   `yaml:"type" json:"type"`             // 类型
 | 
						Type       string   `yaml:"type" json:"type"`             // 类型
 | 
				
			||||||
@@ -10,7 +10,7 @@ type FirewallActionConfig struct {
 | 
				
			|||||||
	EventLevel string   `yaml:"eventLevel" json:"eventLevel"` // 事件级别
 | 
						EventLevel string   `yaml:"eventLevel" json:"eventLevel"` // 事件级别
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 初始化
 | 
					// Init 初始化
 | 
				
			||||||
func (this *FirewallActionConfig) Init() error {
 | 
					func (this *FirewallActionConfig) Init() error {
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,7 @@
 | 
				
			|||||||
package firewallconfigs
 | 
					package firewallconfigs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import "net/http"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// HTTPFirewallBlockAction url client configure
 | 
					// HTTPFirewallBlockAction url client configure
 | 
				
			||||||
type HTTPFirewallBlockAction struct {
 | 
					type HTTPFirewallBlockAction struct {
 | 
				
			||||||
	IsPrior bool `yaml:"isPrior" json:"isPrior"`
 | 
						IsPrior bool `yaml:"isPrior" json:"isPrior"`
 | 
				
			||||||
@@ -10,3 +12,11 @@ type HTTPFirewallBlockAction struct {
 | 
				
			|||||||
	Timeout    int32         `yaml:"timeout" json:"timeout"`
 | 
						Timeout    int32         `yaml:"timeout" json:"timeout"`
 | 
				
			||||||
	Scope      FirewallScope `yaml:"scope" json:"scope"`
 | 
						Scope      FirewallScope `yaml:"scope" json:"scope"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func DefaultHTTPFirewallBlockAction() *HTTPFirewallBlockAction {
 | 
				
			||||||
 | 
						return &HTTPFirewallBlockAction{
 | 
				
			||||||
 | 
							StatusCode: http.StatusForbidden,
 | 
				
			||||||
 | 
							Body:       "Blocked By WAF",
 | 
				
			||||||
 | 
							Timeout:    60,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,3 +23,12 @@ type HTTPFirewallCaptchaAction struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	Lang string `yaml:"lang" json:"lang"` // 语言,zh-CN, en-US ... TODO 需要实现,目前是根据浏览器Accept-Language动态获取
 | 
						Lang string `yaml:"lang" json:"lang"` // 语言,zh-CN, en-US ... TODO 需要实现,目前是根据浏览器Accept-Language动态获取
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func DefaultHTTPFirewallCaptchaAction() *HTTPFirewallCaptchaAction {
 | 
				
			||||||
 | 
						return &HTTPFirewallCaptchaAction{
 | 
				
			||||||
 | 
							Life:              600,
 | 
				
			||||||
 | 
							MaxFails:          100,
 | 
				
			||||||
 | 
							FailBlockTimeout:  3600,
 | 
				
			||||||
 | 
							FailBlockScopeAll: true,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,6 +8,7 @@ var DefaultHTTPFirewallPolicyLogConfig = &HTTPFirewallPolicyLogConfig{
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type HTTPFirewallPolicyLogConfig struct {
 | 
					type HTTPFirewallPolicyLogConfig struct {
 | 
				
			||||||
 | 
						IsPrior     bool `yaml:"isPrior" json:"isPrior"`
 | 
				
			||||||
	IsOn        bool `yaml:"isOn" json:"isOn"`
 | 
						IsOn        bool `yaml:"isOn" json:"isOn"`
 | 
				
			||||||
	RequestBody bool `yaml:"requestBody" json:"requestBody"`
 | 
						RequestBody bool `yaml:"requestBody" json:"requestBody"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,7 @@ package firewallconfigs
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// SYNFloodConfig Syn flood防护设置
 | 
					// SYNFloodConfig Syn flood防护设置
 | 
				
			||||||
type SYNFloodConfig struct {
 | 
					type SYNFloodConfig struct {
 | 
				
			||||||
 | 
						IsPrior        bool  `yaml:"isPrior" json:"isPrior"`
 | 
				
			||||||
	IsOn           bool  `yaml:"isOn" json:"isOn"`
 | 
						IsOn           bool  `yaml:"isOn" json:"isOn"`
 | 
				
			||||||
	MinAttempts    int32 `yaml:"minAttempts" json:"minAttempts"`       // 最小尝试次数/分钟
 | 
						MinAttempts    int32 `yaml:"minAttempts" json:"minAttempts"`       // 最小尝试次数/分钟
 | 
				
			||||||
	TimeoutSeconds int32 `yaml:"timeoutSeconds" json:"timeoutSeconds"` // 拦截超时时间
 | 
						TimeoutSeconds int32 `yaml:"timeoutSeconds" json:"timeoutSeconds"` // 拦截超时时间
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user