diff --git a/pkg/serverconfigs/firewallconfigs/http_firewall_rule_operator.go b/pkg/serverconfigs/firewallconfigs/http_firewall_rule_operator.go index fdbe861..f6af197 100644 --- a/pkg/serverconfigs/firewallconfigs/http_firewall_rule_operator.go +++ b/pkg/serverconfigs/firewallconfigs/http_firewall_rule_operator.go @@ -4,26 +4,28 @@ type HTTPFirewallRuleOperator = string type HTTPFirewallRuleCaseInsensitive = string const ( - HTTPFirewallRuleOperatorGt HTTPFirewallRuleOperator = "gt" - HTTPFirewallRuleOperatorGte HTTPFirewallRuleOperator = "gte" - HTTPFirewallRuleOperatorLt HTTPFirewallRuleOperator = "lt" - HTTPFirewallRuleOperatorLte HTTPFirewallRuleOperator = "lte" - HTTPFirewallRuleOperatorEq HTTPFirewallRuleOperator = "eq" - HTTPFirewallRuleOperatorNeq HTTPFirewallRuleOperator = "neq" - HTTPFirewallRuleOperatorEqString HTTPFirewallRuleOperator = "eq string" - HTTPFirewallRuleOperatorNeqString HTTPFirewallRuleOperator = "neq string" - HTTPFirewallRuleOperatorMatch HTTPFirewallRuleOperator = "match" - HTTPFirewallRuleOperatorNotMatch HTTPFirewallRuleOperator = "not match" - HTTPFirewallRuleOperatorContains HTTPFirewallRuleOperator = "contains" - HTTPFirewallRuleOperatorNotContains HTTPFirewallRuleOperator = "not contains" - HTTPFirewallRuleOperatorPrefix HTTPFirewallRuleOperator = "prefix" - HTTPFirewallRuleOperatorSuffix HTTPFirewallRuleOperator = "suffix" - HTTPFirewallRuleOperatorContainsAny HTTPFirewallRuleOperator = "contains any" - HTTPFirewallRuleOperatorContainsAll HTTPFirewallRuleOperator = "contains all" - HTTPFirewallRuleOperatorHasKey HTTPFirewallRuleOperator = "has key" // has key in slice or map - HTTPFirewallRuleOperatorVersionGt HTTPFirewallRuleOperator = "version gt" - HTTPFirewallRuleOperatorVersionLt HTTPFirewallRuleOperator = "version lt" - HTTPFirewallRuleOperatorVersionRange HTTPFirewallRuleOperator = "version range" + HTTPFirewallRuleOperatorGt HTTPFirewallRuleOperator = "gt" + HTTPFirewallRuleOperatorGte HTTPFirewallRuleOperator = "gte" + HTTPFirewallRuleOperatorLt HTTPFirewallRuleOperator = "lt" + HTTPFirewallRuleOperatorLte HTTPFirewallRuleOperator = "lte" + HTTPFirewallRuleOperatorEq HTTPFirewallRuleOperator = "eq" + HTTPFirewallRuleOperatorNeq HTTPFirewallRuleOperator = "neq" + HTTPFirewallRuleOperatorEqString HTTPFirewallRuleOperator = "eq string" + HTTPFirewallRuleOperatorNeqString HTTPFirewallRuleOperator = "neq string" + HTTPFirewallRuleOperatorMatch HTTPFirewallRuleOperator = "match" + HTTPFirewallRuleOperatorNotMatch HTTPFirewallRuleOperator = "not match" + HTTPFirewallRuleOperatorWildcardMatch HTTPFirewallRuleOperator = "wildcard match" + HTTPFirewallRuleOperatorWildcardNotMatch HTTPFirewallRuleOperator = "wildcard not match" + HTTPFirewallRuleOperatorContains HTTPFirewallRuleOperator = "contains" + HTTPFirewallRuleOperatorNotContains HTTPFirewallRuleOperator = "not contains" + HTTPFirewallRuleOperatorPrefix HTTPFirewallRuleOperator = "prefix" + HTTPFirewallRuleOperatorSuffix HTTPFirewallRuleOperator = "suffix" + HTTPFirewallRuleOperatorContainsAny HTTPFirewallRuleOperator = "contains any" + HTTPFirewallRuleOperatorContainsAll HTTPFirewallRuleOperator = "contains all" + HTTPFirewallRuleOperatorHasKey HTTPFirewallRuleOperator = "has key" // has key in slice or map + HTTPFirewallRuleOperatorVersionGt HTTPFirewallRuleOperator = "version gt" + HTTPFirewallRuleOperatorVersionLt HTTPFirewallRuleOperator = "version lt" + HTTPFirewallRuleOperatorVersionRange HTTPFirewallRuleOperator = "version range" HTTPFirewallRuleOperatorContainsBinary HTTPFirewallRuleOperator = "contains binary" // contains binary HTTPFirewallRuleOperatorNotContainsBinary HTTPFirewallRuleOperator = "not contains binary" // not contains binary @@ -58,140 +60,154 @@ var AllRuleOperators = []*RuleOperatorDefinition{ { Name: "正则匹配", Code: HTTPFirewallRuleOperatorMatch, - Description: "使用正则表达式匹配,在头部使用(?i)表示不区分大小写,正则表达式语法 »", + Description: "使用正则表达式匹配,在头部使用(?i)表示不区分大小写,正则表达式语法 »。", CaseInsensitive: HTTPFirewallRuleCaseInsensitiveYes, DataType: "regexp", }, { Name: "正则不匹配", Code: HTTPFirewallRuleOperatorNotMatch, - Description: "使用正则表达式不匹配,在头部使用(?i)表示不区分大小写,正则表达式语法 »", + Description: "使用正则表达式不匹配,在头部使用(?i)表示不区分大小写,正则表达式语法 »。", CaseInsensitive: HTTPFirewallRuleCaseInsensitiveYes, DataType: "regexp", }, + { + Name: "通配符匹配", + Code: HTTPFirewallRuleOperatorWildcardMatch, + Description: "判断是否和指定的通配符匹配,可以在对比值中使用星号通配符(*)表示任意字符。", + CaseInsensitive: HTTPFirewallRuleCaseInsensitiveYes, + DataType: "wildcard", + }, + { + Name: "通配符不匹配", + Code: HTTPFirewallRuleOperatorWildcardNotMatch, + Description: "判断是否和指定的通配符不匹配,可以在对比值中使用星号通配符(*)表示任意字符。", + CaseInsensitive: HTTPFirewallRuleCaseInsensitiveYes, + DataType: "wildcard", + }, { Name: "字符串等于", Code: HTTPFirewallRuleOperatorEqString, - Description: "使用字符串对比等于", + Description: "使用字符串对比等于。", CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo, DataType: "string", }, { Name: "字符串不等于", Code: HTTPFirewallRuleOperatorNeqString, - Description: "使用字符串对比不等于", + Description: "使用字符串对比不等于。", CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo, DataType: "string", }, { Name: "包含字符串", Code: HTTPFirewallRuleOperatorContains, - Description: "包含某个字符串,比如Hello World包含了World", + Description: "包含某个字符串,比如Hello World包含了World。", CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo, DataType: "string", }, { Name: "不包含字符串", Code: HTTPFirewallRuleOperatorNotContains, - Description: "不包含某个字符串,比如Hello字符串中不包含Hi", + 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等", + Description: "包含字符串前缀部分,比如/hello前缀会匹配/hello, /hello/world等。", CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo, DataType: "string", }, { Name: "包含后缀", Code: HTTPFirewallRuleOperatorSuffix, - Description: "包含字符串后缀部分,比如/hello后缀会匹配/hello, /hi/hello等", + Description: "包含字符串后缀部分,比如/hello后缀会匹配/hello, /hi/hello等。", CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo, DataType: "string", }, { Name: "包含二进制数据", Code: HTTPFirewallRuleOperatorContainsBinary, - Description: "包含一组二进制数据", + Description: "包含一组二进制数据。", CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo, DataType: "string", }, { Name: "不包含二进制数据", Code: HTTPFirewallRuleOperatorNotContainsBinary, - Description: "不包含一组二进制数据", + Description: "不包含一组二进制数据。", CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo, DataType: "string", }, { Name: "数值大于", Code: HTTPFirewallRuleOperatorGt, - Description: "使用数值对比大于,对比值需要是一个数字", + Description: "使用数值对比大于,对比值需要是一个数字。", CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone, DataType: "number", }, { Name: "数值大于等于", Code: HTTPFirewallRuleOperatorGte, - Description: "使用数值对比大于等于,对比值需要是一个数字", + Description: "使用数值对比大于等于,对比值需要是一个数字。", CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone, DataType: "number", }, { Name: "数值小于", Code: HTTPFirewallRuleOperatorLt, - Description: "使用数值对比小于,对比值需要是一个数字", + Description: "使用数值对比小于,对比值需要是一个数字。", CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone, DataType: "number", }, { Name: "数值小于等于", Code: HTTPFirewallRuleOperatorLte, - Description: "使用数值对比小于等于,对比值需要是一个数字", + Description: "使用数值对比小于等于,对比值需要是一个数字。", CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone, DataType: "number", }, { Name: "数值等于", Code: HTTPFirewallRuleOperatorEq, - Description: "使用数值对比等于,对比值需要是一个数字", + Description: "使用数值对比等于,对比值需要是一个数字。", CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone, DataType: "number", }, { Name: "数值不等于", Code: HTTPFirewallRuleOperatorNeq, - Description: "使用数值对比不等于,对比值需要是一个数字", + Description: "使用数值对比不等于,对比值需要是一个数字。", CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone, DataType: "number", }, { Name: "包含索引", Code: HTTPFirewallRuleOperatorHasKey, - Description: "对于一组数据拥有某个键值或者索引", + Description: "对于一组数据拥有某个键值或者索引。", CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo, DataType: "string|number", }, { Name: "版本号大于", Code: HTTPFirewallRuleOperatorVersionGt, - Description: "对比版本号大于", + Description: "对比版本号大于。", CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone, DataType: "version", }, @@ -205,49 +221,49 @@ var AllRuleOperators = []*RuleOperatorDefinition{ { Name: "版本号范围", Code: HTTPFirewallRuleOperatorVersionRange, - Description: "判断版本号在某个范围内,格式为version1,version2", + Description: "判断版本号在某个范围内,格式为 起始version1,结束version2。", CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone, - DataType: "version", + DataType: "versionRange", }, { Name: "IP等于", Code: HTTPFirewallRuleOperatorEqIP, - Description: "将参数转换为IP进行对比,只能对比单个IP", + 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进行对比", + Description: "将参数转换为IP进行对比。", CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone, DataType: "ip", }, { Name: "IP大于等于", Code: HTTPFirewallRuleOperatorGteIP, - Description: "将参数转换为IP进行对比", + Description: "将参数转换为IP进行对比。", CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone, DataType: "ip", }, { Name: "IP小于", Code: HTTPFirewallRuleOperatorLtIP, - Description: "将参数转换为IP进行对比", + Description: "将参数转换为IP进行对比。", CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone, DataType: "ip", }, { Name: "IP小于等于", Code: HTTPFirewallRuleOperatorLteIP, - Description: "将参数转换为IP进行对比", + Description: "将参数转换为IP进行对比。", CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone, DataType: "ip", }, @@ -268,21 +284,21 @@ var AllRuleOperators = []*RuleOperatorDefinition{ { Name: "IP取模10", Code: HTTPFirewallRuleOperatorIPMod10, - Description: "对IP参数值取模,除数为10,对比值为余数", + Description: "对IP参数值取模,除数为10,对比值为余数。", CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone, DataType: "number", }, { Name: "IP取模100", Code: HTTPFirewallRuleOperatorIPMod100, - Description: "对IP参数值取模,除数为100,对比值为余数", + Description: "对IP参数值取模,除数为100,对比值为余数。", CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone, DataType: "number", }, { Name: "IP取模", Code: HTTPFirewallRuleOperatorIPMod, - Description: "对IP参数值取模,对比值格式为:除数,余数,比如10,1", + Description: "对IP参数值取模,对比值格式为:除数,余数,比如10,1。", CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone, DataType: "number", },