2020-10-06 21:02:21 +08:00
|
|
|
|
package firewallconfigs
|
|
|
|
|
|
|
|
|
|
|
|
type HTTPFirewallRuleOperator = string
|
|
|
|
|
|
type HTTPFirewallRuleCaseInsensitive = string
|
|
|
|
|
|
|
|
|
|
|
|
const (
|
2024-01-16 20:42:13 +08:00
|
|
|
|
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"
|
|
|
|
|
|
HTTPFirewallRuleOperatorContainsAnyWord HTTPFirewallRuleOperator = "contains any word"
|
|
|
|
|
|
HTTPFirewallRuleOperatorContainsAllWords HTTPFirewallRuleOperator = "contains all words"
|
|
|
|
|
|
HTTPFirewallRuleOperatorNotContainsAnyWord HTTPFirewallRuleOperator = "not contains any word"
|
|
|
|
|
|
HTTPFirewallRuleOperatorPrefix HTTPFirewallRuleOperator = "prefix"
|
|
|
|
|
|
HTTPFirewallRuleOperatorSuffix HTTPFirewallRuleOperator = "suffix"
|
|
|
|
|
|
HTTPFirewallRuleOperatorContainsAny HTTPFirewallRuleOperator = "contains any"
|
|
|
|
|
|
HTTPFirewallRuleOperatorContainsAll HTTPFirewallRuleOperator = "contains all"
|
|
|
|
|
|
HTTPFirewallRuleOperatorContainsSQLInjection HTTPFirewallRuleOperator = "contains sql injection"
|
|
|
|
|
|
HTTPFirewallRuleOperatorContainsSQLInjectionStrictly HTTPFirewallRuleOperator = "contains sql injection strictly"
|
|
|
|
|
|
HTTPFirewallRuleOperatorContainsXSS HTTPFirewallRuleOperator = "contains xss"
|
|
|
|
|
|
HTTPFirewallRuleOperatorContainsXSSStrictly HTTPFirewallRuleOperator = "contains xss strictly"
|
|
|
|
|
|
HTTPFirewallRuleOperatorHasKey HTTPFirewallRuleOperator = "has key" // has key in slice or map
|
|
|
|
|
|
HTTPFirewallRuleOperatorVersionGt HTTPFirewallRuleOperator = "version gt"
|
|
|
|
|
|
HTTPFirewallRuleOperatorVersionLt HTTPFirewallRuleOperator = "version lt"
|
|
|
|
|
|
HTTPFirewallRuleOperatorVersionRange HTTPFirewallRuleOperator = "version range"
|
2020-10-06 21:02:21 +08:00
|
|
|
|
|
2020-11-21 20:44:00 +08:00
|
|
|
|
HTTPFirewallRuleOperatorContainsBinary HTTPFirewallRuleOperator = "contains binary" // contains binary
|
|
|
|
|
|
HTTPFirewallRuleOperatorNotContainsBinary HTTPFirewallRuleOperator = "not contains binary" // not contains binary
|
|
|
|
|
|
|
2020-10-06 21:02:21 +08:00
|
|
|
|
// ip
|
2023-12-07 20:24:55 +08:00
|
|
|
|
|
2020-10-06 21:02:21 +08:00
|
|
|
|
HTTPFirewallRuleOperatorEqIP HTTPFirewallRuleOperator = "eq ip"
|
2023-01-08 10:15:57 +08:00
|
|
|
|
HTTPFirewallRuleOperatorInIPList HTTPFirewallRuleOperator = "in ip list"
|
2020-10-06 21:02:21 +08:00
|
|
|
|
HTTPFirewallRuleOperatorGtIP HTTPFirewallRuleOperator = "gt ip"
|
|
|
|
|
|
HTTPFirewallRuleOperatorGteIP HTTPFirewallRuleOperator = "gte ip"
|
|
|
|
|
|
HTTPFirewallRuleOperatorLtIP HTTPFirewallRuleOperator = "lt ip"
|
|
|
|
|
|
HTTPFirewallRuleOperatorLteIP HTTPFirewallRuleOperator = "lte ip"
|
|
|
|
|
|
HTTPFirewallRuleOperatorIPRange HTTPFirewallRuleOperator = "ip range"
|
|
|
|
|
|
HTTPFirewallRuleOperatorNotIPRange HTTPFirewallRuleOperator = "not ip range"
|
|
|
|
|
|
HTTPFirewallRuleOperatorIPMod10 HTTPFirewallRuleOperator = "ip mod 10"
|
|
|
|
|
|
HTTPFirewallRuleOperatorIPMod100 HTTPFirewallRuleOperator = "ip mod 100"
|
|
|
|
|
|
HTTPFirewallRuleOperatorIPMod HTTPFirewallRuleOperator = "ip mod"
|
|
|
|
|
|
|
|
|
|
|
|
HTTPFirewallRuleCaseInsensitiveNone = "none"
|
|
|
|
|
|
HTTPFirewallRuleCaseInsensitiveYes = "yes"
|
|
|
|
|
|
HTTPFirewallRuleCaseInsensitiveNo = "no"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
type RuleOperatorDefinition struct {
|
2023-01-06 19:13:37 +08:00
|
|
|
|
Name string `json:"name"`
|
|
|
|
|
|
Code string `json:"code"`
|
|
|
|
|
|
Description string `json:"description"`
|
|
|
|
|
|
CaseInsensitive HTTPFirewallRuleCaseInsensitive `json:"caseInsensitive"` // default caseInsensitive setting
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType string `json:"dataType"`
|
2020-10-06 21:02:21 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var AllRuleOperators = []*RuleOperatorDefinition{
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "正则匹配",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorMatch,
|
2024-05-20 11:10:22 +08:00
|
|
|
|
Description: "使用正则表达式匹配,在头部使用(?i)表示不区分大小写,<a href=\"https://goedge.cloud/docs/Appendix/Regexp/Index.md\" target=\"_blank\">正则表达式语法 »</a>。",
|
2020-10-06 21:02:21 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveYes,
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType: "regexp",
|
2020-10-06 21:02:21 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "正则不匹配",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorNotMatch,
|
2024-05-20 11:10:22 +08:00
|
|
|
|
Description: "使用正则表达式不匹配,在头部使用(?i)表示不区分大小写,<a href=\"https://goedge.cloud/docs/Appendix/Regexp/Index.md\" target=\"_blank\">正则表达式语法 »</a>。",
|
2020-10-06 21:02:21 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveYes,
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType: "regexp",
|
|
|
|
|
|
},
|
2023-08-13 10:37:31 +08:00
|
|
|
|
{
|
|
|
|
|
|
Name: "通配符匹配",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorWildcardMatch,
|
|
|
|
|
|
Description: "判断是否和指定的通配符匹配,可以在对比值中使用星号通配符(*)表示任意字符。",
|
|
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveYes,
|
|
|
|
|
|
DataType: "wildcard",
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "通配符不匹配",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorWildcardNotMatch,
|
|
|
|
|
|
Description: "判断是否和指定的通配符不匹配,可以在对比值中使用星号通配符(*)表示任意字符。",
|
|
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveYes,
|
|
|
|
|
|
DataType: "wildcard",
|
|
|
|
|
|
},
|
2023-08-13 10:01:24 +08:00
|
|
|
|
{
|
|
|
|
|
|
Name: "字符串等于",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorEqString,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
Description: "使用字符串对比等于。",
|
2023-08-13 10:01:24 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
|
|
|
|
|
|
DataType: "string",
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "字符串不等于",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorNeqString,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
Description: "使用字符串对比不等于。",
|
2023-08-13 10:01:24 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
|
|
|
|
|
|
DataType: "string",
|
2020-10-06 21:02:21 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "包含字符串",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorContains,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
Description: "包含某个字符串,比如Hello World包含了World。",
|
2020-10-06 21:02:21 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType: "string",
|
2020-10-06 21:02:21 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "不包含字符串",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorNotContains,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
Description: "不包含某个字符串,比如Hello字符串中不包含Hi。",
|
2020-10-06 21:02:21 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType: "string",
|
2020-10-06 21:02:21 +08:00
|
|
|
|
},
|
2023-01-06 20:06:57 +08:00
|
|
|
|
{
|
|
|
|
|
|
Name: "包含任一字符串",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorContainsAny,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
Description: "包含字符串列表中的任意一个,比如/hello/world包含/hello和/hi中的/hello,对比值中每行一个字符串。",
|
2023-01-06 20:06:57 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType: "strings",
|
2023-01-06 20:06:57 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "包含所有字符串",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorContainsAll,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
Description: "包含字符串列表中的所有字符串,比如/hello/world必须包含/hello和/world,对比值中每行一个字符串。",
|
2023-01-06 20:06:57 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType: "strings",
|
2023-01-06 20:06:57 +08:00
|
|
|
|
},
|
2023-01-07 09:35:09 +08:00
|
|
|
|
{
|
|
|
|
|
|
Name: "包含前缀",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorPrefix,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
Description: "包含字符串前缀部分,比如/hello前缀会匹配/hello, /hello/world等。",
|
2023-01-07 09:35:09 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType: "string",
|
2023-01-07 09:35:09 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "包含后缀",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorSuffix,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
Description: "包含字符串后缀部分,比如/hello后缀会匹配/hello, /hi/hello等。",
|
2023-01-07 09:35:09 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType: "string",
|
2023-01-07 09:35:09 +08:00
|
|
|
|
},
|
2023-12-07 11:43:34 +08:00
|
|
|
|
{
|
|
|
|
|
|
Name: "包含任一单词",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorContainsAnyWord,
|
2023-12-08 10:18:38 +08:00
|
|
|
|
Description: "包含某个独立单词,对比值中每行一个单词,比如mozilla firefox里包含了mozilla和firefox两个单词,但是不包含fire和fox这两个单词。",
|
2023-12-07 11:43:34 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
|
|
|
|
|
|
DataType: "strings",
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "包含所有单词",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorContainsAllWords,
|
2023-12-08 10:18:38 +08:00
|
|
|
|
Description: "包含所有的独立单词,对比值中每行一个单词,比如mozilla firefox里包含了mozilla和firefox两个单词,但是不包含fire和fox这两个单词。",
|
2023-12-07 11:43:34 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
|
|
|
|
|
|
DataType: "strings",
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "不包含任一单词",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorNotContainsAnyWord,
|
2023-12-08 10:18:38 +08:00
|
|
|
|
Description: "不包含某个独立单词,对比值中每行一个单词,比如mozilla firefox里包含了mozilla和firefox两个单词,但是不包含fire和fox这两个单词。",
|
2023-12-07 11:43:34 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
|
|
|
|
|
|
DataType: "strings",
|
|
|
|
|
|
},
|
2023-12-07 20:24:55 +08:00
|
|
|
|
{
|
|
|
|
|
|
Name: "包含SQL注入",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorContainsSQLInjection,
|
2023-12-08 10:18:38 +08:00
|
|
|
|
Description: "检测字符串内容是否包含SQL注入。",
|
2023-12-07 20:24:55 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
|
2024-01-16 20:42:13 +08:00
|
|
|
|
DataType: "none",
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "包含SQL注入-严格模式",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorContainsSQLInjectionStrictly,
|
|
|
|
|
|
Description: "更加严格地检测字符串内容是否包含SQL注入,相对于非严格模式,有一定的误报几率。",
|
|
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
|
2023-12-07 20:24:55 +08:00
|
|
|
|
DataType: "none",
|
|
|
|
|
|
},
|
2023-12-08 10:15:29 +08:00
|
|
|
|
{
|
|
|
|
|
|
Name: "包含XSS注入",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorContainsXSS,
|
2023-12-08 10:18:38 +08:00
|
|
|
|
Description: "检测字符串内容是否包含XSS注入。",
|
2023-12-08 10:15:29 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
|
|
|
|
|
|
DataType: "none",
|
|
|
|
|
|
},
|
2024-01-04 14:52:47 +08:00
|
|
|
|
{
|
|
|
|
|
|
Name: "包含XSS注入-严格模式",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorContainsXSSStrictly,
|
|
|
|
|
|
Description: "更加严格地检测字符串内容是否包含XSS注入,相对于非严格模式,此时xml、audio、video等标签也会被匹配。",
|
|
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
|
|
|
|
|
|
DataType: "none",
|
|
|
|
|
|
},
|
2020-11-21 20:44:00 +08:00
|
|
|
|
{
|
|
|
|
|
|
Name: "包含二进制数据",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorContainsBinary,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
Description: "包含一组二进制数据。",
|
2020-11-21 20:44:00 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType: "string",
|
2020-11-21 20:44:00 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "不包含二进制数据",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorNotContainsBinary,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
Description: "不包含一组二进制数据。",
|
2020-11-21 20:44:00 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType: "string",
|
2020-11-21 20:44:00 +08:00
|
|
|
|
},
|
2023-08-12 08:16:54 +08:00
|
|
|
|
{
|
|
|
|
|
|
Name: "数值大于",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorGt,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
Description: "使用数值对比大于,对比值需要是一个数字。",
|
2023-08-12 08:16:54 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType: "number",
|
2023-08-12 08:16:54 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "数值大于等于",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorGte,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
Description: "使用数值对比大于等于,对比值需要是一个数字。",
|
2023-08-12 08:16:54 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType: "number",
|
2023-08-12 08:16:54 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "数值小于",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorLt,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
Description: "使用数值对比小于,对比值需要是一个数字。",
|
2023-08-12 08:16:54 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType: "number",
|
2023-08-12 08:16:54 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "数值小于等于",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorLte,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
Description: "使用数值对比小于等于,对比值需要是一个数字。",
|
2023-08-12 08:16:54 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType: "number",
|
2023-08-12 08:16:54 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "数值等于",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorEq,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
Description: "使用数值对比等于,对比值需要是一个数字。",
|
2023-08-12 08:16:54 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType: "number",
|
2023-08-12 08:16:54 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "数值不等于",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorNeq,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
Description: "使用数值对比不等于,对比值需要是一个数字。",
|
2023-08-12 08:16:54 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType: "number",
|
2023-08-12 08:16:54 +08:00
|
|
|
|
},
|
2020-10-06 21:02:21 +08:00
|
|
|
|
{
|
|
|
|
|
|
Name: "包含索引",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorHasKey,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
Description: "对于一组数据拥有某个键值或者索引。",
|
2020-10-06 21:02:21 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNo,
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType: "string|number",
|
2020-10-06 21:02:21 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "版本号大于",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorVersionGt,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
Description: "对比版本号大于。",
|
2023-08-13 10:01:24 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
|
|
|
|
|
|
DataType: "version",
|
2020-10-06 21:02:21 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "版本号小于",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorVersionLt,
|
2023-12-08 10:18:38 +08:00
|
|
|
|
Description: "对比版本号小于。",
|
2023-08-13 10:01:24 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
|
|
|
|
|
|
DataType: "version",
|
2020-10-06 21:02:21 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "版本号范围",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorVersionRange,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
Description: "判断版本号在某个范围内,格式为 起始version1,结束version2。",
|
2023-08-13 10:01:24 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
DataType: "versionRange",
|
2020-10-06 21:02:21 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "IP等于",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorEqIP,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
Description: "将参数转换为IP进行对比,只能对比单个IP。",
|
2023-01-08 10:15:57 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType: "ip",
|
2023-01-08 10:15:57 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "在一组IP中",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorInIPList,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
Description: "判断参数IP在一组IP内,对比值中每行一个IP。",
|
2023-01-08 10:15:57 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType: "ips",
|
2020-10-06 21:02:21 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "IP大于",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorGtIP,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
Description: "将参数转换为IP进行对比。",
|
2023-01-08 10:15:57 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType: "ip",
|
2020-10-06 21:02:21 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "IP大于等于",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorGteIP,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
Description: "将参数转换为IP进行对比。",
|
2023-01-08 10:15:57 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType: "ip",
|
2020-10-06 21:02:21 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "IP小于",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorLtIP,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
Description: "将参数转换为IP进行对比。",
|
2023-01-08 10:15:57 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType: "ip",
|
2020-10-06 21:02:21 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "IP小于等于",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorLteIP,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
Description: "将参数转换为IP进行对比。",
|
2023-01-08 10:15:57 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType: "ip",
|
2020-10-06 21:02:21 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "IP范围",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorIPRange,
|
2023-01-06 19:13:37 +08:00
|
|
|
|
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范围。",
|
2023-01-08 10:15:57 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType: "ips",
|
2020-10-06 21:02:21 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "不在IP范围",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorNotIPRange,
|
2023-01-06 19:13:37 +08:00
|
|
|
|
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范围。",
|
2023-01-08 10:15:57 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType: "ips",
|
2020-10-06 21:02:21 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "IP取模10",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorIPMod10,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
Description: "对IP参数值取模,除数为10,对比值为余数。",
|
2023-01-08 10:15:57 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType: "number",
|
2020-10-06 21:02:21 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "IP取模100",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorIPMod100,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
Description: "对IP参数值取模,除数为100,对比值为余数。",
|
2023-01-08 10:15:57 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType: "number",
|
2020-10-06 21:02:21 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "IP取模",
|
|
|
|
|
|
Code: HTTPFirewallRuleOperatorIPMod,
|
2023-08-13 10:37:31 +08:00
|
|
|
|
Description: "对IP参数值取模,对比值格式为:除数,余数,比如10,1。",
|
2023-01-08 10:15:57 +08:00
|
|
|
|
CaseInsensitive: HTTPFirewallRuleCaseInsensitiveNone,
|
2023-08-13 10:01:24 +08:00
|
|
|
|
DataType: "number",
|
2020-10-06 21:02:21 +08:00
|
|
|
|
},
|
|
|
|
|
|
}
|
2021-09-25 19:41:10 +08:00
|
|
|
|
|
|
|
|
|
|
func FindRuleOperatorName(code string) string {
|
|
|
|
|
|
for _, operator := range AllRuleOperators {
|
|
|
|
|
|
if operator.Code == code {
|
|
|
|
|
|
return operator.Name
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|