Skip to content

Commit

Permalink
fix: CName match #66
Browse files Browse the repository at this point in the history
Signed-off-by: zu1k <i@lgf.im>
  • Loading branch information
zu1k committed Dec 16, 2021
1 parent 4e22a5c commit 0198f6f
Showing 1 changed file with 25 additions and 17 deletions.
42 changes: 25 additions & 17 deletions pkg/cdn/cdn.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,27 +58,35 @@ func NewCDN(filePath string) *CDN {

func (db CDN) Find(query string, params ...string) (result fmt.Stringer, err error) {
baseCname := parseBaseCname(query)
if baseCname == "" {
return nil, errors.New("base domain parse failed")
}
cdnResult, found := db.Data[baseCname]
if found {
return cdnResult, nil
}
for _, domain := range baseCname {
if domain != "" {
cdnResult, found := db.Data[domain]
if found {
return cdnResult, nil
}
}

if strings.Contains(baseCname, "kunlun") {
return CDNResult{
Name: "阿里云 CDN",
}, nil
if strings.Contains(domain, "kunlun") {
return CDNResult{
Name: "阿里云 CDN",
}, nil
}
}

return nil, errors.New("not found")
}

func parseBaseCname(domain string) string {
hostParts := strings.Split(domain, ".")
if len(hostParts) < 2 {
return domain
func parseBaseCname(domain string) (result []string) {
parts := strings.Split(domain, ".")
size := len(parts)
if size == 0 {
return []string{}
}
domain = parts[size-1]
result = append(result, domain)
for i := len(parts) - 2; i >= 0; i-- {
domain = parts[i] + "." + domain
result = append(result, domain)
}
baseCname := hostParts[len(hostParts)-2] + "." + hostParts[len(hostParts)-1]
return baseCname
return result
}

0 comments on commit 0198f6f

Please sign in to comment.