Files
EdgeCommon/pkg/serverconfigs/shared/request_operators.go

227 lines
7.5 KiB
Go
Raw Normal View History

2020-09-13 19:27:47 +08:00
package shared
import "github.com/iwind/TeaGo/maps"
// 运算符定义
type RequestCondOperator = string
const (
// 正则
RequestCondOperatorRegexp RequestCondOperator = "regexp"
RequestCondOperatorNotRegexp RequestCondOperator = "not regexp"
// 数字相关
RequestCondOperatorEqInt RequestCondOperator = "eq int" // 整数等于
RequestCondOperatorEqFloat RequestCondOperator = "eq float" // 浮点数等于
RequestCondOperatorGtFloat RequestCondOperator = "gt"
RequestCondOperatorGteFloat RequestCondOperator = "gte"
RequestCondOperatorLtFloat RequestCondOperator = "lt"
RequestCondOperatorLteFloat RequestCondOperator = "lte"
// 取模
RequestCondOperatorMod10 RequestCondOperator = "mod 10"
RequestCondOperatorMod100 RequestCondOperator = "mod 100"
RequestCondOperatorMod RequestCondOperator = "mod"
// 字符串相关
RequestCondOperatorEqString RequestCondOperator = "eq"
RequestCondOperatorNeqString RequestCondOperator = "not"
RequestCondOperatorHasPrefix RequestCondOperator = "prefix"
RequestCondOperatorHasSuffix RequestCondOperator = "suffix"
RequestCondOperatorContainsString RequestCondOperator = "contains"
RequestCondOperatorNotContainsString RequestCondOperator = "not contains"
RequestCondOperatorIn RequestCondOperator = "in"
RequestCondOperatorNotIn RequestCondOperator = "not in"
RequestCondOperatorFileExt RequestCondOperator = "file ext"
RequestCondOperatorFileMimeType RequestCondOperator = "mime type"
RequestCondOperatorVersionRange RequestCondOperator = "version range"
// IP相关
RequestCondOperatorEqIP RequestCondOperator = "eq ip"
RequestCondOperatorGtIP RequestCondOperator = "gt ip"
RequestCondOperatorGteIP RequestCondOperator = "gte ip"
RequestCondOperatorLtIP RequestCondOperator = "lt ip"
RequestCondOperatorLteIP RequestCondOperator = "lte ip"
RequestCondOperatorIPRange RequestCondOperator = "ip range"
RequestCondOperatorIPMod10 RequestCondOperator = "ip mod 10"
RequestCondOperatorIPMod100 RequestCondOperator = "ip mod 100"
RequestCondOperatorIPMod RequestCondOperator = "ip mod"
// 文件相关
RequestCondOperatorFileExist RequestCondOperator = "file exist"
RequestCondOperatorFileNotExist RequestCondOperator = "file not exist"
)
// 所有的运算符
func AllRequestOperators() []maps.Map {
return []maps.Map{
{
"name": "正则表达式匹配",
"op": RequestCondOperatorRegexp,
"description": "判断是否正则表达式匹配",
},
{
"name": "正则表达式不匹配",
"op": RequestCondOperatorNotRegexp,
"description": "判断是否正则表达式不匹配",
},
{
"name": "字符串等于",
"op": RequestCondOperatorEqString,
"description": "使用字符串对比参数值是否相等于某个值",
},
{
"name": "字符串前缀",
"op": RequestCondOperatorHasPrefix,
"description": "参数值包含某个前缀",
},
{
"name": "字符串后缀",
"op": RequestCondOperatorHasSuffix,
"description": "参数值包含某个后缀",
},
{
"name": "字符串包含",
"op": RequestCondOperatorContainsString,
"description": "参数值包含另外一个字符串",
},
{
"name": "字符串不包含",
"op": RequestCondOperatorNotContainsString,
"description": "参数值不包含另外一个字符串",
},
{
"name": "字符串不等于",
"op": RequestCondOperatorNeqString,
"description": "使用字符串对比参数值是否不相等于某个值",
},
{
"name": "在列表中",
"op": RequestCondOperatorIn,
"description": "判断参数值在某个列表中",
},
{
"name": "不在列表中",
"op": RequestCondOperatorNotIn,
"description": "判断参数值不在某个列表中",
},
{
"name": "扩展名",
"op": RequestCondOperatorFileExt,
"description": "判断小写的扩展名(不带点)在某个列表中",
},
{
"name": "MimeType",
"op": RequestCondOperatorFileMimeType,
"description": "判断MimeType在某个列表中支持类似于image/*的语法",
},
{
"name": "版本号范围",
"op": RequestCondOperatorVersionRange,
"description": "判断版本号在某个范围内格式为version1,version2",
},
{
"name": "整数等于",
"op": RequestCondOperatorEqInt,
"description": "将参数转换为整数数字后进行对比",
},
{
"name": "浮点数等于",
"op": RequestCondOperatorEqFloat,
"description": "将参数转换为可以有小数的浮点数字进行对比",
},
{
"name": "数字大于",
"op": RequestCondOperatorGtFloat,
"description": "将参数转换为数字进行对比",
},
{
"name": "数字大于等于",
"op": RequestCondOperatorGteFloat,
"description": "将参数转换为数字进行对比",
},
{
"name": "数字小于",
"op": RequestCondOperatorLtFloat,
"description": "将参数转换为数字进行对比",
},
{
"name": "数字小于等于",
"op": RequestCondOperatorLteFloat,
"description": "将参数转换为数字进行对比",
},
{
"name": "整数取模10",
"op": RequestCondOperatorMod10,
"description": "对整数参数值取模除数为10对比值为余数",
},
{
"name": "整数取模100",
"op": RequestCondOperatorMod100,
"description": "对整数参数值取模除数为100对比值为余数",
},
{
"name": "整数取模",
"op": RequestCondOperatorMod,
"description": "对整数参数值取模,对比值格式为:除数,余数比如10,1",
},
{
"name": "IP等于",
"op": RequestCondOperatorEqIP,
"description": "将参数转换为IP进行对比",
},
{
"name": "IP大于",
"op": RequestCondOperatorGtIP,
"description": "将参数转换为IP进行对比",
},
{
"name": "IP大于等于",
"op": RequestCondOperatorGteIP,
"description": "将参数转换为IP进行对比",
},
{
"name": "IP小于",
"op": RequestCondOperatorLtIP,
"description": "将参数转换为IP进行对比",
},
{
"name": "IP小于等于",
"op": RequestCondOperatorLteIP,
"description": "将参数转换为IP进行对比",
},
{
"name": "IP范围",
"op": RequestCondOperatorIPRange,
"description": "IP在某个范围之内范围格式可以是英文逗号分隔的ip1,ip2或者CIDR格式的ip/bits",
},
{
"name": "IP取模10",
"op": RequestCondOperatorIPMod10,
"description": "对IP参数值取模除数为10对比值为余数",
},
{
"name": "IP取模100",
"op": RequestCondOperatorIPMod100,
"description": "对IP参数值取模除数为100对比值为余数",
},
{
"name": "IP取模",
"op": RequestCondOperatorIPMod,
"description": "对IP参数值取模对比值格式为除数,余数比如10,1",
},
{
"name": "文件存在",
"op": RequestCondOperatorFileExist,
"description": "判断参数值解析后的文件是否存在",
},
{
"name": "文件不存在",
"op": RequestCondOperatorFileNotExist,
"description": "判断参数值解析后的文件是否不存在",
},
}
}