in plugins/wasm-go/extensions/request-block/main.go [50:121]
func parseConfig(json gjson.Result, config *RequestBlockConfig, log wrapper.Log) error {
code := json.Get("blocked_code").Int()
if code != 0 && code > 100 && code < 600 {
config.blockedCode = uint32(code)
} else {
config.blockedCode = 403
}
config.blockedMessage = json.Get("blocked_message").String()
config.caseSensitive = json.Get("case_sensitive").Bool()
for _, item := range json.Get("block_urls").Array() {
url := item.String()
if url == "" {
continue
}
if config.caseSensitive {
config.blockUrls = append(config.blockUrls, url)
} else {
config.blockUrls = append(config.blockUrls, strings.ToLower(url))
}
}
for _, item := range json.Get("block_exact_urls").Array() {
url := item.String()
if url == "" {
continue
}
if config.caseSensitive {
config.blockExactUrls = append(config.blockExactUrls, url)
} else {
config.blockExactUrls = append(config.blockExactUrls, strings.ToLower(url))
}
}
for _, item := range json.Get("block_regexp_urls").Array() {
regexpUrl := item.String()
if regexpUrl == "" {
continue
}
if config.caseSensitive {
reg := regexp.MustCompile(regexpUrl)
config.blockRegExpArray = append(config.blockRegExpArray, reg)
} else {
reg := regexp.MustCompile(strings.ToLower(regexpUrl))
config.blockRegExpArray = append(config.blockRegExpArray, reg)
}
}
for _, item := range json.Get("block_headers").Array() {
header := item.String()
if header == "" {
continue
}
if config.caseSensitive {
config.blockHeaders = append(config.blockHeaders, header)
} else {
config.blockHeaders = append(config.blockHeaders, strings.ToLower(header))
}
}
for _, item := range json.Get("block_bodies").Array() {
body := item.String()
if body == "" {
continue
}
if config.caseSensitive {
config.blockBodies = append(config.blockBodies, body)
} else {
config.blockBodies = append(config.blockBodies, strings.ToLower(body))
}
}
if len(config.blockUrls) == 0 && len(config.blockHeaders) == 0 &&
len(config.blockBodies) == 0 {
return errors.New("there is no block rules")
}
return nil
}