WAF多个相同Key的cc2统计规则不再重复累加

This commit is contained in:
GoEdgeLab
2022-07-25 09:34:34 +08:00
parent e15d491b97
commit 4b55895428
57 changed files with 189 additions and 179 deletions

View File

@@ -30,7 +30,7 @@ func (this *CCCheckpoint) Start() {
this.cache = ttlcache.NewCache() this.cache = ttlcache.NewCache()
} }
func (this *CCCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *CCCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
value = 0 value = 0
if this.cache == nil { if this.cache == nil {
@@ -114,15 +114,15 @@ func (this *CCCheckpoint) RequestValue(req requests.Request, param string, optio
if len(key) == 0 { if len(key) == 0 {
key = req.WAFRemoteIP() key = req.WAFRemoteIP()
} }
value = this.cache.IncreaseInt64(key, int64(1), time.Now().Unix()+period, false) value = this.cache.IncreaseInt64(types.String(ruleId)+"@"+key, int64(1), time.Now().Unix()+period, false)
} }
return return
} }
func (this *CCCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *CCCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.IsRequest() { if this.IsRequest() {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }
return return
} }

View File

@@ -32,7 +32,7 @@ type CC2Checkpoint struct {
Checkpoint Checkpoint
} }
func (this *CC2Checkpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *CC2Checkpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
var keys = options.GetSlice("keys") var keys = options.GetSlice("keys")
var keyValues = []string{} var keyValues = []string{}
for _, key := range keys { for _, key := range keys {
@@ -66,11 +66,16 @@ func (this *CC2Checkpoint) RequestValue(req requests.Request, param string, opti
} }
} }
value = ccCache.IncreaseInt64("WAF-CC-"+strings.Join(keyValues, "@"), 1, time.Now().Unix()+period, false) var ccKey = "WAF-CC-" + types.String(ruleId) + "-" + strings.Join(keyValues, "@")
value = ccCache.IncreaseInt64(ccKey, 1, time.Now().Unix()+period, false)
return return
} }
func (this *CC2Checkpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *CC2Checkpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.IsRequest() {
return this.RequestValue(req, param, options, ruleId)
}
return return
} }

View File

@@ -23,21 +23,21 @@ func TestCCCheckpoint_RequestValue(t *testing.T) {
options := maps.Map{ options := maps.Map{
"period": "5", "period": "5",
} }
t.Log(checkpoint.RequestValue(req, "requests", options)) t.Log(checkpoint.RequestValue(req, "requests", options, 1))
t.Log(checkpoint.RequestValue(req, "requests", options)) t.Log(checkpoint.RequestValue(req, "requests", options, 1))
req.WAFRaw().RemoteAddr = "127.0.0.2" req.WAFRaw().RemoteAddr = "127.0.0.2"
t.Log(checkpoint.RequestValue(req, "requests", options)) t.Log(checkpoint.RequestValue(req, "requests", options, 1))
req.WAFRaw().RemoteAddr = "127.0.0.1" req.WAFRaw().RemoteAddr = "127.0.0.1"
t.Log(checkpoint.RequestValue(req, "requests", options)) t.Log(checkpoint.RequestValue(req, "requests", options, 1))
req.WAFRaw().RemoteAddr = "127.0.0.2" req.WAFRaw().RemoteAddr = "127.0.0.2"
t.Log(checkpoint.RequestValue(req, "requests", options)) t.Log(checkpoint.RequestValue(req, "requests", options, 1))
req.WAFRaw().RemoteAddr = "127.0.0.2" req.WAFRaw().RemoteAddr = "127.0.0.2"
t.Log(checkpoint.RequestValue(req, "requests", options)) t.Log(checkpoint.RequestValue(req, "requests", options, 1))
req.WAFRaw().RemoteAddr = "127.0.0.2" req.WAFRaw().RemoteAddr = "127.0.0.2"
t.Log(checkpoint.RequestValue(req, "requests", options)) t.Log(checkpoint.RequestValue(req, "requests", options, 1))
} }

View File

@@ -17,10 +17,10 @@ type CheckpointInterface interface {
IsComposed() bool IsComposed() bool
// RequestValue get request value // RequestValue get request value
RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error)
// ResponseValue get response value // ResponseValue get response value
ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error)
// ParamOptions param option list // ParamOptions param option list
ParamOptions() *ParamOptions ParamOptions() *ParamOptions

View File

@@ -11,7 +11,7 @@ type RequestAllCheckpoint struct {
Checkpoint Checkpoint
} }
func (this *RequestAllCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestAllCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
valueBytes := []byte{} valueBytes := []byte{}
if len(req.WAFRaw().RequestURI) > 0 { if len(req.WAFRaw().RequestURI) > 0 {
valueBytes = append(valueBytes, req.WAFRaw().RequestURI...) valueBytes = append(valueBytes, req.WAFRaw().RequestURI...)
@@ -47,10 +47,10 @@ func (this *RequestAllCheckpoint) RequestValue(req requests.Request, param strin
return return
} }
func (this *RequestAllCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestAllCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
value = "" value = ""
if this.IsRequest() { if this.IsRequest() {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }
return return
} }

View File

@@ -18,7 +18,7 @@ func TestRequestAllCheckpoint_RequestValue(t *testing.T) {
} }
checkpoint := new(RequestAllCheckpoint) checkpoint := new(RequestAllCheckpoint)
v, _, sysErr, userErr := checkpoint.RequestValue(requests.NewTestRequest(req), "", nil) v, _, sysErr, userErr := checkpoint.RequestValue(requests.NewTestRequest(req), "", nil, 1)
if sysErr != nil { if sysErr != nil {
t.Fatal(sysErr) t.Fatal(sysErr)
} }
@@ -42,7 +42,7 @@ func TestRequestAllCheckpoint_RequestValue_Max(t *testing.T) {
} }
checkpoint := new(RequestBodyCheckpoint) checkpoint := new(RequestBodyCheckpoint)
value, _, err, _ := checkpoint.RequestValue(requests.NewTestRequest(req), "", nil) value, _, err, _ := checkpoint.RequestValue(requests.NewTestRequest(req), "", nil, 1)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -65,6 +65,6 @@ func BenchmarkRequestAllCheckpoint_RequestValue(b *testing.B) {
checkpoint := new(RequestAllCheckpoint) checkpoint := new(RequestAllCheckpoint)
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {
_, _, _, _ = checkpoint.RequestValue(requests.NewTestRequest(req), "", nil) _, _, _, _ = checkpoint.RequestValue(requests.NewTestRequest(req), "", nil, 1)
} }
} }

