mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-08 07:44:31 +08:00
49 lines
968 B
Go
49 lines
968 B
Go
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
|
|
|
|
package waf
|
|
|
|
import (
|
|
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
|
"github.com/iwind/TeaGo/maps"
|
|
"regexp"
|
|
"strings"
|
|
)
|
|
|
|
type TestRegexpAction struct {
|
|
actionutils.ParentAction
|
|
}
|
|
|
|
func (this *TestRegexpAction) RunPost(params struct {
|
|
Regexp string
|
|
IsCaseInsensitive bool
|
|
Body string
|
|
}) {
|
|
var exp = params.Regexp
|
|
if params.IsCaseInsensitive && !strings.HasPrefix(params.Regexp, "(?i)") {
|
|
exp = "(?i)" + exp
|
|
}
|
|
reg, err := regexp.Compile(exp)
|
|
if err != nil {
|
|
this.Data["result"] = maps.Map{
|
|
"isOk": false,
|
|
"message": "解析正则出错:" + err.Error(),
|
|
}
|
|
this.Success()
|
|
}
|
|
|
|
if reg.MatchString(params.Body) {
|
|
this.Data["result"] = maps.Map{
|
|
"isOk": true,
|
|
"message": "匹配成功",
|
|
}
|
|
this.Success()
|
|
}
|
|
|
|
this.Data["result"] = maps.Map{
|
|
"isOk": false,
|
|
"message": "匹配失败",
|
|
}
|
|
|
|
this.Success()
|
|
}
|