MCPcopy Create free account
hub / github.com/V2RaySSR/RealityChecker / isValidDomain

Function isValidDomain

internal/cmd/check.go:49–85  ·  view source on GitHub ↗

isValidDomain 验证域名格式是否有效

(domain string)

Source from the content-addressed store, hash-verified

47
48// isValidDomain 验证域名格式是否有效
49func isValidDomain(domain string) bool {
50 // 基本长度检查
51 if len(domain) == 0 || len(domain) > 253 {
52 return false
53 }
54
55 // 检查是否包含非法字符
56 if strings.ContainsAny(domain, " \t\n\r") {
57 return false
58 }
59
60 // 检查是否以点开头或结尾
61 if strings.HasPrefix(domain, ".") || strings.HasSuffix(domain, ".") {
62 return false
63 }
64
65 // 检查是否包含连续的点
66 if strings.Contains(domain, "..") {
67 return false
68 }
69
70 // 使用正则表达式验证域名格式
71 domainRegex := regexp.MustCompile(`^[a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?)*$`)
72 if !domainRegex.MatchString(domain) {
73 return false
74 }
75
76 // 尝试解析域名(不进行实际DNS查询)
77 _, err := net.LookupHost(domain)
78 if err != nil {
79 // 即使DNS解析失败,只要格式正确就认为是有效的
80 // 因为可能是网络问题或域名确实不存在
81 return true
82 }
83
84 return true
85}

Callers 2

executeCheckMethod · 0.85
parseDomainsFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected