45 lines
1019 B
Go
45 lines
1019 B
Go
package utils
|
|
|
|
import (
|
|
"github.com/mvdan/xurls"
|
|
"regexp"
|
|
"strings"
|
|
)
|
|
|
|
func ExtractDomains(content string) []string {
|
|
domains := xurls.Strict.FindAllString(content, -1)
|
|
cssurlregex := regexp.MustCompile(`(?i)url\((.*?)\)`)
|
|
cssDomains := cssurlregex.FindAllString(content, -1)
|
|
for _, cssDomain := range cssDomains {
|
|
if strings.HasPrefix(strings.ToLower(cssDomain), "url(") {
|
|
cssDomain = cssDomain[4 : len(cssDomain)-1]
|
|
}
|
|
if !strings.HasSuffix(cssDomain, ":before") && !strings.HasSuffix(cssDomain, ":after") {
|
|
domains = append(domains, cssDomain)
|
|
}
|
|
}
|
|
return domains
|
|
}
|
|
|
|
func WithoutSubdomains(urlhost string) string {
|
|
urlParts := strings.Split(urlhost, ".")
|
|
if len(urlParts) < 2 {
|
|
return ""
|
|
} else {
|
|
return strings.Join(urlParts[len(urlParts)-2:], ".")
|
|
}
|
|
}
|
|
|
|
func WithoutProtocol(url string) string {
|
|
if strings.HasPrefix(url, "http://") {
|
|
return url[7:]
|
|
}
|
|
if strings.HasPrefix(url, "https://") {
|
|
return url[8:]
|
|
}
|
|
if strings.HasPrefix(url, "//") {
|
|
return url[2:]
|
|
}
|
|
return url
|
|
}
|