diff --git a/README b/README index b6291ea..3793978 100644 --- a/README +++ b/README @@ -11,7 +11,7 @@ It does not aim to replace full featured mass scalable IRC networks: * It can not connect to other servers. Just standalone installation * It has few basic IRC commands * There is no support for channel operators, modes, votes, invites -* No ident lookups, reverse DNS queries +* No ident lookups But it has some convincing features: diff --git a/client.go b/client.go index 3d6d9c3..8438dab 100644 --- a/client.go +++ b/client.go @@ -52,8 +52,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 *proxyproto.Conn) *Client { diff --git a/room.go b/room.go index 2a5f22a..276397f 100644 --- a/room.go +++ b/room.go @@ -142,7 +142,7 @@ func (room *Room) Processor(events <-chan ClientEvent) { "352", *room.name, *m.username, - m.conn.RemoteAddr().String(), + m.Host(), *hostname, *m.nickname, "H",