mirror of
https://github.com/TeaOSLab/EdgeCommon.git
synced 2025-11-04 05:00:24 +08:00
增加“极验-行为验”验证码集成支持
This commit is contained in:
@@ -19914,8 +19914,8 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "HTTPFirewallPolicy",
|
"name": "HTTPFirewallPolicy",
|
||||||
"code": "message HTTPFirewallPolicy {\n\tint64 id = 1;\n\tstring name = 2;\n\tstring mode = 7;\n\tbool isOn = 3;\n\tstring description = 4;\n\tbytes inboundJSON = 5;\n\tbytes outboundJSON = 6;\n\tint64 serverId = 8;\n\tbool useLocalFirewall = 9;\n\tbytes synFloodJSON = 10;\n}",
|
"code": "message HTTPFirewallPolicy {\n\tint64 id = 1; // 策略ID\n\tstring name = 2; // 名称\n\tstring mode = 7; // 模式\n\tbool isOn = 3; // 是否启用\n\tstring description = 4; // 描述\n\tbytes inboundJSON = 5; // 入站配置\n\tbytes outboundJSON = 6; // 出站配置\n\tint64 serverId = 8; // 所属网站ID(如果为0表示公共策略)\n\tbool useLocalFirewall = 9; // 是否使用本机防火墙\n\tbytes synFloodJSON = 10; // synflood配置\n\tbytes blockOptionsJSON = 11; // 拦截配置\n\tbytes captchaOptionsJSON = 12; // 人机识别配置\n}",
|
||||||
"doc": ""
|
"doc": "WAF策略"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "HTTPFirewallRuleGroup",
|
"name": "HTTPFirewallRuleGroup",
|
||||||
|
|||||||
@@ -20,21 +20,24 @@ const (
|
|||||||
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// WAF策略
|
||||||
type HTTPFirewallPolicy struct {
|
type HTTPFirewallPolicy struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
unknownFields protoimpl.UnknownFields
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
|
Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` // 策略ID
|
||||||
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
|
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // 名称
|
||||||
Mode string `protobuf:"bytes,7,opt,name=mode,proto3" json:"mode,omitempty"`
|
Mode string `protobuf:"bytes,7,opt,name=mode,proto3" json:"mode,omitempty"` // 模式
|
||||||
IsOn bool `protobuf:"varint,3,opt,name=isOn,proto3" json:"isOn,omitempty"`
|
IsOn bool `protobuf:"varint,3,opt,name=isOn,proto3" json:"isOn,omitempty"` // 是否启用
|
||||||
Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
|
Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` // 描述
|
||||||
InboundJSON []byte `protobuf:"bytes,5,opt,name=inboundJSON,proto3" json:"inboundJSON,omitempty"`
|
InboundJSON []byte `protobuf:"bytes,5,opt,name=inboundJSON,proto3" json:"inboundJSON,omitempty"` // 入站配置
|
||||||
OutboundJSON []byte `protobuf:"bytes,6,opt,name=outboundJSON,proto3" json:"outboundJSON,omitempty"`
|
OutboundJSON []byte `protobuf:"bytes,6,opt,name=outboundJSON,proto3" json:"outboundJSON,omitempty"` // 出站配置
|
||||||
ServerId int64 `protobuf:"varint,8,opt,name=serverId,proto3" json:"serverId,omitempty"`
|
ServerId int64 `protobuf:"varint,8,opt,name=serverId,proto3" json:"serverId,omitempty"` // 所属网站ID(如果为0表示公共策略)
|
||||||
UseLocalFirewall bool `protobuf:"varint,9,opt,name=useLocalFirewall,proto3" json:"useLocalFirewall,omitempty"`
|
UseLocalFirewall bool `protobuf:"varint,9,opt,name=useLocalFirewall,proto3" json:"useLocalFirewall,omitempty"` // 是否使用本机防火墙
|
||||||
SynFloodJSON []byte `protobuf:"bytes,10,opt,name=synFloodJSON,proto3" json:"synFloodJSON,omitempty"`
|
SynFloodJSON []byte `protobuf:"bytes,10,opt,name=synFloodJSON,proto3" json:"synFloodJSON,omitempty"` // synflood配置
|
||||||
|
BlockOptionsJSON []byte `protobuf:"bytes,11,opt,name=blockOptionsJSON,proto3" json:"blockOptionsJSON,omitempty"` // 拦截配置
|
||||||
|
CaptchaOptionsJSON []byte `protobuf:"bytes,12,opt,name=captchaOptionsJSON,proto3" json:"captchaOptionsJSON,omitempty"` // 人机识别配置
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *HTTPFirewallPolicy) Reset() {
|
func (x *HTTPFirewallPolicy) Reset() {
|
||||||
@@ -139,12 +142,26 @@ func (x *HTTPFirewallPolicy) GetSynFloodJSON() []byte {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x *HTTPFirewallPolicy) GetBlockOptionsJSON() []byte {
|
||||||
|
if x != nil {
|
||||||
|
return x.BlockOptionsJSON
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *HTTPFirewallPolicy) GetCaptchaOptionsJSON() []byte {
|
||||||
|
if x != nil {
|
||||||
|
return x.CaptchaOptionsJSON
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
var File_models_model_http_firewall_policy_proto protoreflect.FileDescriptor
|
var File_models_model_http_firewall_policy_proto protoreflect.FileDescriptor
|
||||||
|
|
||||||
var file_models_model_http_firewall_policy_proto_rawDesc = []byte{
|
var file_models_model_http_firewall_policy_proto_rawDesc = []byte{
|
||||||
0x0a, 0x27, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x68,
|
0x0a, 0x27, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x68,
|
||||||
0x74, 0x74, 0x70, 0x5f, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x6f, 0x6c,
|
0x74, 0x74, 0x70, 0x5f, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x6f, 0x6c,
|
||||||
0x69, 0x63, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x22, 0xb4, 0x02,
|
0x69, 0x63, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x22, 0x90, 0x03,
|
||||||
0x0a, 0x12, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f,
|
0x0a, 0x12, 0x48, 0x54, 0x54, 0x50, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f,
|
||||||
0x6c, 0x69, 0x63, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
|
0x6c, 0x69, 0x63, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
|
||||||
0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
|
0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
|
||||||
@@ -164,8 +181,13 @@ var file_models_model_http_firewall_policy_proto_rawDesc = []byte{
|
|||||||
0x75, 0x73, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c,
|
0x75, 0x73, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c,
|
||||||
0x12, 0x22, 0x0a, 0x0c, 0x73, 0x79, 0x6e, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x4a, 0x53, 0x4f, 0x4e,
|
0x12, 0x22, 0x0a, 0x0c, 0x73, 0x79, 0x6e, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x4a, 0x53, 0x4f, 0x4e,
|
||||||
0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x73, 0x79, 0x6e, 0x46, 0x6c, 0x6f, 0x6f, 0x64,
|
0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x73, 0x79, 0x6e, 0x46, 0x6c, 0x6f, 0x6f, 0x64,
|
||||||
0x4a, 0x53, 0x4f, 0x4e, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72,
|
0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x2a, 0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4f, 0x70, 0x74,
|
||||||
0x6f, 0x74, 0x6f, 0x33,
|
0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10,
|
||||||
|
0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x53, 0x4f, 0x4e,
|
||||||
|
0x12, 0x2e, 0x0a, 0x12, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f,
|
||||||
|
0x6e, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x12, 0x63, 0x61,
|
||||||
|
0x70, 0x74, 0x63, 0x68, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x53, 0x4f, 0x4e,
|
||||||
|
0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|||||||
@@ -3,15 +3,18 @@ option go_package = "./pb";
|
|||||||
|
|
||||||
package pb;
|
package pb;
|
||||||
|
|
||||||
|
// WAF策略
|
||||||
message HTTPFirewallPolicy {
|
message HTTPFirewallPolicy {
|
||||||
int64 id = 1;
|
int64 id = 1; // 策略ID
|
||||||
string name = 2;
|
string name = 2; // 名称
|
||||||
string mode = 7;
|
string mode = 7; // 模式
|
||||||
bool isOn = 3;
|
bool isOn = 3; // 是否启用
|
||||||
string description = 4;
|
string description = 4; // 描述
|
||||||
bytes inboundJSON = 5;
|
bytes inboundJSON = 5; // 入站配置
|
||||||
bytes outboundJSON = 6;
|
bytes outboundJSON = 6; // 出站配置
|
||||||
int64 serverId = 8;
|
int64 serverId = 8; // 所属网站ID(如果为0表示公共策略)
|
||||||
bool useLocalFirewall = 9;
|
bool useLocalFirewall = 9; // 是否使用本机防火墙
|
||||||
bytes synFloodJSON = 10;
|
bytes synFloodJSON = 10; // synflood配置
|
||||||
|
bytes blockOptionsJSON = 11; // 拦截配置
|
||||||
|
bytes captchaOptionsJSON = 12; // 人机识别配置
|
||||||
}
|
}
|
||||||
@@ -10,6 +10,7 @@ const (
|
|||||||
CaptchaTypeDefault CaptchaType = "default"
|
CaptchaTypeDefault CaptchaType = "default"
|
||||||
CaptchaTypeOneClick CaptchaType = "oneClick"
|
CaptchaTypeOneClick CaptchaType = "oneClick"
|
||||||
CaptchaTypeSlide CaptchaType = "slide"
|
CaptchaTypeSlide CaptchaType = "slide"
|
||||||
|
CaptchaTypeGeeTest CaptchaType = "geetest"
|
||||||
)
|
)
|
||||||
|
|
||||||
// FindAllCaptchaTypes Find all captcha types
|
// FindAllCaptchaTypes Find all captcha types
|
||||||
@@ -30,6 +31,11 @@ func FindAllCaptchaTypes() []*shared.Definition {
|
|||||||
Name: "滑动解锁",
|
Name: "滑动解锁",
|
||||||
Description: "通过滑动方块解锁来验证人机。",
|
Description: "通过滑动方块解锁来验证人机。",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
Code: CaptchaTypeGeeTest,
|
||||||
|
Name: "极验-行为验",
|
||||||
|
Description: "使用极验-行为验提供的人机验证方式。",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
package firewallconfigs
|
package firewallconfigs
|
||||||
|
|
||||||
|
type GeeTestConfig struct {
|
||||||
|
IsOn bool `yaml:"isOn" json:"isOn"`
|
||||||
|
CaptchaId string `yaml:"captchaId" json:"captchaId"`
|
||||||
|
CaptchaKey string `yaml:"captchaKey" json:"captchaKey"`
|
||||||
|
}
|
||||||
|
|
||||||
type HTTPFirewallCaptchaAction struct {
|
type HTTPFirewallCaptchaAction struct {
|
||||||
IsPrior bool `yaml:"isPrior" json:"isPrior"`
|
IsPrior bool `yaml:"isPrior" json:"isPrior"`
|
||||||
|
|
||||||
@@ -10,6 +16,8 @@ type HTTPFirewallCaptchaAction struct {
|
|||||||
FailBlockTimeout int `yaml:"failBlockTimeout" json:"failBlockTimeout"` // 失败拦截时间
|
FailBlockTimeout int `yaml:"failBlockTimeout" json:"failBlockTimeout"` // 失败拦截时间
|
||||||
FailBlockScopeAll bool `yaml:"failBlockScopeAll" json:"failBlockScopeAll"` // 是否全局有效
|
FailBlockScopeAll bool `yaml:"failBlockScopeAll" json:"failBlockScopeAll"` // 是否全局有效
|
||||||
|
|
||||||
|
// 验证码相关配置
|
||||||
|
|
||||||
CountLetters int8 `yaml:"countLetters" json:"countLetters"` // 字符数量
|
CountLetters int8 `yaml:"countLetters" json:"countLetters"` // 字符数量
|
||||||
|
|
||||||
UIIsOn bool `yaml:"uiIsOn" json:"uiIsOn"` // 是否使用自定义UI
|
UIIsOn bool `yaml:"uiIsOn" json:"uiIsOn"` // 是否使用自定义UI
|
||||||
@@ -24,6 +32,10 @@ type HTTPFirewallCaptchaAction struct {
|
|||||||
CookieId string `yaml:"cookieId" json:"cookieId"` // TODO
|
CookieId string `yaml:"cookieId" json:"cookieId"` // TODO
|
||||||
|
|
||||||
Lang string `yaml:"lang" json:"lang"` // 语言,zh-CN, en-US ... TODO 需要实现,目前是根据浏览器Accept-Language动态获取
|
Lang string `yaml:"lang" json:"lang"` // 语言,zh-CN, en-US ... TODO 需要实现,目前是根据浏览器Accept-Language动态获取
|
||||||
|
|
||||||
|
// 极验相关配置
|
||||||
|
// MUST be struct
|
||||||
|
GeeTestConfig GeeTestConfig `yaml:"geeTestConfig" json:"geeTestConfig"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func DefaultHTTPFirewallCaptchaAction() *HTTPFirewallCaptchaAction {
|
func DefaultHTTPFirewallCaptchaAction() *HTTPFirewallCaptchaAction {
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ const (
|
|||||||
ServerCaptchaTypeDefault ServerCaptchaType = CaptchaTypeDefault
|
ServerCaptchaTypeDefault ServerCaptchaType = CaptchaTypeDefault
|
||||||
ServerCaptchaTypeOneClick ServerCaptchaType = CaptchaTypeOneClick
|
ServerCaptchaTypeOneClick ServerCaptchaType = CaptchaTypeOneClick
|
||||||
ServerCaptchaTypeSlide ServerCaptchaType = CaptchaTypeSlide
|
ServerCaptchaTypeSlide ServerCaptchaType = CaptchaTypeSlide
|
||||||
|
ServerCaptchaTypeGeeTest ServerCaptchaType = CaptchaTypeGeeTest
|
||||||
)
|
)
|
||||||
|
|
||||||
type HTTPFirewallRef struct {
|
type HTTPFirewallRef struct {
|
||||||
|
|||||||
Reference in New Issue
Block a user