85 lines
1.5 KiB
Go
85 lines
1.5 KiB
Go
package uri
|
|
|
|
// UsesDNSHostValidation returns true if the provided scheme has host validation
|
|
// that does not follow RFC3986 (which is quite generic), and assumes a valid
|
|
// DNS hostname instead.
|
|
//
|
|
// This function is declared as a global variable that may be overridden at the package level,
|
|
// in case you need specific schemes to validate the host as a DNS name.
|
|
//
|
|
// See: https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml
|
|
var UsesDNSHostValidation = func(scheme string) bool {
|
|
switch scheme {
|
|
case "dns":
|
|
return true
|
|
case "dntp":
|
|
return true
|
|
case "finger":
|
|
return true
|
|
case "ftp":
|
|
return true
|
|
case "git":
|
|
return true
|
|
case "http":
|
|
return true
|
|
case "https":
|
|
return true
|
|
case "imap":
|
|
return true
|
|
case "irc":
|
|
return true
|
|
case "jms":
|
|
return true
|
|
case "mailto":
|
|
return true
|
|
case "nfs":
|
|
return true
|
|
case "nntp":
|
|
return true
|
|
case "ntp":
|
|
return true
|
|
case "postgres":
|
|
return true
|
|
case "redis":
|
|
return true
|
|
case "rmi":
|
|
return true
|
|
case "rtsp":
|
|
return true
|
|
case "rsync":
|
|
return true
|
|
case "sftp":
|
|
return true
|
|
case "skype":
|
|
return true
|
|
case "smtp":
|
|
return true
|
|
case "snmp":
|
|
return true
|
|
case "soap":
|
|
return true
|
|
case "ssh":
|
|
return true
|
|
case "steam":
|
|
return true
|
|
case "svn":
|
|
return true
|
|
case "tcp":
|
|
return true
|
|
case "telnet":
|
|
return true
|
|
case "udp":
|
|
return true
|
|
case "vnc":
|
|
return true
|
|
case "wais":
|
|
return true
|
|
case "ws":
|
|
return true
|
|
case "wss":
|
|
return true
|
|
}
|
|
|
|
return false
|
|
}
|