]> Cypherpunks.ru repositories - goircd.git/blobdiff - client.go
Perform DNS lookup of client addresses
[goircd.git] / client.go
index a43cc1efc1eb781a1de8b7f07667857402550480..fbaf8a326e8d6e3137f50e9ed2ee202013846497 100644 (file)
--- a/client.go
+++ b/client.go
@@ -51,8 +51,19 @@ type Client struct {
        sync.Mutex
 }
 
+func (c Client) Host() string {
+       addr := c.conn.RemoteAddr().String()
+       if host, _, err := net.SplitHostPort(addr); err == nil {
+               addr = host
+       }
+       if domains, err := net.LookupAddr(addr); err == nil {
+               addr = strings.TrimSuffix(domains[0], ".")
+       }
+       return addr
+}
+
 func (c Client) String() string {
-       return *c.nickname + "!" + *c.username + "@" + c.conn.RemoteAddr().String()
+       return *c.nickname + "!" + *c.username + "@" + c.Host()
 }
 
 func NewClient(conn net.Conn) *Client {