48 lines
932 B
Go
48 lines
932 B
Go
package hostname
|
|
|
|
import (
|
|
"io"
|
|
"net"
|
|
)
|
|
|
|
// GetWhois performs a raw whois query for a given domain.
|
|
// Note: This does not recursively find the right server; it uses a known one.
|
|
func GetWhois(domain, server string) (string, error) {
|
|
// Connect to the whois server on port 43
|
|
conn, err := net.Dial("tcp", net.JoinHostPort(server, "43"))
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
defer conn.Close()
|
|
|
|
// Send the domain query
|
|
_, err = conn.Write([]byte(domain + "\r\n"))
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
// Read the entire response
|
|
result, err := io.ReadAll(conn)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
return string(result), nil
|
|
}
|
|
|
|
/*
|
|
func main() {
|
|
// We have to know the server for .com domains
|
|
const whoisServer = "whois.verisign-grs.com"
|
|
domain :="google.com"
|
|
|
|
whoisData, err := GetWhois(domain, whoisServer)
|
|
if err != nil {
|
|
log.Fatal"Error getting whois info: %v", err)
|
|
}
|
|
|
|
fmt.Println(whoisData)
|
|
}
|
|
|
|
*/
|