mirror of
				https://github.com/TeaOSLab/EdgeCommon.git
				synced 2025-11-04 05:00:24 +08:00 
			
		
		
		
	WAF操作符元数据中增加数据类型选项,以便于优化交互界面
This commit is contained in:
		@@ -51,206 +51,240 @@ type RuleOperatorDefinition struct {
 | 
			
		||||
	Code            string                          `json:"code"`
 | 
			
		||||
	Description     string                          `json:"description"`
 | 
			
		||||
	CaseInsensitive HTTPFirewallRuleCaseInsensitive `json:"caseInsensitive"` // default caseInsensitive setting
 | 
			
		||||
	DataType        string                          `json:"dataType"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var AllRuleOperators = []*RuleOperatorDefinition{
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "字符串等于",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorEqString,
 | 
			
		||||
		Description:     "使用字符串对比等于",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "字符串不等于",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorNeqString,
 | 
			
		||||
		Description:     "使用字符串对比不等于",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "正则匹配",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorMatch,
 | 
			
		||||
		Description:     "使用正则表达式匹配,在头部使用(?i)表示不区分大小写,<a href=\"https://goedge.cn/docs/Appendix/Regexp/Index.md\" target=\"_blank\">正则表达式语法 »</a>",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveYes,
 | 
			
		||||
		DataType:        "regexp",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "正则不匹配",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorNotMatch,
 | 
			
		||||
		Description:     "使用正则表达式不匹配,在头部使用(?i)表示不区分大小写,<a href=\"https://goedge.cn/docs/Appendix/Regexp/Index.md\" target=\"_blank\">正则表达式语法 »</a>",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveYes,
 | 
			
		||||
		DataType:        "regexp",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "字符串等于",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorEqString,
 | 
			
		||||
		Description:     "使用字符串对比等于",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
 | 
			
		||||
		DataType:        "string",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "字符串不等于",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorNeqString,
 | 
			
		||||
		Description:     "使用字符串对比不等于",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
 | 
			
		||||
		DataType:        "string",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "包含字符串",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorContains,
 | 
			
		||||
		Description:     "包含某个字符串,比如Hello World包含了World",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
 | 
			
		||||
		DataType:        "string",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "不包含字符串",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorNotContains,
 | 
			
		||||
		Description:     "不包含某个字符串,比如Hello字符串中不包含Hi",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
 | 
			
		||||
		DataType:        "string",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "包含任一字符串",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorContainsAny,
 | 
			
		||||
		Description:     "包含字符串列表中的任意一个,比如/hello/world包含/hello和/hi中的/hello,每行一个字符串",
 | 
			
		||||
		Description:     "包含字符串列表中的任意一个,比如/hello/world包含/hello和/hi中的/hello,对比值中每行一个字符串",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
 | 
			
		||||
		DataType:        "strings",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "包含所有字符串",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorContainsAll,
 | 
			
		||||
		Description:     "包含字符串列表中的所有字符串,比如/hello/world必须包含/hello和/world,每行一个字符串",
 | 
			
		||||
		Description:     "包含字符串列表中的所有字符串,比如/hello/world必须包含/hello和/world,对比值中每行一个字符串",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
 | 
			
		||||
		DataType:        "strings",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "包含前缀",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorPrefix,
 | 
			
		||||
		Description:     "包含字符串前缀部分,比如/hello前缀会匹配/hello, /hello/world等",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
 | 
			
		||||
		DataType:        "string",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "包含后缀",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorSuffix,
 | 
			
		||||
		Description:     "包含字符串后缀部分,比如/hello后缀会匹配/hello, /hi/hello等",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
 | 
			
		||||
		DataType:        "string",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "包含二进制数据",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorContainsBinary,
 | 
			
		||||
		Description:     "包含一组二进制数据",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
 | 
			
		||||
		DataType:        "string",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "不包含二进制数据",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorNotContainsBinary,
 | 
			
		||||
		Description:     "不包含一组二进制数据",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
 | 
			
		||||
		DataType:        "string",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "数值大于",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorGt,
 | 
			
		||||
		Description:     "使用数值对比大于,对比值需要是一个数字",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
 | 
			
		||||
		DataType:        "number",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "数值大于等于",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorGte,
 | 
			
		||||
		Description:     "使用数值对比大于等于,对比值需要是一个数字",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
 | 
			
		||||
		DataType:        "number",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "数值小于",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorLt,
 | 
			
		||||
		Description:     "使用数值对比小于,对比值需要是一个数字",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
 | 
			
		||||
		DataType:        "number",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "数值小于等于",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorLte,
 | 
			
		||||
		Description:     "使用数值对比小于等于,对比值需要是一个数字",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
 | 
			
		||||
		DataType:        "number",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "数值等于",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorEq,
 | 
			
		||||
		Description:     "使用数值对比等于,对比值需要是一个数字",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
 | 
			
		||||
		DataType:        "number",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "数值不等于",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorNeq,
 | 
			
		||||
		Description:     "使用数值对比不等于,对比值需要是一个数字",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
 | 
			
		||||
		DataType:        "number",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "包含索引",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorHasKey,
 | 
			
		||||
		Description:     "对于一组数据拥有某个键值或者索引",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
 | 
			
		||||
		DataType:        "string|number",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "版本号大于",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorVersionGt,
 | 
			
		||||
		Description:     "对比版本号大于",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
 | 
			
		||||
		DataType:        "version",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "版本号小于",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorVersionLt,
 | 
			
		||||
		Description:     "对比版本号小于",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
 | 
			
		||||
		DataType:        "version",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "版本号范围",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorVersionRange,
 | 
			
		||||
		Description:     "判断版本号在某个范围内,格式为version1,version2",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
 | 
			
		||||
		DataType:        "version",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "IP等于",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorEqIP,
 | 
			
		||||
		Description:     "将参数转换为IP进行对比,只能对比单个IP",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
 | 
			
		||||
		DataType:        "ip",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "在一组IP中",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorInIPList,
 | 
			
		||||
		Description:     "判断参数IP在一组IP内,每行一个IP",
 | 
			
		||||
		Description:     "判断参数IP在一组IP内,对比值中每行一个IP",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
 | 
			
		||||
		DataType:        "ips",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "IP大于",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorGtIP,
 | 
			
		||||
		Description:     "将参数转换为IP进行对比",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
 | 
			
		||||
		DataType:        "ip",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "IP大于等于",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorGteIP,
 | 
			
		||||
		Description:     "将参数转换为IP进行对比",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
 | 
			
		||||
		DataType:        "ip",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "IP小于",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorLtIP,
 | 
			
		||||
		Description:     "将参数转换为IP进行对比",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
 | 
			
		||||
		DataType:        "ip",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "IP小于等于",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorLteIP,
 | 
			
		||||
		Description:     "将参数转换为IP进行对比",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
 | 
			
		||||
		DataType:        "ip",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "IP范围",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorIPRange,
 | 
			
		||||
		Description:     "IP在某个范围之内,范围格式可以是英文逗号分隔的<code-label>开始IP,结束IP</code-label>,比如<code-label>192.168.1.100,192.168.2.200</code-label>;或者CIDR格式的ip/bits,比如<code-label>192.168.2.1/24</code-label>;或者单个IP。可以填写多行,每行一个IP范围。",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
 | 
			
		||||
		DataType:        "ips",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "不在IP范围",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorNotIPRange,
 | 
			
		||||
		Description:     "IP不在某个范围之内,范围格式可以是英文逗号分隔的<code-label>开始IP,结束IP</code-label>,比如<code-label>192.168.1.100,192.168.2.200</code-label>;或者CIDR格式的ip/bits,比如<code-label>192.168.2.1/24</code-label>;或者单个IP。可以填写多行,每行一个IP范围。",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
 | 
			
		||||
		DataType:        "ips",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "IP取模10",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorIPMod10,
 | 
			
		||||
		Description:     "对IP参数值取模,除数为10,对比值为余数",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
 | 
			
		||||
		DataType:        "number",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "IP取模100",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorIPMod100,
 | 
			
		||||
		Description:     "对IP参数值取模,除数为100,对比值为余数",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
 | 
			
		||||
		DataType:        "number",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name:            "IP取模",
 | 
			
		||||
		Code:            HTTPFirewallRuleOperatorIPMod,
 | 
			
		||||
		Description:     "对IP参数值取模,对比值格式为:除数,余数,比如10,1",
 | 
			
		||||
		CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
 | 
			
		||||
		DataType:        "number",
 | 
			
		||||
	},
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user