View File

@@ -9,13 +9,13 @@ type RequestArgCheckpoint struct {
Checkpoint Checkpoint
} }
func (this *RequestArgCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestArgCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
return req.WAFRaw().URL.Query().Get(param), hasRequestBody, nil, nil return req.WAFRaw().URL.Query().Get(param), hasRequestBody, nil, nil
} }
func (this *RequestArgCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestArgCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.IsRequest() { if this.IsRequest() {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }
return return
} }

View File

@@ -15,7 +15,7 @@ func TestArgParam_RequestValue(t *testing.T) {
req := requests.NewTestRequest(rawReq) req := requests.NewTestRequest(rawReq)
checkpoint := new(RequestArgCheckpoint) checkpoint := new(RequestArgCheckpoint)
t.Log(checkpoint.RequestValue(req, "name", nil)) t.Log(checkpoint.RequestValue(req, "name", nil, 1))
t.Log(checkpoint.ResponseValue(req, nil, "name", nil)) t.Log(checkpoint.ResponseValue(req, nil, "name", nil, 1))
t.Log(checkpoint.RequestValue(req, "name2", nil)) t.Log(checkpoint.RequestValue(req, "name2", nil, 1))
} }

View File

@@ -9,14 +9,14 @@ type RequestArgsCheckpoint struct {
Checkpoint Checkpoint
} }
func (this *RequestArgsCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestArgsCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
value = req.WAFRaw().URL.RawQuery value = req.WAFRaw().URL.RawQuery
return return
} }
func (this *RequestArgsCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestArgsCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.IsRequest() { if this.IsRequest() {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }
return return
} }

View File

@@ -11,7 +11,7 @@ type RequestBodyCheckpoint struct {
Checkpoint Checkpoint
} }
func (this *RequestBodyCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestBodyCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.RequestBodyIsEmpty(req) { if this.RequestBodyIsEmpty(req) {
value = "" value = ""
return return
@@ -38,9 +38,9 @@ func (this *RequestBodyCheckpoint) RequestValue(req requests.Request, param stri
return bodyData, hasRequestBody, nil, nil return bodyData, hasRequestBody, nil, nil
} }
func (this *RequestBodyCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestBodyCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.IsRequest() { if this.IsRequest() {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }
return return
} }

View File

@@ -17,7 +17,7 @@ func TestRequestBodyCheckpoint_RequestValue(t *testing.T) {
} }
var req = requests.NewTestRequest(rawReq) var req = requests.NewTestRequest(rawReq)
checkpoint := new(RequestBodyCheckpoint) checkpoint := new(RequestBodyCheckpoint)
t.Log(checkpoint.RequestValue(req, "", nil)) t.Log(checkpoint.RequestValue(req, "", nil, 1))
body, err := ioutil.ReadAll(rawReq.Body) body, err := ioutil.ReadAll(rawReq.Body)
if err != nil { if err != nil {
@@ -34,7 +34,7 @@ func TestRequestBodyCheckpoint_RequestValue_Max(t *testing.T) {
} }
checkpoint := new(RequestBodyCheckpoint) checkpoint := new(RequestBodyCheckpoint)
value, _, err, _ := checkpoint.RequestValue(requests.NewTestRequest(req), "", nil) value, _, err, _ := checkpoint.RequestValue(requests.NewTestRequest(req), "", nil, 1)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@@ -9,14 +9,14 @@ type RequestContentTypeCheckpoint struct {
Checkpoint Checkpoint
} }
func (this *RequestContentTypeCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestContentTypeCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
value = req.WAFRaw().Header.Get("Content-Type") value = req.WAFRaw().Header.Get("Content-Type")
return return
} }
func (this *RequestContentTypeCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestContentTypeCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.IsRequest() { if this.IsRequest() {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }
return return
} }

View File

