1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-06-20 14:35:23 +00:00

add full domain matching

This commit is contained in:
Darien Raymond 2018-08-21 21:30:32 +02:00
parent 059dfdbb97
commit d828aa2fba
No known key found for this signature in database
GPG Key ID: 7251FFA14BB18169
3 changed files with 63 additions and 56 deletions

View File

@ -69,6 +69,7 @@ var matcherTypeMap = map[Domain_Type]strmatcher.Type{
Domain_Plain: strmatcher.Substr,
Domain_Regex: strmatcher.Regex,
Domain_Domain: strmatcher.Domain,
Domain_Full: strmatcher.Full,
}
func domainToMatcher(domain *Domain) (strmatcher.Matcher, error) {

View File

@ -24,26 +24,30 @@ const (
Domain_Plain Domain_Type = 0
// The value is used as a regular expression.
Domain_Regex Domain_Type = 1
// The value is a domain.
// The value is a root domain.
Domain_Domain Domain_Type = 2
// The value is a domain.
Domain_Full Domain_Type = 3
)
var Domain_Type_name = map[int32]string{
0: "Plain",
1: "Regex",
2: "Domain",
3: "Full",
}
var Domain_Type_value = map[string]int32{
"Plain": 0,
"Regex": 1,
"Domain": 2,
"Full": 3,
}
func (x Domain_Type) String() string {
return proto.EnumName(Domain_Type_name, int32(x))
}
func (Domain_Type) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_config_227cf1ddacaf1282, []int{0, 0}
return fileDescriptor_config_e31761c0263e38b8, []int{0, 0}
}
type Config_DomainStrategy int32
@ -76,7 +80,7 @@ func (x Config_DomainStrategy) String() string {
return proto.EnumName(Config_DomainStrategy_name, int32(x))
}
func (Config_DomainStrategy) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_config_227cf1ddacaf1282, []int{7, 0}
return fileDescriptor_config_e31761c0263e38b8, []int{7, 0}
}
// Domain for routing decision.
@ -94,7 +98,7 @@ func (m *Domain) Reset() { *m = Domain{} }
func (m *Domain) String() string { return proto.CompactTextString(m) }
func (*Domain) ProtoMessage() {}
func (*Domain) Descriptor() ([]byte, []int) {
return fileDescriptor_config_227cf1ddacaf1282, []int{0}
return fileDescriptor_config_e31761c0263e38b8, []int{0}
}
func (m *Domain) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Domain.Unmarshal(m, b)
@ -143,7 +147,7 @@ func (m *CIDR) Reset() { *m = CIDR{} }
func (m *CIDR) String() string { return proto.CompactTextString(m) }
func (*CIDR) ProtoMessage() {}
func (*CIDR) Descriptor() ([]byte, []int) {
return fileDescriptor_config_227cf1ddacaf1282, []int{1}
return fileDescriptor_config_e31761c0263e38b8, []int{1}
}
func (m *CIDR) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CIDR.Unmarshal(m, b)
@ -189,7 +193,7 @@ func (m *GeoIP) Reset() { *m = GeoIP{} }
func (m *GeoIP) String() string { return proto.CompactTextString(m) }
func (*GeoIP) ProtoMessage() {}
func (*GeoIP) Descriptor() ([]byte, []int) {
return fileDescriptor_config_227cf1ddacaf1282, []int{2}
return fileDescriptor_config_e31761c0263e38b8, []int{2}
}
func (m *GeoIP) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GeoIP.Unmarshal(m, b)
@ -234,7 +238,7 @@ func (m *GeoIPList) Reset() { *m = GeoIPList{} }
func (m *GeoIPList) String() string { return proto.CompactTextString(m) }
func (*GeoIPList) ProtoMessage() {}
func (*GeoIPList) Descriptor() ([]byte, []int) {
return fileDescriptor_config_227cf1ddacaf1282, []int{3}
return fileDescriptor_config_e31761c0263e38b8, []int{3}
}
func (m *GeoIPList) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GeoIPList.Unmarshal(m, b)
@ -273,7 +277,7 @@ func (m *GeoSite) Reset() { *m = GeoSite{} }
func (m *GeoSite) String() string { return proto.CompactTextString(m) }
func (*GeoSite) ProtoMessage() {}
func (*GeoSite) Descriptor() ([]byte, []int) {
return fileDescriptor_config_227cf1ddacaf1282, []int{4}
return fileDescriptor_config_e31761c0263e38b8, []int{4}
}
func (m *GeoSite) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GeoSite.Unmarshal(m, b)
@ -318,7 +322,7 @@ func (m *GeoSiteList) Reset() { *m = GeoSiteList{} }
func (m *GeoSiteList) String() string { return proto.CompactTextString(m) }
func (*GeoSiteList) ProtoMessage() {}
func (*GeoSiteList) Descriptor() ([]byte, []int) {
return fileDescriptor_config_227cf1ddacaf1282, []int{5}
return fileDescriptor_config_e31761c0263e38b8, []int{5}
}
func (m *GeoSiteList) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GeoSiteList.Unmarshal(m, b)
@ -364,7 +368,7 @@ func (m *RoutingRule) Reset() { *m = RoutingRule{} }
func (m *RoutingRule) String() string { return proto.CompactTextString(m) }
func (*RoutingRule) ProtoMessage() {}
func (*RoutingRule) Descriptor() ([]byte, []int) {
return fileDescriptor_config_227cf1ddacaf1282, []int{6}
return fileDescriptor_config_e31761c0263e38b8, []int{6}
}
func (m *RoutingRule) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RoutingRule.Unmarshal(m, b)
@ -459,7 +463,7 @@ func (m *Config) Reset() { *m = Config{} }
func (m *Config) String() string { return proto.CompactTextString(m) }
func (*Config) ProtoMessage() {}
func (*Config) Descriptor() ([]byte, []int) {
return fileDescriptor_config_227cf1ddacaf1282, []int{7}
return fileDescriptor_config_e31761c0263e38b8, []int{7}
}
func (m *Config) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Config.Unmarshal(m, b)
@ -507,50 +511,50 @@ func init() {
}
func init() {
proto.RegisterFile("v2ray.com/core/app/router/config.proto", fileDescriptor_config_227cf1ddacaf1282)
proto.RegisterFile("v2ray.com/core/app/router/config.proto", fileDescriptor_config_e31761c0263e38b8)
}
var fileDescriptor_config_227cf1ddacaf1282 = []byte{
// 651 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0x5d, 0x6f, 0xd3, 0x4a,
0x10, 0xbd, 0xce, 0x57, 0xeb, 0x71, 0x6e, 0xae, 0xb5, 0xba, 0xbd, 0xf2, 0x2d, 0x14, 0x82, 0x85,
0x20, 0x0f, 0xc8, 0x91, 0xc2, 0xc7, 0x13, 0xa8, 0x2a, 0x69, 0x55, 0x45, 0x82, 0x12, 0x6d, 0x5b,
0x1e, 0xe0, 0x21, 0xda, 0xda, 0x5b, 0x63, 0x61, 0xef, 0xae, 0xd6, 0xeb, 0xd2, 0xbc, 0xf1, 0x77,
0xe0, 0x57, 0xf1, 0x53, 0xd0, 0xee, 0x3a, 0xa5, 0x45, 0x35, 0x54, 0xbc, 0xcd, 0x8c, 0xcf, 0x99,
0x39, 0x3e, 0x9e, 0x31, 0x3c, 0x38, 0x9b, 0x48, 0xb2, 0x8c, 0x62, 0x5e, 0x8c, 0x63, 0x2e, 0xe9,
0x98, 0x08, 0x31, 0x96, 0xbc, 0x52, 0x54, 0x8e, 0x63, 0xce, 0x4e, 0xb3, 0x34, 0x12, 0x92, 0x2b,
0x8e, 0x36, 0x56, 0x38, 0x49, 0x23, 0x22, 0x44, 0x64, 0x31, 0x9b, 0xf7, 0x7f, 0xa2, 0xc7, 0xbc,
0x28, 0x38, 0x1b, 0x33, 0xaa, 0xc6, 0x82, 0x4b, 0x65, 0xc9, 0x9b, 0x0f, 0x9b, 0x51, 0x8c, 0xaa,
0x4f, 0x5c, 0x7e, 0xb4, 0xc0, 0xf0, 0xb3, 0x03, 0xbd, 0x5d, 0x5e, 0x90, 0x8c, 0xa1, 0x67, 0xd0,
0x51, 0x4b, 0x41, 0x03, 0x67, 0xe8, 0x8c, 0x06, 0x93, 0x30, 0xba, 0x76, 0x7e, 0x64, 0xc1, 0xd1,
0xd1, 0x52, 0x50, 0x6c, 0xf0, 0xe8, 0x5f, 0xe8, 0x9e, 0x91, 0xbc, 0xa2, 0x41, 0x6b, 0xe8, 0x8c,
0x5c, 0x6c, 0x93, 0x70, 0x04, 0x1d, 0x8d, 0x41, 0x2e, 0x74, 0xe7, 0x39, 0xc9, 0x98, 0xff, 0x97,
0x0e, 0x31, 0x4d, 0xe9, 0xb9, 0xef, 0x20, 0x58, 0x4d, 0xf5, 0x5b, 0x61, 0x04, 0x9d, 0xe9, 0x6c,
0x17, 0xa3, 0x01, 0xb4, 0x32, 0x61, 0xa6, 0xf7, 0x71, 0x2b, 0x13, 0xe8, 0x3f, 0xe8, 0x09, 0x49,
0x4f, 0xb3, 0x73, 0xd3, 0xf8, 0x6f, 0x5c, 0x67, 0xe1, 0x7b, 0xe8, 0xee, 0x53, 0x3e, 0x9b, 0xa3,
0x7b, 0xd0, 0x8f, 0x79, 0xc5, 0x94, 0x5c, 0x2e, 0x62, 0x9e, 0x58, 0xe1, 0x2e, 0xf6, 0xea, 0xda,
0x94, 0x27, 0x14, 0x8d, 0xa1, 0x13, 0x67, 0x89, 0x0c, 0x5a, 0xc3, 0xf6, 0xc8, 0x9b, 0xdc, 0x6a,
0x78, 0x27, 0x3d, 0x1e, 0x1b, 0x60, 0xb8, 0x0d, 0xae, 0x69, 0xfe, 0x2a, 0x2b, 0x15, 0x9a, 0x40,
0x97, 0xea, 0x56, 0x81, 0x63, 0xe8, 0xb7, 0x1b, 0xe8, 0x86, 0x80, 0x2d, 0x34, 0x8c, 0x61, 0x6d,
0x9f, 0xf2, 0xc3, 0x4c, 0xd1, 0x9b, 0xe8, 0x7b, 0x0a, 0xbd, 0xc4, 0xf8, 0x50, 0x2b, 0xdc, 0xfa,
0xa5, 0xeb, 0xb8, 0x06, 0x87, 0x53, 0xf0, 0xea, 0x21, 0x46, 0xe7, 0x93, 0xab, 0x3a, 0xef, 0x34,
0xeb, 0xd4, 0x94, 0x95, 0xd2, 0x2f, 0x6d, 0xf0, 0x30, 0xaf, 0x54, 0xc6, 0x52, 0x5c, 0xe5, 0x14,
0xf9, 0xd0, 0x56, 0x24, 0xad, 0x55, 0xea, 0xf0, 0x0f, 0xd5, 0x5d, 0x98, 0xde, 0xbe, 0xa1, 0xe9,
0x68, 0x1b, 0x40, 0xef, 0xee, 0x42, 0x12, 0x96, 0xd2, 0xa0, 0x33, 0x74, 0x46, 0xde, 0x64, 0x78,
0x99, 0x66, 0xd7, 0x37, 0x62, 0x54, 0x45, 0x73, 0x2e, 0x15, 0xd6, 0x38, 0xec, 0x8a, 0x55, 0x88,
0xf6, 0xa0, 0x5f, 0xaf, 0xf5, 0x22, 0xcf, 0x4a, 0x15, 0x74, 0x4d, 0x8b, 0xb0, 0xa1, 0xc5, 0x81,
0x85, 0x6a, 0xeb, 0xb0, 0xc7, 0x7e, 0x24, 0xe8, 0x39, 0x78, 0x25, 0xaf, 0x64, 0x4c, 0x17, 0x46,
0x7f, 0xef, 0xf7, 0xfa, 0xc1, 0xe2, 0xa7, 0xfa, 0x2d, 0xb6, 0x00, 0xaa, 0x92, 0xca, 0x05, 0x2d,
0x48, 0x96, 0x07, 0x6b, 0xc3, 0xf6, 0xc8, 0xc5, 0xae, 0xae, 0xec, 0xe9, 0x02, 0xba, 0x0b, 0x5e,
0xc6, 0x4e, 0x78, 0xc5, 0x92, 0x85, 0xb6, 0x79, 0xdd, 0x3c, 0x87, 0xba, 0x74, 0x44, 0x52, 0xb4,
0x09, 0xeb, 0xe6, 0x26, 0x63, 0x9e, 0x07, 0xae, 0x79, 0x7a, 0x91, 0x87, 0xdf, 0x1c, 0xe8, 0x4d,
0xcd, 0xdf, 0x01, 0x1d, 0xc3, 0x3f, 0xd6, 0xe7, 0x45, 0xa9, 0x24, 0x51, 0x34, 0x5d, 0xd6, 0x17,
0xfb, 0xa8, 0x49, 0xa8, 0xfd, 0xab, 0xd8, 0x8f, 0x74, 0x58, 0x73, 0xf0, 0x20, 0xb9, 0x92, 0xeb,
0xeb, 0x97, 0x55, 0x4e, 0xeb, 0x2f, 0xdd, 0x74, 0xfd, 0x97, 0xf6, 0x05, 0x1b, 0x7c, 0xb8, 0x0f,
0x83, 0xab, 0x9d, 0xd1, 0x3a, 0x74, 0x76, 0xca, 0x59, 0x69, 0x0f, 0xfe, 0xb8, 0xa4, 0x33, 0xe1,
0x3b, 0xc8, 0x87, 0xfe, 0x4c, 0xcc, 0x4e, 0x0f, 0x38, 0x7b, 0x4d, 0x54, 0xfc, 0xc1, 0x6f, 0xa1,
0x01, 0xc0, 0x4c, 0xbc, 0x61, 0xbb, 0xb4, 0x20, 0x2c, 0xf1, 0xdb, 0x2f, 0x5f, 0xc0, 0xff, 0x31,
0x2f, 0xae, 0x9f, 0x3b, 0x77, 0xde, 0xf5, 0x6c, 0xf4, 0xb5, 0xb5, 0xf1, 0x76, 0x82, 0xc9, 0x32,
0x9a, 0x6a, 0xc4, 0x8e, 0x10, 0x46, 0x12, 0x95, 0x27, 0x3d, 0xe3, 0xd5, 0xe3, 0xef, 0x01, 0x00,
0x00, 0xff, 0xff, 0xa5, 0x5f, 0xde, 0x29, 0x5f, 0x05, 0x00, 0x00,
var fileDescriptor_config_e31761c0263e38b8 = []byte{
// 656 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0xdd, 0x6e, 0xd3, 0x30,
0x14, 0x26, 0xfd, 0xdb, 0x72, 0x52, 0x4a, 0x64, 0x31, 0x14, 0x06, 0x83, 0x12, 0x21, 0xe8, 0x05,
0x4a, 0xa5, 0xf2, 0x73, 0x05, 0x9a, 0x46, 0x37, 0xa6, 0x4a, 0x30, 0x2a, 0x6f, 0xe3, 0x02, 0x2e,
0x2a, 0x2f, 0xf5, 0x42, 0x44, 0x62, 0x5b, 0x8e, 0x33, 0xd6, 0x57, 0xe0, 0x4d, 0xe0, 0xa9, 0x78,
0x14, 0x64, 0x3b, 0x1d, 0x1b, 0x5a, 0x60, 0xe2, 0xce, 0xc7, 0xf9, 0xbe, 0x73, 0x3e, 0x7f, 0x39,
0xe7, 0xc0, 0xa3, 0x93, 0x91, 0x24, 0x8b, 0x28, 0xe6, 0xf9, 0x30, 0xe6, 0x92, 0x0e, 0x89, 0x10,
0x43, 0xc9, 0x4b, 0x45, 0xe5, 0x30, 0xe6, 0xec, 0x38, 0x4d, 0x22, 0x21, 0xb9, 0xe2, 0x68, 0x6d,
0x89, 0x93, 0x34, 0x22, 0x42, 0x44, 0x16, 0xb3, 0xfe, 0xf0, 0x0f, 0x7a, 0xcc, 0xf3, 0x9c, 0xb3,
0x21, 0xa3, 0x6a, 0x28, 0xb8, 0x54, 0x96, 0xbc, 0xfe, 0xb8, 0x1e, 0xc5, 0xa8, 0xfa, 0xca, 0xe5,
0x17, 0x0b, 0x0c, 0xbf, 0x39, 0xd0, 0xd9, 0xe6, 0x39, 0x49, 0x19, 0x7a, 0x01, 0x2d, 0xb5, 0x10,
0x34, 0x70, 0xfa, 0xce, 0xa0, 0x37, 0x0a, 0xa3, 0x4b, 0xeb, 0x47, 0x16, 0x1c, 0x1d, 0x2c, 0x04,
0xc5, 0x06, 0x8f, 0x6e, 0x42, 0xfb, 0x84, 0x64, 0x25, 0x0d, 0x1a, 0x7d, 0x67, 0xe0, 0x62, 0x1b,
0x84, 0x23, 0x68, 0x69, 0x0c, 0x72, 0xa1, 0x3d, 0xcd, 0x48, 0xca, 0xfc, 0x6b, 0xfa, 0x88, 0x69,
0x42, 0x4f, 0x7d, 0x07, 0xc1, 0xb2, 0xaa, 0xdf, 0x40, 0xab, 0xd0, 0x7a, 0x53, 0x66, 0x99, 0xdf,
0x0c, 0x23, 0x68, 0x8d, 0x27, 0xdb, 0x18, 0xf5, 0xa0, 0x91, 0x0a, 0xa3, 0xa3, 0x8b, 0x1b, 0xa9,
0x40, 0xb7, 0xa0, 0x23, 0x24, 0x3d, 0x4e, 0x4f, 0x4d, 0x89, 0xeb, 0xb8, 0x8a, 0xc2, 0x4f, 0xd0,
0xde, 0xa5, 0x7c, 0x32, 0x45, 0x0f, 0xa0, 0x1b, 0xf3, 0x92, 0x29, 0xb9, 0x98, 0xc5, 0x7c, 0x6e,
0x9f, 0xe0, 0x62, 0xaf, 0xba, 0x1b, 0xf3, 0x39, 0x45, 0x43, 0x68, 0xc5, 0xe9, 0x5c, 0x06, 0x8d,
0x7e, 0x73, 0xe0, 0x8d, 0xee, 0xd4, 0xbc, 0x4e, 0x97, 0xc7, 0x06, 0x18, 0x6e, 0x82, 0x6b, 0x92,
0xbf, 0x4d, 0x0b, 0x85, 0x46, 0xd0, 0xa6, 0x3a, 0x55, 0xe0, 0x18, 0xfa, 0xdd, 0x1a, 0xba, 0x21,
0x60, 0x0b, 0x0d, 0x63, 0x58, 0xd9, 0xa5, 0x7c, 0x3f, 0x55, 0xf4, 0x2a, 0xfa, 0x9e, 0x43, 0x67,
0x6e, 0x1c, 0xa9, 0x14, 0x6e, 0xfc, 0xd5, 0x7f, 0x5c, 0x81, 0xc3, 0x31, 0x78, 0x55, 0x11, 0xa3,
0xf3, 0xd9, 0x45, 0x9d, 0xf7, 0xea, 0x75, 0x6a, 0xca, 0x52, 0xe9, 0xf7, 0x26, 0x78, 0x98, 0x97,
0x2a, 0x65, 0x09, 0x2e, 0x33, 0x8a, 0x7c, 0x68, 0x2a, 0x92, 0x54, 0x2a, 0xf5, 0xf1, 0x3f, 0xd5,
0x9d, 0x99, 0xde, 0xbc, 0xa2, 0xe9, 0x68, 0x13, 0x40, 0x77, 0xf1, 0x4c, 0x12, 0x96, 0xd0, 0xa0,
0xd5, 0x77, 0x06, 0xde, 0xa8, 0x7f, 0x9e, 0x66, 0x1b, 0x39, 0x62, 0x54, 0x45, 0x53, 0x2e, 0x15,
0xd6, 0x38, 0xec, 0x8a, 0xe5, 0x11, 0xed, 0x40, 0xb7, 0x6a, 0xf0, 0x59, 0x96, 0x16, 0x2a, 0x68,
0x9b, 0x14, 0x61, 0x4d, 0x8a, 0x3d, 0x0b, 0xd5, 0xd6, 0x61, 0x8f, 0xfd, 0x0e, 0xd0, 0x4b, 0xf0,
0x0a, 0x5e, 0xca, 0x98, 0xce, 0x8c, 0xfe, 0xce, 0xbf, 0xf5, 0x83, 0xc5, 0x8f, 0xf5, 0x2b, 0x36,
0x00, 0xca, 0x82, 0xca, 0x19, 0xcd, 0x49, 0x9a, 0x05, 0x2b, 0xfd, 0xe6, 0xc0, 0xc5, 0xae, 0xbe,
0xd9, 0xd1, 0x17, 0xe8, 0x3e, 0x78, 0x29, 0x3b, 0xe2, 0x25, 0x9b, 0xcf, 0xb4, 0xcd, 0xab, 0xe6,
0x3b, 0x54, 0x57, 0x07, 0x24, 0x41, 0xeb, 0xb0, 0x6a, 0xa6, 0x33, 0xe6, 0x59, 0xe0, 0x9a, 0xaf,
0x67, 0x71, 0xf8, 0xd3, 0x81, 0xce, 0xd8, 0xec, 0x09, 0x74, 0x08, 0x37, 0xac, 0xcf, 0xb3, 0x42,
0x49, 0xa2, 0x68, 0xb2, 0xa8, 0x66, 0xf7, 0x49, 0x9d, 0x50, 0xbb, 0x5f, 0xec, 0x4f, 0xda, 0xaf,
0x38, 0xb8, 0x37, 0xbf, 0x10, 0xeb, 0x3d, 0x20, 0xcb, 0x8c, 0x56, 0x7f, 0xba, 0x6e, 0x0f, 0x9c,
0xeb, 0x17, 0x6c, 0xf0, 0xe1, 0x2e, 0xf4, 0x2e, 0x66, 0xd6, 0x93, 0xbd, 0x55, 0x4c, 0x0a, 0x3b,
0xfa, 0x87, 0x05, 0x9d, 0x08, 0xdf, 0x41, 0x3e, 0x74, 0x27, 0x62, 0x72, 0xbc, 0xc7, 0xd9, 0x3b,
0xa2, 0xe2, 0xcf, 0x7e, 0x03, 0xf5, 0x00, 0x26, 0xe2, 0x3d, 0xdb, 0xa6, 0x39, 0x61, 0x73, 0xbf,
0xf9, 0xfa, 0x15, 0xdc, 0x8e, 0x79, 0x7e, 0x79, 0xdd, 0xa9, 0xf3, 0xb1, 0x63, 0x4f, 0x3f, 0x1a,
0x6b, 0x1f, 0x46, 0x98, 0x2c, 0xa2, 0xb1, 0x46, 0x6c, 0x09, 0x61, 0x24, 0x51, 0x79, 0xd4, 0x31,
0x5e, 0x3d, 0xfd, 0x15, 0x00, 0x00, 0xff, 0xff, 0xbd, 0x7c, 0x4c, 0x99, 0x69, 0x05, 0x00, 0x00,
}

View File

@ -17,8 +17,10 @@ message Domain {
Plain = 0;
// The value is used as a regular expression.
Regex = 1;
// The value is a domain.
// The value is a root domain.
Domain = 2;
// The value is a domain.
Full = 3;
}
// Domain matching type.