mirror of
https://github.com/TeaOSLab/EdgeNode.git
synced 2025-12-16 07:46:36 +08:00
WAF操作符增加包含任一单词、包含所有单词、不包含任一单词
This commit is contained in:
@@ -4,34 +4,38 @@ type RuleOperator = string
|
||||
type RuleCaseInsensitive = string
|
||||
|
||||
const (
|
||||
RuleOperatorGt RuleOperator = "gt"
|
||||
RuleOperatorGte RuleOperator = "gte"
|
||||
RuleOperatorLt RuleOperator = "lt"
|
||||
RuleOperatorLte RuleOperator = "lte"
|
||||
RuleOperatorEq RuleOperator = "eq"
|
||||
RuleOperatorNeq RuleOperator = "neq"
|
||||
RuleOperatorEqString RuleOperator = "eq string"
|
||||
RuleOperatorNeqString RuleOperator = "neq string"
|
||||
RuleOperatorMatch RuleOperator = "match"
|
||||
RuleOperatorNotMatch RuleOperator = "not match"
|
||||
RuleOperatorWildcardMatch RuleOperator = "wildcard match"
|
||||
RuleOperatorWildcardNotMatch RuleOperator = "wildcard not match"
|
||||
RuleOperatorContains RuleOperator = "contains"
|
||||
RuleOperatorNotContains RuleOperator = "not contains"
|
||||
RuleOperatorPrefix RuleOperator = "prefix"
|
||||
RuleOperatorSuffix RuleOperator = "suffix"
|
||||
RuleOperatorContainsAny RuleOperator = "contains any"
|
||||
RuleOperatorContainsAll RuleOperator = "contains all"
|
||||
RuleOperatorInIPList RuleOperator = "in ip list"
|
||||
RuleOperatorHasKey RuleOperator = "has key" // has key in slice or map
|
||||
RuleOperatorVersionGt RuleOperator = "version gt"
|
||||
RuleOperatorVersionLt RuleOperator = "version lt"
|
||||
RuleOperatorVersionRange RuleOperator = "version range"
|
||||
RuleOperatorGt RuleOperator = "gt"
|
||||
RuleOperatorGte RuleOperator = "gte"
|
||||
RuleOperatorLt RuleOperator = "lt"
|
||||
RuleOperatorLte RuleOperator = "lte"
|
||||
RuleOperatorEq RuleOperator = "eq"
|
||||
RuleOperatorNeq RuleOperator = "neq"
|
||||
RuleOperatorEqString RuleOperator = "eq string"
|
||||
RuleOperatorNeqString RuleOperator = "neq string"
|
||||
RuleOperatorMatch RuleOperator = "match"
|
||||
RuleOperatorNotMatch RuleOperator = "not match"
|
||||
RuleOperatorWildcardMatch RuleOperator = "wildcard match"
|
||||
RuleOperatorWildcardNotMatch RuleOperator = "wildcard not match"
|
||||
RuleOperatorContains RuleOperator = "contains"
|
||||
RuleOperatorNotContains RuleOperator = "not contains"
|
||||
RuleOperatorPrefix RuleOperator = "prefix"
|
||||
RuleOperatorSuffix RuleOperator = "suffix"
|
||||
RuleOperatorContainsAny RuleOperator = "contains any"
|
||||
RuleOperatorContainsAll RuleOperator = "contains all"
|
||||
RuleOperatorContainsAnyWord RuleOperator = "contains any word"
|
||||
RuleOperatorContainsAllWords RuleOperator = "contains all word"
|
||||
RuleOperatorNotContainsAnyWord RuleOperator = "not contains any word"
|
||||
RuleOperatorInIPList RuleOperator = "in ip list"
|
||||
RuleOperatorHasKey RuleOperator = "has key" // has key in slice or map
|
||||
RuleOperatorVersionGt RuleOperator = "version gt"
|
||||
RuleOperatorVersionLt RuleOperator = "version lt"
|
||||
RuleOperatorVersionRange RuleOperator = "version range"
|
||||
|
||||
RuleOperatorContainsBinary RuleOperator = "contains binary" // contains binary
|
||||
RuleOperatorNotContainsBinary RuleOperator = "not contains binary" // not contains binary
|
||||
|
||||
// ip
|
||||
|
||||
RuleOperatorEqIP RuleOperator = "eq ip"
|
||||
RuleOperatorGtIP RuleOperator = "gt ip"
|
||||
RuleOperatorGteIP RuleOperator = "gte ip"
|
||||
@@ -42,10 +46,6 @@ const (
|
||||
RuleOperatorIPMod10 RuleOperator = "ip mod 10"
|
||||
RuleOperatorIPMod100 RuleOperator = "ip mod 100"
|
||||
RuleOperatorIPMod RuleOperator = "ip mod"
|
||||
|
||||
RuleCaseInsensitiveNone = "none"
|
||||
RuleCaseInsensitiveYes = "yes"
|
||||
RuleCaseInsensitiveNo = "no"
|
||||
)
|
||||
|
||||
type RuleOperatorDefinition struct {
|
||||
@@ -54,174 +54,3 @@ type RuleOperatorDefinition struct {
|
||||
Description string
|
||||
CaseInsensitive RuleCaseInsensitive // default caseInsensitive setting
|
||||
}
|
||||
|
||||
var AllRuleOperators = []*RuleOperatorDefinition{
|
||||
{
|
||||
Name: "数值大于",
|
||||
Code: RuleOperatorGt,
|
||||
Description: "使用数值对比大于",
|
||||
CaseInsensitive: RuleCaseInsensitiveNone,
|
||||
},
|
||||
{
|
||||
Name: "数值大于等于",
|
||||
Code: RuleOperatorGte,
|
||||
Description: "使用数值对比大于等于",
|
||||
CaseInsensitive: RuleCaseInsensitiveNone,
|
||||
},
|
||||
{
|
||||
Name: "数值小于",
|
||||
Code: RuleOperatorLt,
|
||||
Description: "使用数值对比小于",
|
||||
CaseInsensitive: RuleCaseInsensitiveNone,
|
||||
},
|
||||
{
|
||||
Name: "数值小于等于",
|
||||
Code: RuleOperatorLte,
|
||||
Description: "使用数值对比小于等于",
|
||||
CaseInsensitive: RuleCaseInsensitiveNone,
|
||||
},
|
||||
{
|
||||
Name: "数值等于",
|
||||
Code: RuleOperatorEq,
|
||||
Description: "使用数值对比等于",
|
||||
CaseInsensitive: RuleCaseInsensitiveNone,
|
||||
},
|
||||
{
|
||||
Name: "数值不等于",
|
||||
Code: RuleOperatorNeq,
|
||||
Description: "使用数值对比不等于",
|
||||
CaseInsensitive: RuleCaseInsensitiveNone,
|
||||
},
|
||||
{
|
||||
Name: "字符串等于",
|
||||
Code: RuleOperatorEqString,
|
||||
Description: "使用字符串对比等于",
|
||||
CaseInsensitive: RuleCaseInsensitiveNo,
|
||||
},
|
||||
{
|
||||
Name: "字符串不等于",
|
||||
Code: RuleOperatorNeqString,
|
||||
Description: "使用字符串对比不等于",
|
||||
CaseInsensitive: RuleCaseInsensitiveNo,
|
||||
},
|
||||
{
|
||||
Name: "正则匹配",
|
||||
Code: RuleOperatorMatch,
|
||||
Description: "使用正则表达式匹配,在头部使用(?i)表示不区分大小写,<a href=\"http://teaos.cn/doc/regexp/Regexp.md\" target=\"_blank\">正则表达式语法 »</a>",
|
||||
CaseInsensitive: RuleCaseInsensitiveYes,
|
||||
},
|
||||
{
|
||||
Name: "正则不匹配",
|
||||
Code: RuleOperatorNotMatch,
|
||||
Description: "使用正则表达式不匹配,在头部使用(?i)表示不区分大小写,<a href=\"http://teaos.cn/doc/regexp/Regexp.md\" target=\"_blank\">正则表达式语法 »</a>",
|
||||
CaseInsensitive: RuleCaseInsensitiveYes,
|
||||
},
|
||||
{
|
||||
Name: "包含字符串",
|
||||
Code: RuleOperatorContains,
|
||||
Description: "包含某个字符串",
|
||||
CaseInsensitive: RuleCaseInsensitiveNo,
|
||||
},
|
||||
{
|
||||
Name: "不包含字符串",
|
||||
Code: RuleOperatorNotContains,
|
||||
Description: "不包含某个字符串",
|
||||
CaseInsensitive: RuleCaseInsensitiveNo,
|
||||
},
|
||||
{
|
||||
Name: "包含前缀",
|
||||
Code: RuleOperatorPrefix,
|
||||
Description: "包含某个前缀",
|
||||
CaseInsensitive: RuleCaseInsensitiveNo,
|
||||
},
|
||||
{
|
||||
Name: "包含后缀",
|
||||
Code: RuleOperatorSuffix,
|
||||
Description: "包含某个后缀",
|
||||
CaseInsensitive: RuleCaseInsensitiveNo,
|
||||
},
|
||||
{
|
||||
Name: "包含索引",
|
||||
Code: RuleOperatorHasKey,
|
||||
Description: "对于一组数据拥有某个键值或者索引",
|
||||
CaseInsensitive: RuleCaseInsensitiveNo,
|
||||
},
|
||||
{
|
||||
Name: "版本号大于",
|
||||
Code: RuleOperatorVersionGt,
|
||||
Description: "对比版本号大于",
|
||||
CaseInsensitive: RuleCaseInsensitiveNo,
|
||||
},
|
||||
{
|
||||
Name: "版本号小于",
|
||||
Code: RuleOperatorVersionLt,
|
||||
Description: "对比版本号小于",
|
||||
CaseInsensitive: RuleCaseInsensitiveNo,
|
||||
},
|
||||
{
|
||||
Name: "版本号范围",
|
||||
Code: RuleOperatorVersionRange,
|
||||
Description: "判断版本号在某个范围内,格式为version1,version2",
|
||||
CaseInsensitive: RuleCaseInsensitiveNo,
|
||||
},
|
||||
{
|
||||
Name: "IP等于",
|
||||
Code: RuleOperatorEqIP,
|
||||
Description: "将参数转换为IP进行对比",
|
||||
CaseInsensitive: RuleCaseInsensitiveNo,
|
||||
},
|
||||
{
|
||||
Name: "IP大于",
|
||||
Code: RuleOperatorGtIP,
|
||||
Description: "将参数转换为IP进行对比",
|
||||
CaseInsensitive: RuleCaseInsensitiveNo,
|
||||
},
|
||||
{
|
||||
Name: "IP大于等于",
|
||||
Code: RuleOperatorGteIP,
|
||||
Description: "将参数转换为IP进行对比",
|
||||
CaseInsensitive: RuleCaseInsensitiveNo,
|
||||
},
|
||||
{
|
||||
Name: "IP小于",
|
||||
Code: RuleOperatorLtIP,
|
||||
Description: "将参数转换为IP进行对比",
|
||||
CaseInsensitive: RuleCaseInsensitiveNo,
|
||||
},
|
||||
{
|
||||
Name: "IP小于等于",
|
||||
Code: RuleOperatorLteIP,
|
||||
Description: "将参数转换为IP进行对比",
|
||||
CaseInsensitive: RuleCaseInsensitiveNo,
|
||||
},
|
||||
{
|
||||
Name: "IP范围",
|
||||
Code: RuleOperatorIPRange,
|
||||
Description: "IP在某个范围之内,范围格式可以是英文逗号分隔的ip1,ip2,或者CIDR格式的ip/bits",
|
||||
CaseInsensitive: RuleCaseInsensitiveNo,
|
||||
},
|
||||
{
|
||||
Name: "不在IP范围",
|
||||
Code: RuleOperatorNotIPRange,
|
||||
Description: "IP不在某个范围之内,范围格式可以是英文逗号分隔的ip1,ip2,或者CIDR格式的ip/bits",
|
||||
CaseInsensitive: RuleCaseInsensitiveNo,
|
||||
},
|
||||
{
|
||||
Name: "IP取模10",
|
||||
Code: RuleOperatorIPMod10,
|
||||
Description: "对IP参数值取模,除数为10,对比值为余数",
|
||||
CaseInsensitive: RuleCaseInsensitiveNo,
|
||||
},
|
||||
{
|
||||
Name: "IP取模100",
|
||||
Code: RuleOperatorIPMod100,
|
||||
Description: "对IP参数值取模,除数为100,对比值为余数",
|
||||
CaseInsensitive: RuleCaseInsensitiveNo,
|
||||
},
|
||||
{
|
||||
Name: "IP取模",
|
||||
Code: RuleOperatorIPMod,
|
||||
Description: "对IP参数值取模,对比值格式为:除数,余数,比如10,1",
|
||||
CaseInsensitive: RuleCaseInsensitiveNo,
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user