@@ -9,7 +9,7 @@ type RequestCookieCheckpoint struct {
Checkpoint Checkpoint
} }
func (this *RequestCookieCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestCookieCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
cookie, err := req.WAFRaw().Cookie(param) cookie, err := req.WAFRaw().Cookie(param)
if err != nil { if err != nil {
value = "" value = ""
@@ -20,9 +20,9 @@ func (this *RequestCookieCheckpoint) RequestValue(req requests.Request, param st
return return
} }
func (this *RequestCookieCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestCookieCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.IsRequest() { if this.IsRequest() {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }
return return
} }

View File

@@ -11,7 +11,7 @@ type RequestCookiesCheckpoint struct {
Checkpoint Checkpoint
} }
func (this *RequestCookiesCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestCookiesCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
var cookies = []string{} var cookies = []string{}
for _, cookie := range req.WAFRaw().Cookies() { for _, cookie := range req.WAFRaw().Cookies() {
cookies = append(cookies, url.QueryEscape(cookie.Name)+"="+url.QueryEscape(cookie.Value)) cookies = append(cookies, url.QueryEscape(cookie.Name)+"="+url.QueryEscape(cookie.Value))
@@ -20,9 +20,9 @@ func (this *RequestCookiesCheckpoint) RequestValue(req requests.Request, param s
return return
} }
func (this *RequestCookiesCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestCookiesCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.IsRequest() { if this.IsRequest() {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }
return return
} }

View File

@@ -12,7 +12,7 @@ type RequestFormArgCheckpoint struct {
Checkpoint Checkpoint
} }
func (this *RequestFormArgCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestFormArgCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
hasRequestBody = true hasRequestBody = true
if this.RequestBodyIsEmpty(req) { if this.RequestBodyIsEmpty(req) {
@@ -42,9 +42,9 @@ func (this *RequestFormArgCheckpoint) RequestValue(req requests.Request, param s
return values.Get(param), hasRequestBody, nil, nil return values.Get(param), hasRequestBody, nil, nil
} }
func (this *RequestFormArgCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestFormArgCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.IsRequest() { if this.IsRequest() {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }
return return
} }

View File

@@ -19,10 +19,10 @@ func TestRequestFormArgCheckpoint_RequestValue(t *testing.T) {
req.WAFRaw().Header.Set("Content-Type", "application/x-www-form-urlencoded") req.WAFRaw().Header.Set("Content-Type", "application/x-www-form-urlencoded")
checkpoint := new(RequestFormArgCheckpoint) checkpoint := new(RequestFormArgCheckpoint)
t.Log(checkpoint.RequestValue(req, "name", nil)) t.Log(checkpoint.RequestValue(req, "name", nil, 1))
t.Log(checkpoint.RequestValue(req, "age", nil)) t.Log(checkpoint.RequestValue(req, "age", nil, 1))
t.Log(checkpoint.RequestValue(req, "Hello", nil)) t.Log(checkpoint.RequestValue(req, "Hello", nil, 1))
t.Log(checkpoint.RequestValue(req, "encoded", nil)) t.Log(checkpoint.RequestValue(req, "encoded", nil, 1))
body, err := ioutil.ReadAll(req.WAFRaw().Body) body, err := ioutil.ReadAll(req.WAFRaw().Body)
if err != nil { if err != nil {

View File

@@ -14,7 +14,7 @@ func (this *RequestGeneralHeaderLengthCheckpoint) IsComposed() bool {
return true return true
} }
func (this *RequestGeneralHeaderLengthCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestGeneralHeaderLengthCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
value = false value = false
var headers = options.GetSlice("headers") var headers = options.GetSlice("headers")
@@ -35,6 +35,6 @@ func (this *RequestGeneralHeaderLengthCheckpoint) RequestValue(req requests.Requ
return return
} }
func (this *RequestGeneralHeaderLengthCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestGeneralHeaderLengthCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
return return
} }

View File

@@ -15,11 +15,11 @@ func (this *RequestGeoCityNameCheckpoint) IsComposed() bool {
return false return false
} }
func (this *RequestGeoCityNameCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestGeoCityNameCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
value = req.Format("${geo.city.name}") value = req.Format("${geo.city.name}")
return return
} }
func (this *RequestGeoCityNameCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestGeoCityNameCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }

View File

@@ -15,11 +15,11 @@ func (this *RequestGeoCountryNameCheckpoint) IsComposed() bool {
return false return false
} }
func (this *RequestGeoCountryNameCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestGeoCountryNameCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
value = req.Format("${geo.country.name}") value = req.Format("${geo.country.name}")
return return
} }
func (this *RequestGeoCountryNameCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestGeoCountryNameCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }

View File

@@ -15,11 +15,11 @@ func (this *RequestGeoProvinceNameCheckpoint) IsComposed() bool {
return false return false
} }
func (this *RequestGeoProvinceNameCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestGeoProvinceNameCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
value = req.Format("${geo.province.name}") value = req.Format("${geo.province.name}")
return return
} }
func (this *RequestGeoProvinceNameCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestGeoProvinceNameCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }

View File

@@ -10,7 +10,7 @@ type RequestHeaderCheckpoint struct {
Checkpoint Checkpoint
} }
func (this *RequestHeaderCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestHeaderCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
v, found := req.WAFRaw().Header[param] v, found := req.WAFRaw().Header[param]
if !found { if !found {
value = "" value = ""
@@ -20,9 +20,9 @@ func (this *RequestHeaderCheckpoint) RequestValue(req requests.Request, param st
return return
} }
func (this *RequestHeaderCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestHeaderCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.IsRequest() { if this.IsRequest() {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }
return return
} }

View File

@@ -11,7 +11,7 @@ type RequestHeadersCheckpoint struct {
Checkpoint Checkpoint
} }
func (this *RequestHeadersCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestHeadersCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
var headers = []string{} var headers = []string{}
for k, v := range req.WAFRaw().Header { for k, v := range req.WAFRaw().Header {
for _, subV := range v { for _, subV := range v {
@@ -23,9 +23,9 @@ func (this *RequestHeadersCheckpoint) RequestValue(req requests.Request, param s
return return
} }
func (this *RequestHeadersCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestHeadersCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.IsRequest() { if this.IsRequest() {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }
return return
} }

View File

@@ -9,14 +9,14 @@ type RequestHostCheckpoint struct {
Checkpoint Checkpoint
} }
func (this *RequestHostCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestHostCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
value = req.WAFRaw().Host value = req.WAFRaw().Host
return return
} }
func (this *RequestHostCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestHostCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.IsRequest() { if this.IsRequest() {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }
return return
} }

View File

@@ -16,5 +16,5 @@ func TestRequestHostCheckpoint_RequestValue(t *testing.T) {
req.WAFRaw().Header.Set("Host", "cloud.teaos.cn") req.WAFRaw().Header.Set("Host", "cloud.teaos.cn")
checkpoint := new(RequestHostCheckpoint) checkpoint := new(RequestHostCheckpoint)
t.Log(checkpoint.RequestValue(req, "", nil)) t.Log(checkpoint.RequestValue(req, "", nil, 1))
} }

View File

@@ -15,11 +15,11 @@ func (this *RequestISPNameCheckpoint) IsComposed() bool {
return false return false
} }
func (this *RequestISPNameCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestISPNameCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
value = req.Format("${isp.name}") value = req.Format("${isp.name}")
return return
} }
func (this *RequestISPNameCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestISPNameCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }

