@@ -0,0 +1,47 @@
|
||||
package ysurl
|
||||
|
||||
import (
|
||||
"net/url"
|
||||
"regexp"
|
||||
)
|
||||
|
||||
// 广告跳转类型
|
||||
type URLJumpType int
|
||||
|
||||
const (
|
||||
ExBrowserJump URLJumpType = iota //外部浏览器跳转
|
||||
InBrowserJump //内部浏览器跳转
|
||||
AppJump //APP内部跳转
|
||||
)
|
||||
|
||||
const (
|
||||
Http = "http" //外部http跳转
|
||||
Https = "https" //外部https跳转
|
||||
Yinselink = "yinselink" //内部http跳转
|
||||
Yinselinks = "yinselinks" //内部https跳转
|
||||
Yinseinner = "yinseinner" //应用内⻚面跳转
|
||||
)
|
||||
|
||||
func IsValidURL(jumpType URLJumpType, rawurl string) bool {
|
||||
url, err := url.Parse(rawurl)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
switch jumpType {
|
||||
case ExBrowserJump:
|
||||
return url.Scheme == Http || url.Scheme == Https
|
||||
case InBrowserJump:
|
||||
return url.Scheme == Yinselink || url.Scheme == Yinselinks
|
||||
case AppJump:
|
||||
return url.Scheme == Yinseinner
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func IsValidHostName(hostName string) bool {
|
||||
re, err := regexp.Compile(`^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$`)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
return re.MatchString(hostName)
|
||||
}
|
||||
Reference in New Issue
Block a user