dns.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package uri
  2. // UsesDNSHostValidation returns true if the provided scheme has host validation
  3. // that does not follow RFC3986 (which is quite generic), and assumes a valid
  4. // DNS hostname instead.
  5. //
  6. // This function is declared as a global variable that may be overridden at the package level,
  7. // in case you need specific schemes to validate the host as a DNS name.
  8. //
  9. // See: https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml
  10. var UsesDNSHostValidation = func(scheme string) bool {
  11. switch scheme {
  12. case "dns":
  13. return true
  14. case "dntp":
  15. return true
  16. case "finger":
  17. return true
  18. case "ftp":
  19. return true
  20. case "git":
  21. return true
  22. case "http":
  23. return true
  24. case "https":
  25. return true
  26. case "imap":
  27. return true
  28. case "irc":
  29. return true
  30. case "jms":
  31. return true
  32. case "mailto":
  33. return true
  34. case "nfs":
  35. return true
  36. case "nntp":
  37. return true
  38. case "ntp":
  39. return true
  40. case "postgres":
  41. return true
  42. case "redis":
  43. return true
  44. case "rmi":
  45. return true
  46. case "rtsp":
  47. return true
  48. case "rsync":
  49. return true
  50. case "sftp":
  51. return true
  52. case "skype":
  53. return true
  54. case "smtp":
  55. return true
  56. case "snmp":
  57. return true
  58. case "soap":
  59. return true
  60. case "ssh":
  61. return true
  62. case "steam":
  63. return true
  64. case "svn":
  65. return true
  66. case "tcp":
  67. return true
  68. case "telnet":
  69. return true
  70. case "udp":
  71. return true
  72. case "vnc":
  73. return true
  74. case "wais":
  75. return true
  76. case "ws":
  77. return true
  78. case "wss":
  79. return true
  80. }
  81. return false
  82. }