View File

@@ -14,7 +14,7 @@ type RequestJSONArgCheckpoint struct {
Checkpoint Checkpoint
} }
func (this *RequestJSONArgCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestJSONArgCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
var bodyData = req.WAFGetCacheBody() var bodyData = req.WAFGetCacheBody()
hasRequestBody = true hasRequestBody = true
if len(bodyData) == 0 { if len(bodyData) == 0 {
@@ -42,9 +42,9 @@ func (this *RequestJSONArgCheckpoint) RequestValue(req requests.Request, param s
return "", hasRequestBody, nil, nil return "", hasRequestBody, nil, nil
} }
func (this *RequestJSONArgCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestJSONArgCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.IsRequest() { if this.IsRequest() {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }
return return
} }

View File

@@ -24,12 +24,12 @@ func TestRequestJSONArgCheckpoint_RequestValue_Map(t *testing.T) {
//req.Header.Set("Content-Type", "application/x-www-form-urlencoded") //req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
checkpoint := new(RequestJSONArgCheckpoint) checkpoint := new(RequestJSONArgCheckpoint)
t.Log(checkpoint.RequestValue(req, "name", nil)) t.Log(checkpoint.RequestValue(req, "name", nil, 1))
t.Log(checkpoint.RequestValue(req, "age", nil)) t.Log(checkpoint.RequestValue(req, "age", nil, 1))
t.Log(checkpoint.RequestValue(req, "Hello", nil)) t.Log(checkpoint.RequestValue(req, "Hello", nil, 1))
t.Log(checkpoint.RequestValue(req, "", nil)) t.Log(checkpoint.RequestValue(req, "", nil, 1))
t.Log(checkpoint.RequestValue(req, "books", nil)) t.Log(checkpoint.RequestValue(req, "books", nil, 1))
t.Log(checkpoint.RequestValue(req, "books.1", nil)) t.Log(checkpoint.RequestValue(req, "books.1", nil, 1))
body, err := ioutil.ReadAll(req.WAFRaw().Body) body, err := ioutil.ReadAll(req.WAFRaw().Body)
if err != nil { if err != nil {
@@ -54,12 +54,12 @@ func TestRequestJSONArgCheckpoint_RequestValue_Array(t *testing.T) {
//req.Header.Set("Content-Type", "application/x-www-form-urlencoded") //req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
checkpoint := new(RequestJSONArgCheckpoint) checkpoint := new(RequestJSONArgCheckpoint)
t.Log(checkpoint.RequestValue(req, "0.name", nil)) t.Log(checkpoint.RequestValue(req, "0.name", nil, 1))
t.Log(checkpoint.RequestValue(req, "0.age", nil)) t.Log(checkpoint.RequestValue(req, "0.age", nil, 1))
t.Log(checkpoint.RequestValue(req, "0.Hello", nil)) t.Log(checkpoint.RequestValue(req, "0.Hello", nil, 1))
t.Log(checkpoint.RequestValue(req, "", nil)) t.Log(checkpoint.RequestValue(req, "", nil, 1))
t.Log(checkpoint.RequestValue(req, "0.books", nil)) t.Log(checkpoint.RequestValue(req, "0.books", nil, 1))
t.Log(checkpoint.RequestValue(req, "0.books.1", nil)) t.Log(checkpoint.RequestValue(req, "0.books.1", nil, 1))
body, err := ioutil.ReadAll(req.WAFRaw().Body) body, err := ioutil.ReadAll(req.WAFRaw().Body)
if err != nil { if err != nil {
@@ -84,12 +84,12 @@ func TestRequestJSONArgCheckpoint_RequestValue_Error(t *testing.T) {
//req.Header.Set("Content-Type", "application/x-www-form-urlencoded") //req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
checkpoint := new(RequestJSONArgCheckpoint) checkpoint := new(RequestJSONArgCheckpoint)
t.Log(checkpoint.RequestValue(req, "0.name", nil)) t.Log(checkpoint.RequestValue(req, "0.name", nil, 1))
t.Log(checkpoint.RequestValue(req, "0.age", nil)) t.Log(checkpoint.RequestValue(req, "0.age", nil, 1))
t.Log(checkpoint.RequestValue(req, "0.Hello", nil)) t.Log(checkpoint.RequestValue(req, "0.Hello", nil, 1))
t.Log(checkpoint.RequestValue(req, "", nil)) t.Log(checkpoint.RequestValue(req, "", nil, 1))
t.Log(checkpoint.RequestValue(req, "0.books", nil)) t.Log(checkpoint.RequestValue(req, "0.books", nil, 1))
t.Log(checkpoint.RequestValue(req, "0.books.1", nil)) t.Log(checkpoint.RequestValue(req, "0.books.1", nil, 1))
body, err := ioutil.ReadAll(req.WAFRaw().Body) body, err := ioutil.ReadAll(req.WAFRaw().Body)
if err != nil { if err != nil {

View File

@@ -9,14 +9,14 @@ type RequestLengthCheckpoint struct {
Checkpoint Checkpoint
} }
func (this *RequestLengthCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestLengthCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
value = req.WAFRaw().ContentLength value = req.WAFRaw().ContentLength
return return
} }
func (this *RequestLengthCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestLengthCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.IsRequest() { if this.IsRequest() {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }
return return
} }

View File

@@ -9,14 +9,14 @@ type RequestMethodCheckpoint struct {
Checkpoint Checkpoint
} }
func (this *RequestMethodCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestMethodCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
value = req.WAFRaw().Method value = req.WAFRaw().Method
return return
} }
func (this *RequestMethodCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestMethodCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.IsRequest() { if this.IsRequest() {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }
return return
} }

View File

@@ -9,13 +9,13 @@ type RequestPathCheckpoint struct {
Checkpoint Checkpoint
} }
func (this *RequestPathCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestPathCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
return req.WAFRaw().URL.Path, false, nil, nil return req.WAFRaw().URL.Path, false, nil, nil
} }
func (this *RequestPathCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestPathCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.IsRequest() { if this.IsRequest() {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }
return return
} }

View File

@@ -14,5 +14,5 @@ func TestRequestPathCheckpoint_RequestValue(t *testing.T) {
req := requests.NewTestRequest(rawReq) req := requests.NewTestRequest(rawReq)
checkpoint := new(RequestPathCheckpoint) checkpoint := new(RequestPathCheckpoint)
t.Log(checkpoint.RequestValue(req, "", nil)) t.Log(checkpoint.RequestValue(req, "", nil, 1))
} }

View File

@@ -9,14 +9,14 @@ type RequestProtoCheckpoint struct {
Checkpoint Checkpoint
} }
func (this *RequestProtoCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestProtoCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
value = req.WAFRaw().Proto value = req.WAFRaw().Proto
return return
} }
func (this *RequestProtoCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestProtoCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.IsRequest() { if this.IsRequest() {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }
return return
} }

View File

@@ -10,7 +10,7 @@ type RequestRawRemoteAddrCheckpoint struct {
Checkpoint Checkpoint
} }
func (this *RequestRawRemoteAddrCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestRawRemoteAddrCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
host, _, err := net.SplitHostPort(req.WAFRaw().RemoteAddr) host, _, err := net.SplitHostPort(req.WAFRaw().RemoteAddr)
if err == nil { if err == nil {
value = host value = host
@@ -20,9 +20,9 @@ func (this *RequestRawRemoteAddrCheckpoint) RequestValue(req requests.Request, p
return return
} }
func (this *RequestRawRemoteAddrCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestRawRemoteAddrCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.IsRequest() { if this.IsRequest() {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }
return return
} }

View File

@@ -9,14 +9,14 @@ type RequestRefererCheckpoint struct {
Checkpoint Checkpoint
} }
func (this *RequestRefererCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestRefererCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
value = req.WAFRaw().Referer() value = req.WAFRaw().Referer()
return return
} }
func (this *RequestRefererCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestRefererCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.IsRequest() { if this.IsRequest() {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }
return return
} }

View File

@@ -17,7 +17,7 @@ type RequestRefererBlockCheckpoint struct {
// RequestValue 计算checkpoint值 // RequestValue 计算checkpoint值
// 选项allowEmpty, allowSameDomain, allowDomains // 选项allowEmpty, allowSameDomain, allowDomains
func (this *RequestRefererBlockCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestRefererBlockCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
var referer = req.WAFRaw().Referer() var referer = req.WAFRaw().Referer()
if len(referer) == 0 { if len(referer) == 0 {
@@ -61,6 +61,6 @@ func (this *RequestRefererBlockCheckpoint) RequestValue(req requests.Request, pa
return return
} }
func (this *RequestRefererBlockCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestRefererBlockCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
return return
} }

View File

@@ -9,14 +9,14 @@ type RequestRemoteAddrCheckpoint struct {
Checkpoint Checkpoint
} }
func (this *RequestRemoteAddrCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestRemoteAddrCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
value = req.WAFRemoteIP() value = req.WAFRemoteIP()
return return
} }
func (this *RequestRemoteAddrCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestRemoteAddrCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.IsRequest() { if this.IsRequest() {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }
return return
} }

View File

@@ -11,7 +11,7 @@ type RequestRemotePortCheckpoint struct {
Checkpoint Checkpoint
} }
func (this *RequestRemotePortCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestRemotePortCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
_, port, err := net.SplitHostPort(req.WAFRaw().RemoteAddr) _, port, err := net.SplitHostPort(req.WAFRaw().RemoteAddr)
if err == nil { if err == nil {
value = types.Int(port) value = types.Int(port)
@@ -21,9 +21,9 @@ func (this *RequestRemotePortCheckpoint) RequestValue(req requests.Request, para
return return
} }
func (this *RequestRemotePortCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestRemotePortCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.IsRequest() { if this.IsRequest() {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }
return return
} }

View File

@@ -9,7 +9,7 @@ type RequestRemoteUserCheckpoint struct {
Checkpoint Checkpoint
} }
func (this *RequestRemoteUserCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestRemoteUserCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
username, _, ok := req.WAFRaw().BasicAuth() username, _, ok := req.WAFRaw().BasicAuth()
if !ok { if !ok {
value = "" value = ""
@@ -19,9 +19,9 @@ func (this *RequestRemoteUserCheckpoint) RequestValue(req requests.Request, para
return return
} }
func (this *RequestRemoteUserCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestRemoteUserCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.IsRequest() { if this.IsRequest() {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }
return return
} }

View File

@@ -9,14 +9,14 @@ type RequestSchemeCheckpoint struct {
Checkpoint Checkpoint
} }
func (this *RequestSchemeCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestSchemeCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
value = req.Format("${scheme}") value = req.Format("${scheme}")
return return
} }
func (this *RequestSchemeCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestSchemeCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.IsRequest() { if this.IsRequest() {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }
return return
} }

View File

@@ -14,5 +14,5 @@ func TestRequestSchemeCheckpoint_RequestValue(t *testing.T) {
req := requests.NewTestRequest(rawReq) req := requests.NewTestRequest(rawReq)
checkpoint := new(RequestSchemeCheckpoint) checkpoint := new(RequestSchemeCheckpoint)
t.Log(checkpoint.RequestValue(req, "", nil)) t.Log(checkpoint.RequestValue(req, "", nil, 1))
} }

