2020-10-06 21:02:21 +08:00
|
|
|
|
package firewallconfigs
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
|
"reflect"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
var AllActions = []*HTTPFirewallActionDefinition{
|
2024-01-20 16:18:49 +08:00
|
|
|
|
{
|
|
|
|
|
|
Name: "显示网页",
|
|
|
|
|
|
Code: HTTPFirewallActionPage,
|
|
|
|
|
|
Description: "显示请求被拦截的网页。",
|
|
|
|
|
|
Category: HTTPFirewallActionCategoryBlock,
|
|
|
|
|
|
},
|
2020-10-06 21:02:21 +08:00
|
|
|
|
{
|
2021-07-14 22:46:31 +08:00
|
|
|
|
Name: "阻止",
|
|
|
|
|
|
Code: HTTPFirewallActionBlock,
|
2023-12-24 10:13:37 +08:00
|
|
|
|
Description: "阻止请求并中断当前连接,并自动将当前客户端IP加入到系统黑名单;使用此动作时,请先自行严格测试设置的规则是否正确,避免因错误封禁而导致用户无法正常访问的严重后果!",
|
2021-07-14 22:46:31 +08:00
|
|
|
|
Category: HTTPFirewallActionCategoryBlock,
|
2020-10-06 21:02:21 +08:00
|
|
|
|
},
|
2022-08-25 15:36:01 +08:00
|
|
|
|
{
|
2023-11-15 15:12:08 +08:00
|
|
|
|
Name: "Captcha人机识别",
|
2022-08-25 15:36:01 +08:00
|
|
|
|
Code: HTTPFirewallActionCaptcha,
|
2023-11-15 15:12:08 +08:00
|
|
|
|
Description: "在浏览器使用人机识别机制(比如验证码)来验证客户端。",
|
2022-08-25 15:36:01 +08:00
|
|
|
|
Category: HTTPFirewallActionCategoryVerify,
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "JS Cookie验证",
|
|
|
|
|
|
Code: HTTPFirewallActionJavascriptCookie,
|
2022-08-25 16:03:18 +08:00
|
|
|
|
Description: "首次访问网站时通过Javascript设置Cookie来验证请求。",
|
2022-08-25 15:36:01 +08:00
|
|
|
|
Category: HTTPFirewallActionCategoryVerify,
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "记录IP",
|
|
|
|
|
|
Code: HTTPFirewallActionRecordIP,
|
|
|
|
|
|
Description: "将此IP记录到某个IP名单中。",
|
|
|
|
|
|
Category: HTTPFirewallActionCategoryBlock,
|
|
|
|
|
|
},
|
2023-05-28 17:45:39 +08:00
|
|
|
|
{
|
|
|
|
|
|
Name: "跳转",
|
|
|
|
|
|
Code: HTTPFirewallActionRedirect,
|
|
|
|
|
|
Description: "跳转到新的URL。",
|
|
|
|
|
|
Category: HTTPFirewallActionCategoryBlock,
|
|
|
|
|
|
},
|
2020-10-06 21:02:21 +08:00
|
|
|
|
{
|
2021-07-14 22:46:31 +08:00
|
|
|
|
Name: "允许通过",
|
|
|
|
|
|
Code: HTTPFirewallActionAllow,
|
|
|
|
|
|
Description: "允许正常通过,不记录到日志。",
|
|
|
|
|
|
Category: HTTPFirewallActionCategoryAllow,
|
2020-10-06 21:02:21 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2021-07-14 22:46:31 +08:00
|
|
|
|
Name: "允许并记录日志",
|
|
|
|
|
|
Code: HTTPFirewallActionLog,
|
|
|
|
|
|
Description: "允许正常通过并记录到日志。",
|
|
|
|
|
|
Category: HTTPFirewallActionCategoryAllow,
|
2020-10-06 21:02:21 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2022-08-25 15:36:01 +08:00
|
|
|
|
Name: "标签",
|
|
|
|
|
|
Code: HTTPFirewallActionTag,
|
|
|
|
|
|
Description: "为匹配的请求打上标签。",
|
|
|
|
|
|
Category: HTTPFirewallActionCategoryAllow,
|
2020-10-06 21:02:21 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2021-07-14 22:46:31 +08:00
|
|
|
|
Name: "告警",
|
|
|
|
|
|
Code: HTTPFirewallActionNotify,
|
2022-08-25 15:36:01 +08:00
|
|
|
|
Description: "向集群的消息接收人发送消息通知(商业版)。",
|
2021-07-14 22:46:31 +08:00
|
|
|
|
Category: HTTPFirewallActionCategoryVerify,
|
2020-10-06 21:02:21 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2021-07-14 22:46:31 +08:00
|
|
|
|
Name: "GET 302",
|
|
|
|
|
|
Code: HTTPFirewallActionGet302,
|
2021-07-18 16:26:45 +08:00
|
|
|
|
Description: "通过302重定向GET请求验证客户端真实性。",
|
2021-07-14 22:46:31 +08:00
|
|
|
|
Category: HTTPFirewallActionCategoryVerify,
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "POST 307",
|
|
|
|
|
|
Code: HTTPFirewallActionPost307,
|
2021-07-18 16:26:45 +08:00
|
|
|
|
Description: "通过307重定向POST请求验证客户端真实性。",
|
2021-07-14 22:46:31 +08:00
|
|
|
|
Category: HTTPFirewallActionCategoryVerify,
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "跳到下一个规则分组",
|
|
|
|
|
|
Code: HTTPFirewallActionGoGroup,
|
|
|
|
|
|
Type: reflect.TypeOf(new(HTTPFirewallGoGroupAction)).Elem(),
|
|
|
|
|
|
Category: HTTPFirewallActionCategoryVerify,
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
Name: "跳到下一个规则集",
|
|
|
|
|
|
Code: HTTPFirewallActionGoSet,
|
|
|
|
|
|
Type: reflect.TypeOf(new(HTTPFirewallGoSetAction)).Elem(),
|
|
|
|
|
|
Category: HTTPFirewallActionCategoryVerify,
|
2020-10-06 21:02:21 +08:00
|
|
|
|
},
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2021-07-14 22:46:31 +08:00
|
|
|
|
func FindActionDefinition(actionCode HTTPFirewallActionString) *HTTPFirewallActionDefinition {
|
2020-10-06 21:02:21 +08:00
|
|
|
|
for _, def := range AllActions {
|
2021-07-14 22:46:31 +08:00
|
|
|
|
if def.Code == actionCode {
|
|
|
|
|
|
return def
|
2020-10-06 21:02:21 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2021-07-14 22:46:31 +08:00
|
|
|
|
return nil
|
2020-10-06 21:02:21 +08:00
|
|
|
|
}
|