mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-04 07:50:25 +08:00
WAF策略增加显示页面动作默认设置
This commit is contained in:
@@ -149,6 +149,14 @@ func (this *HTTPFirewallPolicyDAO) CreateFirewallPolicy(tx *dbs.Tx, userId int64
|
|||||||
}
|
}
|
||||||
op.BlockOptions = blockOptionsJSON
|
op.BlockOptions = blockOptionsJSON
|
||||||
|
|
||||||
|
// page options
|
||||||
|
var pageOptions = firewallconfigs.DefaultHTTPFirewallPageAction()
|
||||||
|
pageOptionsJSON, err := json.Marshal(pageOptions)
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
op.PageOptions = pageOptionsJSON
|
||||||
|
|
||||||
// captcha options
|
// captcha options
|
||||||
var captchaOptions = firewallconfigs.DefaultHTTPFirewallCaptchaAction()
|
var captchaOptions = firewallconfigs.DefaultHTTPFirewallCaptchaAction()
|
||||||
captchaOptionsJSON, err := json.Marshal(captchaOptions)
|
captchaOptionsJSON, err := json.Marshal(captchaOptions)
|
||||||
@@ -313,6 +321,7 @@ func (this *HTTPFirewallPolicyDAO) UpdateFirewallPolicy(tx *dbs.Tx,
|
|||||||
inboundJSON []byte,
|
inboundJSON []byte,
|
||||||
outboundJSON []byte,
|
outboundJSON []byte,
|
||||||
blockOptionsJSON []byte,
|
blockOptionsJSON []byte,
|
||||||
|
pageOptionsJSON []byte,
|
||||||
captchaOptionsJSON []byte,
|
captchaOptionsJSON []byte,
|
||||||
mode firewallconfigs.FirewallMode,
|
mode firewallconfigs.FirewallMode,
|
||||||
useLocalFirewall bool,
|
useLocalFirewall bool,
|
||||||
@@ -343,6 +352,9 @@ func (this *HTTPFirewallPolicyDAO) UpdateFirewallPolicy(tx *dbs.Tx,
|
|||||||
if IsNotNull(blockOptionsJSON) {
|
if IsNotNull(blockOptionsJSON) {
|
||||||
op.BlockOptions = blockOptionsJSON
|
op.BlockOptions = blockOptionsJSON
|
||||||
}
|
}
|
||||||
|
if IsNotNull(pageOptionsJSON) {
|
||||||
|
op.PageOptions = pageOptionsJSON
|
||||||
|
}
|
||||||
if IsNotNull(captchaOptionsJSON) {
|
if IsNotNull(captchaOptionsJSON) {
|
||||||
op.CaptchaOptions = captchaOptionsJSON
|
op.CaptchaOptions = captchaOptionsJSON
|
||||||
}
|
}
|
||||||
@@ -524,6 +536,16 @@ func (this *HTTPFirewallPolicyDAO) ComposeFirewallPolicy(tx *dbs.Tx, policyId in
|
|||||||
config.BlockOptions = blockAction
|
config.BlockOptions = blockAction
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Page动作配置
|
||||||
|
if IsNotNull(policy.PageOptions) {
|
||||||
|
var pageAction = firewallconfigs.DefaultHTTPFirewallPageAction()
|
||||||
|
err = json.Unmarshal(policy.PageOptions, pageAction)
|
||||||
|
if err != nil {
|
||||||
|
return config, err
|
||||||
|
}
|
||||||
|
config.PageOptions = pageAction
|
||||||
|
}
|
||||||
|
|
||||||
// Captcha动作配置
|
// Captcha动作配置
|
||||||
if IsNotNull(policy.CaptchaOptions) {
|
if IsNotNull(policy.CaptchaOptions) {
|
||||||
var captchaAction = &firewallconfigs.HTTPFirewallCaptchaAction{}
|
var captchaAction = &firewallconfigs.HTTPFirewallCaptchaAction{}
|
||||||
|
|||||||
@@ -16,8 +16,9 @@ const (
|
|||||||
HTTPFirewallPolicyField_Description dbs.FieldName = "description" // 描述
|
HTTPFirewallPolicyField_Description dbs.FieldName = "description" // 描述
|
||||||
HTTPFirewallPolicyField_Inbound dbs.FieldName = "inbound" // 入站规则
|
HTTPFirewallPolicyField_Inbound dbs.FieldName = "inbound" // 入站规则
|
||||||
HTTPFirewallPolicyField_Outbound dbs.FieldName = "outbound" // 出站规则
|
HTTPFirewallPolicyField_Outbound dbs.FieldName = "outbound" // 出站规则
|
||||||
HTTPFirewallPolicyField_BlockOptions dbs.FieldName = "blockOptions" // BLOCK选项
|
HTTPFirewallPolicyField_BlockOptions dbs.FieldName = "blockOptions" // BLOCK动作选项
|
||||||
HTTPFirewallPolicyField_CaptchaOptions dbs.FieldName = "captchaOptions" // 验证码选项
|
HTTPFirewallPolicyField_PageOptions dbs.FieldName = "pageOptions" // PAGE动作选项
|
||||||
|
HTTPFirewallPolicyField_CaptchaOptions dbs.FieldName = "captchaOptions" // 验证码动作选项
|
||||||
HTTPFirewallPolicyField_Mode dbs.FieldName = "mode" // 模式
|
HTTPFirewallPolicyField_Mode dbs.FieldName = "mode" // 模式
|
||||||
HTTPFirewallPolicyField_UseLocalFirewall dbs.FieldName = "useLocalFirewall" // 是否自动使用本地防火墙
|
HTTPFirewallPolicyField_UseLocalFirewall dbs.FieldName = "useLocalFirewall" // 是否自动使用本地防火墙
|
||||||
HTTPFirewallPolicyField_SynFlood dbs.FieldName = "synFlood" // SynFlood防御设置
|
HTTPFirewallPolicyField_SynFlood dbs.FieldName = "synFlood" // SynFlood防御设置
|
||||||
@@ -42,8 +43,9 @@ type HTTPFirewallPolicy struct {
|
|||||||
Description string `field:"description"` // 描述
|
Description string `field:"description"` // 描述
|
||||||
Inbound dbs.JSON `field:"inbound"` // 入站规则
|
Inbound dbs.JSON `field:"inbound"` // 入站规则
|
||||||
Outbound dbs.JSON `field:"outbound"` // 出站规则
|
Outbound dbs.JSON `field:"outbound"` // 出站规则
|
||||||
BlockOptions dbs.JSON `field:"blockOptions"` // BLOCK选项
|
BlockOptions dbs.JSON `field:"blockOptions"` // BLOCK动作选项
|
||||||
CaptchaOptions dbs.JSON `field:"captchaOptions"` // 验证码选项
|
PageOptions dbs.JSON `field:"pageOptions"` // PAGE动作选项
|
||||||
|
CaptchaOptions dbs.JSON `field:"captchaOptions"` // 验证码动作选项
|
||||||
Mode string `field:"mode"` // 模式
|
Mode string `field:"mode"` // 模式
|
||||||
UseLocalFirewall uint8 `field:"useLocalFirewall"` // 是否自动使用本地防火墙
|
UseLocalFirewall uint8 `field:"useLocalFirewall"` // 是否自动使用本地防火墙
|
||||||
SynFlood dbs.JSON `field:"synFlood"` // SynFlood防御设置
|
SynFlood dbs.JSON `field:"synFlood"` // SynFlood防御设置
|
||||||
@@ -67,8 +69,9 @@ type HTTPFirewallPolicyOperator struct {
|
|||||||
Description any // 描述
|
Description any // 描述
|
||||||
Inbound any // 入站规则
|
Inbound any // 入站规则
|
||||||
Outbound any // 出站规则
|
Outbound any // 出站规则
|
||||||
BlockOptions any // BLOCK选项
|
BlockOptions any // BLOCK动作选项
|
||||||
CaptchaOptions any // 验证码选项
|
PageOptions any // PAGE动作选项
|
||||||
|
CaptchaOptions any // 验证码动作选项
|
||||||
Mode any // 模式
|
Mode any // 模式
|
||||||
UseLocalFirewall any // 是否自动使用本地防火墙
|
UseLocalFirewall any // 是否自动使用本地防火墙
|
||||||
SynFlood any // SynFlood防御设置
|
SynFlood any // SynFlood防御设置
|
||||||
|
|||||||
@@ -305,7 +305,7 @@ func (this *HTTPFirewallPolicyService) UpdateHTTPFirewallPolicy(ctx context.Cont
|
|||||||
req.MaxRequestBodySize = 0
|
req.MaxRequestBodySize = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
err = models.SharedHTTPFirewallPolicyDAO.UpdateFirewallPolicy(tx, req.HttpFirewallPolicyId, req.IsOn, req.Name, req.Description, inboundConfigJSON, outboundConfigJSON, req.BlockOptionsJSON, req.CaptchaOptionsJSON, req.Mode, req.UseLocalFirewall, synFloodConfig, logConfig, req.MaxRequestBodySize, req.DenyCountryHTML, req.DenyProvinceHTML)
|
err = models.SharedHTTPFirewallPolicyDAO.UpdateFirewallPolicy(tx, req.HttpFirewallPolicyId, req.IsOn, req.Name, req.Description, inboundConfigJSON, outboundConfigJSON, req.BlockOptionsJSON, req.PageOptionsJSON, req.CaptchaOptionsJSON, req.Mode, req.UseLocalFirewall, synFloodConfig, logConfig, req.MaxRequestBodySize, req.DenyCountryHTML, req.DenyProvinceHTML)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -500,6 +500,7 @@ func (this *HTTPFirewallPolicyService) FindEnabledHTTPFirewallPolicy(ctx context
|
|||||||
Mode: policy.Mode,
|
Mode: policy.Mode,
|
||||||
SynFloodJSON: policy.SynFlood,
|
SynFloodJSON: policy.SynFlood,
|
||||||
BlockOptionsJSON: policy.BlockOptions,
|
BlockOptionsJSON: policy.BlockOptions,
|
||||||
|
PageOptionsJSON: policy.PageOptions,
|
||||||
CaptchaOptionsJSON: policy.CaptchaOptions,
|
CaptchaOptionsJSON: policy.CaptchaOptions,
|
||||||
},
|
},
|
||||||
}, nil
|
}, nil
|
||||||
|
|||||||
@@ -102722,7 +102722,7 @@
|
|||||||
"name": "edgeHTTPFirewallPolicies",
|
"name": "edgeHTTPFirewallPolicies",
|
||||||
"engine": "InnoDB",
|
"engine": "InnoDB",
|
||||||
"charset": "utf8mb4_general_ci",
|
"charset": "utf8mb4_general_ci",
|
||||||
"definition": "CREATE TABLE `edgeHTTPFirewallPolicies` (\n `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',\n `templateId` int(11) unsigned DEFAULT '0' COMMENT '模版ID',\n `adminId` int(11) unsigned DEFAULT '0' COMMENT '管理员ID',\n `userId` int(11) unsigned DEFAULT '0' COMMENT '用户ID',\n `serverId` int(11) unsigned DEFAULT '0' COMMENT '服务ID',\n `groupId` int(11) unsigned DEFAULT '0' COMMENT '服务分组ID',\n `state` tinyint(1) unsigned DEFAULT '1' COMMENT '状态',\n `createdAt` bigint(11) unsigned DEFAULT '0' COMMENT '创建时间',\n `isOn` tinyint(1) unsigned DEFAULT '1' COMMENT '是否启用',\n `name` varchar(255) DEFAULT NULL COMMENT '名称',\n `description` varchar(1024) DEFAULT NULL COMMENT '描述',\n `inbound` json DEFAULT NULL COMMENT '入站规则',\n `outbound` json DEFAULT NULL COMMENT '出站规则',\n `blockOptions` json DEFAULT NULL COMMENT 'BLOCK选项',\n `captchaOptions` json DEFAULT NULL COMMENT '验证码选项',\n `mode` varchar(32) DEFAULT 'defend' COMMENT '模式',\n `useLocalFirewall` tinyint(1) unsigned DEFAULT '1' COMMENT '是否自动使用本地防火墙',\n `synFlood` json DEFAULT NULL COMMENT 'SynFlood防御设置',\n `log` json DEFAULT NULL COMMENT '日志配置',\n `maxRequestBodySize` int(11) unsigned DEFAULT '0' COMMENT '可以检查的最大请求内容尺寸',\n `denyCountryHTML` text COMMENT '区域封禁提示',\n `denyProvinceHTML` text COMMENT '省份封禁提示',\n PRIMARY KEY (`id`),\n KEY `userId` (`userId`),\n KEY `serverId` (`serverId`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='HTTP防火墙'",
|
"definition": "CREATE TABLE `edgeHTTPFirewallPolicies` (\n `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',\n `templateId` int(11) unsigned DEFAULT '0' COMMENT '模版ID',\n `adminId` int(11) unsigned DEFAULT '0' COMMENT '管理员ID',\n `userId` int(11) unsigned DEFAULT '0' COMMENT '用户ID',\n `serverId` int(11) unsigned DEFAULT '0' COMMENT '服务ID',\n `groupId` int(11) unsigned DEFAULT '0' COMMENT '服务分组ID',\n `state` tinyint(1) unsigned DEFAULT '1' COMMENT '状态',\n `createdAt` bigint(11) unsigned DEFAULT '0' COMMENT '创建时间',\n `isOn` tinyint(1) unsigned DEFAULT '1' COMMENT '是否启用',\n `name` varchar(255) DEFAULT NULL COMMENT '名称',\n `description` varchar(1024) DEFAULT NULL COMMENT '描述',\n `inbound` json DEFAULT NULL COMMENT '入站规则',\n `outbound` json DEFAULT NULL COMMENT '出站规则',\n `blockOptions` json DEFAULT NULL COMMENT 'BLOCK动作选项',\n `pageOptions` json DEFAULT NULL COMMENT 'PAGE动作选项',\n `captchaOptions` json DEFAULT NULL COMMENT '验证码动作选项',\n `mode` varchar(32) DEFAULT 'defend' COMMENT '模式',\n `useLocalFirewall` tinyint(1) unsigned DEFAULT '1' COMMENT '是否自动使用本地防火墙',\n `synFlood` json DEFAULT NULL COMMENT 'SynFlood防御设置',\n `log` json DEFAULT NULL COMMENT '日志配置',\n `maxRequestBodySize` int(11) unsigned DEFAULT '0' COMMENT '可以检查的最大请求内容尺寸',\n `denyCountryHTML` text COMMENT '区域封禁提示',\n `denyProvinceHTML` text COMMENT '省份封禁提示',\n PRIMARY KEY (`id`),\n KEY `userId` (`userId`),\n KEY `serverId` (`serverId`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='HTTP防火墙'",
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "id",
|
"name": "id",
|
||||||
@@ -102778,11 +102778,15 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "blockOptions",
|
"name": "blockOptions",
|
||||||
"definition": "json COMMENT 'BLOCK选项'"
|
"definition": "json COMMENT 'BLOCK动作选项'"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "pageOptions",
|
||||||
|
"definition": "json COMMENT 'PAGE动作选项'"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "captchaOptions",
|
"name": "captchaOptions",
|
||||||
"definition": "json COMMENT '验证码选项'"
|
"definition": "json COMMENT '验证码动作选项'"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "mode",
|
"name": "mode",
|
||||||
|
|||||||
Reference in New Issue
Block a user