View File

@@ -17,7 +17,7 @@ type RequestUploadCheckpoint struct {
Checkpoint Checkpoint
} }
func (this *RequestUploadCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestUploadCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.RequestBodyIsEmpty(req) { if this.RequestBodyIsEmpty(req) {
value = "" value = ""
return return
@@ -122,9 +122,9 @@ func (this *RequestUploadCheckpoint) RequestValue(req requests.Request, param st
return return
} }
func (this *RequestUploadCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestUploadCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.IsRequest() { if this.IsRequest() {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }
return return
} }

View File

@@ -88,11 +88,11 @@ func TestRequestUploadCheckpoint_RequestValue(t *testing.T) {
req.WAFRaw().Header.Add("Content-Type", writer.FormDataContentType()) req.WAFRaw().Header.Add("Content-Type", writer.FormDataContentType())
checkpoint := new(RequestUploadCheckpoint) checkpoint := new(RequestUploadCheckpoint)
t.Log(checkpoint.RequestValue(req, "field", nil)) t.Log(checkpoint.RequestValue(req, "field", nil, 1))
t.Log(checkpoint.RequestValue(req, "minSize", nil)) t.Log(checkpoint.RequestValue(req, "minSize", nil, 1))
t.Log(checkpoint.RequestValue(req, "maxSize", nil)) t.Log(checkpoint.RequestValue(req, "maxSize", nil, 1))
t.Log(checkpoint.RequestValue(req, "name", nil)) t.Log(checkpoint.RequestValue(req, "name", nil, 1))
t.Log(checkpoint.RequestValue(req, "ext", nil)) t.Log(checkpoint.RequestValue(req, "ext", nil, 1))
data, err := ioutil.ReadAll(req.WAFRaw().Body) data, err := ioutil.ReadAll(req.WAFRaw().Body)
if err != nil { if err != nil {

View File

@@ -9,7 +9,7 @@ type RequestURICheckpoint struct {
Checkpoint Checkpoint
} }
func (this *RequestURICheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestURICheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if len(req.WAFRaw().RequestURI) > 0 { if len(req.WAFRaw().RequestURI) > 0 {
value = req.WAFRaw().RequestURI value = req.WAFRaw().RequestURI
} else if req.WAFRaw().URL != nil { } else if req.WAFRaw().URL != nil {
@@ -18,9 +18,9 @@ func (this *RequestURICheckpoint) RequestValue(req requests.Request, param strin
return return
} }
func (this *RequestURICheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestURICheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.IsRequest() { if this.IsRequest() {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }
return return
} }

View File

@@ -9,13 +9,13 @@ type RequestURLCheckpoint struct {
Checkpoint Checkpoint
} }
func (this *RequestURLCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestURLCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
return req.Format("${requestURL}"), hasRequestBody, nil, nil return req.Format("${requestURL}"), hasRequestBody, nil, nil
} }
func (this *RequestURLCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestURLCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.IsRequest() { if this.IsRequest() {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }
return return
} }

View File

@@ -9,14 +9,14 @@ type RequestUserAgentCheckpoint struct {
Checkpoint Checkpoint
} }
func (this *RequestUserAgentCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestUserAgentCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
value = req.WAFRaw().UserAgent() value = req.WAFRaw().UserAgent()
return return
} }
func (this *RequestUserAgentCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *RequestUserAgentCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.IsRequest() { if this.IsRequest() {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }
return return
} }

View File

@@ -16,12 +16,12 @@ func (this *ResponseBodyCheckpoint) IsRequest() bool {
return false return false
} }
func (this *ResponseBodyCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *ResponseBodyCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
value = "" value = ""
return return
} }
func (this *ResponseBodyCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *ResponseBodyCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if resp.ContentLength == 0 { if resp.ContentLength == 0 {
value = "" value = ""
return return

View File

@@ -16,10 +16,10 @@ func TestResponseBodyCheckpoint_ResponseValue(t *testing.T) {
resp.Body = ioutil.NopCloser(bytes.NewBuffer([]byte("Hello, World"))) resp.Body = ioutil.NopCloser(bytes.NewBuffer([]byte("Hello, World")))
checkpoint := new(ResponseBodyCheckpoint) checkpoint := new(ResponseBodyCheckpoint)
t.Log(checkpoint.ResponseValue(nil, resp, "", nil)) t.Log(checkpoint.ResponseValue(nil, resp, "", nil, 1))
t.Log(checkpoint.ResponseValue(nil, resp, "", nil)) t.Log(checkpoint.ResponseValue(nil, resp, "", nil, 1))
t.Log(checkpoint.ResponseValue(nil, resp, "", nil)) t.Log(checkpoint.ResponseValue(nil, resp, "", nil, 1))
t.Log(checkpoint.ResponseValue(nil, resp, "", nil)) t.Log(checkpoint.ResponseValue(nil, resp, "", nil, 1))
data, err := ioutil.ReadAll(resp.Body) data, err := ioutil.ReadAll(resp.Body)
if err != nil { if err != nil {

View File

@@ -14,12 +14,12 @@ func (this *ResponseBytesSentCheckpoint) IsRequest() bool {
return false return false
} }
func (this *ResponseBytesSentCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *ResponseBytesSentCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
value = 0 value = 0
return return
} }
func (this *ResponseBytesSentCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *ResponseBytesSentCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
value = 0 value = 0
if resp != nil { if resp != nil {
value = resp.ContentLength value = resp.ContentLength

View File

@@ -18,12 +18,12 @@ func (this *ResponseGeneralHeaderLengthCheckpoint) IsComposed() bool {
return true return true
} }
func (this *ResponseGeneralHeaderLengthCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *ResponseGeneralHeaderLengthCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
return return
} }
func (this *ResponseGeneralHeaderLengthCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *ResponseGeneralHeaderLengthCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
value = false value = false
headers := options.GetSlice("headers") headers := options.GetSlice("headers")

View File

@@ -14,12 +14,12 @@ func (this *ResponseHeaderCheckpoint) IsRequest() bool {
return false return false
} }
func (this *ResponseHeaderCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *ResponseHeaderCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
value = "" value = ""
return return
} }
func (this *ResponseHeaderCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *ResponseHeaderCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if resp != nil && resp.Header != nil { if resp != nil && resp.Header != nil {
value = resp.Header.Get(param) value = resp.Header.Get(param)
} else { } else {

View File

@@ -13,5 +13,5 @@ func TestResponseHeaderCheckpoint_ResponseValue(t *testing.T) {
resp.Header.Set("Hello", "World") resp.Header.Set("Hello", "World")
checkpoint := new(ResponseHeaderCheckpoint) checkpoint := new(ResponseHeaderCheckpoint)
t.Log(checkpoint.ResponseValue(nil, resp, "Hello", nil)) t.Log(checkpoint.ResponseValue(nil, resp, "Hello", nil, 1))
} }

View File

@@ -14,12 +14,12 @@ func (this *ResponseStatusCheckpoint) IsRequest() bool {
return false return false
} }
func (this *ResponseStatusCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *ResponseStatusCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
value = 0 value = 0
return return
} }
func (this *ResponseStatusCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *ResponseStatusCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if resp != nil { if resp != nil {
value = resp.StatusCode value = resp.StatusCode
} }

View File

@@ -11,5 +11,5 @@ func TestResponseStatusCheckpoint_ResponseValue(t *testing.T) {
resp.StatusCode = 200 resp.StatusCode = 200
checkpoint := new(ResponseStatusCheckpoint) checkpoint := new(ResponseStatusCheckpoint)
t.Log(checkpoint.ResponseValue(nil, resp, "", nil)) t.Log(checkpoint.ResponseValue(nil, resp, "", nil, 1))
} }

View File

@@ -10,13 +10,13 @@ type SampleRequestCheckpoint struct {
Checkpoint Checkpoint
} }
func (this *SampleRequestCheckpoint) RequestValue(req requests.Request, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *SampleRequestCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
return return
} }
func (this *SampleRequestCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map) (value interface{}, hasRequestBody bool, sysErr error, userErr error) { func (this *SampleRequestCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
if this.IsRequest() { if this.IsRequest() {
return this.RequestValue(req, param, options) return this.RequestValue(req, param, options, ruleId)
} }
return return
} }

View File

@@ -2,9 +2,10 @@ package checkpoints
import ( import (
"github.com/TeaOSLab/EdgeNode/internal/waf/requests" "github.com/TeaOSLab/EdgeNode/internal/waf/requests"
"github.com/iwind/TeaGo/maps"
) )
// just a sample checkpoint, copy and change it for your new checkpoint // SampleResponseCheckpoint just a sample checkpoint, copy and change it for your new checkpoint
type SampleResponseCheckpoint struct { type SampleResponseCheckpoint struct {
Checkpoint Checkpoint
} }
@@ -13,10 +14,10 @@ func (this *SampleResponseCheckpoint) IsRequest() bool {
return false return false
} }
func (this *SampleResponseCheckpoint) RequestValue(req *requests.Request, param string, options map[string]string) (value interface{}, sysErr error, userErr error) { func (this *SampleResponseCheckpoint) RequestValue(req requests.Request, param string, options maps.Map, ruleId int64) (value interface{}, sysErr error, userErr error) {
return return
} }
func (this *SampleResponseCheckpoint) ResponseValue(req *requests.Request, resp *requests.Response, param string, options map[string]string) (value interface{}, sysErr error, userErr error) { func (this *SampleResponseCheckpoint) ResponseValue(req requests.Request, resp *requests.Response, param string, options maps.Map, ruleId int64) (value interface{}, hasRequestBody bool, sysErr error, userErr error) {
return return
} }

View File

@@ -26,6 +26,8 @@ var singleParamRegexp = regexp.MustCompile("^\\${[\\w.-]+}$")
// Rule // Rule
type Rule struct { type Rule struct {
Id int64
Description string `yaml:"description" json:"description"` Description string `yaml:"description" json:"description"`
Param string `yaml:"param" json:"param"` // such as ${arg.name} or ${args}, can be composite as ${arg.firstName}${arg.lastName} Param string `yaml:"param" json:"param"` // such as ${arg.name} or ${args}, can be composite as ${arg.firstName}${arg.lastName}
ParamFilters []*ParamFilter `yaml:"paramFilters" json:"paramFilters"` ParamFilters []*ParamFilter `yaml:"paramFilters" json:"paramFilters"`
@@ -186,7 +188,7 @@ func (this *Rule) Init() error {
func (this *Rule) MatchRequest(req requests.Request) (b bool, hasRequestBody bool, err error) { func (this *Rule) MatchRequest(req requests.Request) (b bool, hasRequestBody bool, err error) {
if this.singleCheckpoint != nil { if this.singleCheckpoint != nil {
value, hasCheckedRequestBody, err, _ := this.singleCheckpoint.RequestValue(req, this.singleParam, this.CheckpointOptions) value, hasCheckedRequestBody, err, _ := this.singleCheckpoint.RequestValue(req, this.singleParam, this.CheckpointOptions, this.Id)
if hasCheckedRequestBody { if hasCheckedRequestBody {
hasRequestBody = true hasRequestBody = true
} }
@@ -216,7 +218,7 @@ func (this *Rule) MatchRequest(req requests.Request) (b bool, hasRequestBody boo
} }
if len(pieces) == 1 { if len(pieces) == 1 {
value1, hasCheckRequestBody, err1, _ := point.RequestValue(req, "", this.CheckpointOptions) value1, hasCheckRequestBody, err1, _ := point.RequestValue(req, "", this.CheckpointOptions, this.Id)
if hasCheckRequestBody { if hasCheckRequestBody {
hasRequestBody = true hasRequestBody = true
} }
@@ -226,7 +228,7 @@ func (this *Rule) MatchRequest(req requests.Request) (b bool, hasRequestBody boo
return types.String(value1) return types.String(value1)
} }
value1, hasCheckRequestBody, err1, _ := point.RequestValue(req, pieces[1], this.CheckpointOptions) value1, hasCheckRequestBody, err1, _ := point.RequestValue(req, pieces[1], this.CheckpointOptions, this.Id)
if hasCheckRequestBody { if hasCheckRequestBody {
hasRequestBody = true hasRequestBody = true
} }
@@ -247,7 +249,7 @@ func (this *Rule) MatchResponse(req requests.Request, resp *requests.Response) (
if this.singleCheckpoint != nil { if this.singleCheckpoint != nil {
// if is request param // if is request param
if this.singleCheckpoint.IsRequest() { if this.singleCheckpoint.IsRequest() {
value, hasCheckRequestBody, err, _ := this.singleCheckpoint.RequestValue(req, this.singleParam, this.CheckpointOptions) value, hasCheckRequestBody, err, _ := this.singleCheckpoint.RequestValue(req, this.singleParam, this.CheckpointOptions, this.Id)
if hasCheckRequestBody { if hasCheckRequestBody {
hasRequestBody = true hasRequestBody = true
} }
@@ -264,7 +266,7 @@ func (this *Rule) MatchResponse(req requests.Request, resp *requests.Response) (
} }
// response param // response param
value, hasCheckRequestBody, err, _ := this.singleCheckpoint.ResponseValue(req, resp, this.singleParam, this.CheckpointOptions) value, hasCheckRequestBody, err, _ := this.singleCheckpoint.ResponseValue(req, resp, this.singleParam, this.CheckpointOptions, this.Id)
if hasCheckRequestBody { if hasCheckRequestBody {
hasRequestBody = true hasRequestBody = true
} }
@@ -290,7 +292,7 @@ func (this *Rule) MatchResponse(req requests.Request, resp *requests.Response) (
if len(pieces) == 1 { if len(pieces) == 1 {
if point.IsRequest() { if point.IsRequest() {
value1, hasCheckRequestBody, err1, _ := point.RequestValue(req, "", this.CheckpointOptions) value1, hasCheckRequestBody, err1, _ := point.RequestValue(req, "", this.CheckpointOptions, this.Id)
if hasCheckRequestBody { if hasCheckRequestBody {
hasRequestBody = true hasRequestBody = true
} }
@@ -299,7 +301,7 @@ func (this *Rule) MatchResponse(req requests.Request, resp *requests.Response) (
} }
return types.String(value1) return types.String(value1)
} else { } else {
value1, hasCheckRequestBody, err1, _ := point.ResponseValue(req, resp, "", this.CheckpointOptions) value1, hasCheckRequestBody, err1, _ := point.ResponseValue(req, resp, "", this.CheckpointOptions, this.Id)
if hasCheckRequestBody { if hasCheckRequestBody {
hasRequestBody = true hasRequestBody = true
} }
@@ -311,7 +313,7 @@ func (this *Rule) MatchResponse(req requests.Request, resp *requests.Response) (
} }
if point.IsRequest() { if point.IsRequest() {
value1, hasCheckRequestBody, err1, _ := point.RequestValue(req, pieces[1], this.CheckpointOptions) value1, hasCheckRequestBody, err1, _ := point.RequestValue(req, pieces[1], this.CheckpointOptions, this.Id)
if hasCheckRequestBody { if hasCheckRequestBody {
hasRequestBody = true hasRequestBody = true
} }
@@ -320,7 +322,7 @@ func (this *Rule) MatchResponse(req requests.Request, resp *requests.Response) (
} }
return types.String(value1) return types.String(value1)
} else { } else {
value1, hasCheckRequestBody, err1, _ := point.ResponseValue(req, resp, pieces[1], this.CheckpointOptions) value1, hasCheckRequestBody, err1, _ := point.ResponseValue(req, resp, pieces[1], this.CheckpointOptions, this.Id)
if hasCheckRequestBody { if hasCheckRequestBody {
hasRequestBody = true hasRequestBody = true
} }

View File

@@ -97,6 +97,7 @@ func (this *WAFManager) ConvertWAF(policy *firewallconfigs.HTTPFirewallPolicy) (
// rules // rules
for _, rule := range set.Rules { for _, rule := range set.Rules {
r := &Rule{ r := &Rule{
Id: rule.Id,
Description: rule.Description, Description: rule.Description,
Param: rule.Param, Param: rule.Param,
ParamFilters: []*ParamFilter{}, ParamFilters: []*ParamFilter{},
@@ -154,6 +155,7 @@ func (this *WAFManager) ConvertWAF(policy *firewallconfigs.HTTPFirewallPolicy) (
// rules // rules
for _, rule := range set.Rules { for _, rule := range set.Rules {
r := &Rule{ r := &Rule{
Id: rule.Id,
Description: rule.Description, Description: rule.Description,
Param: rule.Param, Param: rule.Param,
Operator: rule.Operator, Operator: rule.Operator,