Perform DNS lookup of client addresses

This commit is contained in:
Björn Busse 2015-10-18 22:07:57 +02:00 committed by User Mue
parent 398bedcca4
commit 0b56bd0ba4
3 changed files with 14 additions and 3 deletions

2
README
View File

@ -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:

View File

@ -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 {

View File

@ -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",