mirror of
https://github.com/TeaOSLab/EdgeCommon.git
synced 2025-12-02 20:00:25 +08:00
域名匹配增加通配符端口
This commit is contained in:
@@ -50,8 +50,8 @@ func MatchDomain(pattern string, domain string) (isMatched bool) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 其他匹配
|
// 其他匹配
|
||||||
patternPieces := strings.Split(pattern, ".")
|
var patternPieces = strings.Split(pattern, ".")
|
||||||
domainPieces := strings.Split(domain, ".")
|
var domainPieces = strings.Split(domain, ".")
|
||||||
if len(patternPieces) != len(domainPieces) {
|
if len(patternPieces) != len(domainPieces) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -60,6 +60,15 @@ func MatchDomain(pattern string, domain string) (isMatched bool) {
|
|||||||
if patternPiece == "" || patternPiece == "*" || patternPiece == domainPieces[index] {
|
if patternPiece == "" || patternPiece == "*" || patternPiece == domainPieces[index] {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
if strings.HasSuffix(patternPiece, ":*") {
|
||||||
|
var portIndex = strings.LastIndex(patternPiece, ":*")
|
||||||
|
if portIndex >= 0 {
|
||||||
|
var prefix = patternPiece[:portIndex]
|
||||||
|
if strings.HasPrefix(domainPieces[index], prefix+":") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
isMatched = false
|
isMatched = false
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,86 +6,102 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestMatchDomain(t *testing.T) {
|
func TestMatchDomain(t *testing.T) {
|
||||||
a := assert.NewAssertion(t)
|
var a = assert.NewAssertion(t)
|
||||||
{
|
{
|
||||||
ok := MatchDomains([]string{}, "example.com")
|
var ok = MatchDomains([]string{}, "example.com")
|
||||||
a.IsFalse(ok)
|
a.IsFalse(ok)
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
ok := MatchDomains([]string{"example.com"}, "example.com")
|
var ok = MatchDomains([]string{"example.com"}, "example.com")
|
||||||
a.IsTrue(ok)
|
a.IsTrue(ok)
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
ok := MatchDomains([]string{"www.example.com"}, "example.com")
|
var ok = MatchDomains([]string{"www.example.com"}, "example.com")
|
||||||
a.IsFalse(ok)
|
a.IsFalse(ok)
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
ok := MatchDomains([]string{".example.com"}, "www.example.com")
|
var ok = MatchDomains([]string{".example.com"}, "www.example.com")
|
||||||
a.IsTrue(ok)
|
a.IsTrue(ok)
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
ok := MatchDomains([]string{".example.com"}, "a.www.example.com")
|
var ok = MatchDomains([]string{".example.com"}, "a.www.example.com")
|
||||||
a.IsTrue(ok)
|
a.IsTrue(ok)
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
ok := MatchDomains([]string{".example.com"}, "a.www.example123.com")
|
var ok = MatchDomains([]string{".example.com"}, "a.www.example123.com")
|
||||||
a.IsFalse(ok)
|
a.IsFalse(ok)
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
ok := MatchDomains([]string{"*.example.com"}, "www.example.com")
|
var ok = MatchDomains([]string{"*.example.com"}, "www.example.com")
|
||||||
a.IsTrue(ok)
|
a.IsTrue(ok)
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
ok := MatchDomains([]string{"*.*.com"}, "www.example.com")
|
var ok = MatchDomains([]string{"*.*.com"}, "www.example.com")
|
||||||
a.IsTrue(ok)
|
a.IsTrue(ok)
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
ok := MatchDomains([]string{"www.*.com"}, "www.example.com")
|
var ok = MatchDomains([]string{"www.*.com"}, "www.example.com")
|
||||||
a.IsTrue(ok)
|
a.IsTrue(ok)
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
ok := MatchDomains([]string{"gallery.*.com"}, "www.example.com")
|
var ok = MatchDomains([]string{"gallery.*.com"}, "www.example.com")
|
||||||
a.IsFalse(ok)
|
a.IsFalse(ok)
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
ok := MatchDomains([]string{"~\\w+.example.com"}, "www.example.com")
|
var ok = MatchDomains([]string{"~\\w+.example.com"}, "www.example.com")
|
||||||
a.IsTrue(ok)
|
a.IsTrue(ok)
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
ok := MatchDomains([]string{"~\\w+.example.com"}, "a.www.example.com")
|
var ok = MatchDomains([]string{"~\\w+.example.com"}, "a.www.example.com")
|
||||||
a.IsTrue(ok)
|
a.IsTrue(ok)
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
ok := MatchDomains([]string{"~^\\d+.example.com$"}, "www.example.com")
|
var ok = MatchDomains([]string{"~^\\d+.example.com$"}, "www.example.com")
|
||||||
a.IsFalse(ok)
|
a.IsFalse(ok)
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
ok := MatchDomains([]string{"~^\\d+.example.com$"}, "123.example.com")
|
var ok = MatchDomains([]string{"~^\\d+.example.com$"}, "123.example.com")
|
||||||
a.IsTrue(ok)
|
a.IsTrue(ok)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
ok := MatchDomains([]string{"*"}, "example.com")
|
var ok = MatchDomains([]string{"*"}, "example.com")
|
||||||
a.IsTrue(ok)
|
a.IsTrue(ok)
|
||||||
}
|
}
|
||||||
|
|
||||||
// port
|
// port
|
||||||
{
|
{
|
||||||
ok := MatchDomains([]string{"example.com:8001"}, "example.com:8001")
|
var ok = MatchDomains([]string{"example.com:8001"}, "example.com:8001")
|
||||||
a.IsTrue(ok)
|
a.IsTrue(ok)
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
var ok = MatchDomains([]string{"example.com:8002"}, "example.com:8001")
|
||||||
|
a.IsFalse(ok)
|
||||||
|
}
|
||||||
|
{
|
||||||
|
var ok = MatchDomains([]string{"*.example.com:8001"}, "a.example.com:8001")
|
||||||
|
a.IsTrue(ok)
|
||||||
|
}
|
||||||
|
{
|
||||||
|
var ok = MatchDomains([]string{"*.example.com:*"}, "a.example.com:8001")
|
||||||
|
a.IsTrue(ok)
|
||||||
|
}
|
||||||
|
{
|
||||||
|
var ok = MatchDomains([]string{"*.example.com:8002"}, "a.example.com:8001")
|
||||||
|
a.IsFalse(ok)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestIsSpecialDomain(t *testing.T) {
|
func TestIsSpecialDomain(t *testing.T) {
|
||||||
|
|||||||
Reference in New Issue
Block a user