3
0
mirror of https://github.com/ergochat/ergo.git synced 2024-11-28 23:19:30 +01:00

USERHOST command

This commit is contained in:
vegax87 2017-01-23 17:44:35 +01:00
parent 9e65d9b87e
commit f3c9c2b4b5
4 changed files with 29 additions and 0 deletions

View File

@ -12,6 +12,7 @@ New release of Oragono!
### Security ### Security
### Added ### Added
* Added `USERHOST` command (thanks @vegax87).
### Changed ### Changed

View File

@ -238,6 +238,10 @@ var Commands = map[string]Command{
usablePreReg: true, usablePreReg: true,
minParams: 4, minParams: 4,
}, },
"USERHOST": {
handler: userhostHandler,
minParams: 1,
},
"VERSION": { "VERSION": {
handler: versionHandler, handler: versionHandler,
minParams: 0, minParams: 0,

View File

@ -370,6 +370,12 @@ For example:
Used in connection registration, sets your username and realname to the given Used in connection registration, sets your username and realname to the given
values (though your username may also be looked up with Ident).`, values (though your username may also be looked up with Ident).`,
}, },
"userhost": {
text: `Show the nick, user and host of a user. Normally only used by the client or in scripts.
Note: if you are not an IRCOp then it will show a cloaked hostname if the user is +x (and it's not yourself). `,
},
"version": { "version": {
text: `VERSION [server] text: `VERSION [server]

View File

@ -1848,3 +1848,21 @@ func lusersHandler(server *Server, client *Client, msg ircmsg.IrcMessage) bool {
client.Send(nil, server.name, RPL_LUSERME, client.nick, fmt.Sprintf("I have %d clients and %d servers", totalcount, 1)) client.Send(nil, server.name, RPL_LUSERME, client.nick, fmt.Sprintf("I have %d clients and %d servers", totalcount, 1))
return false return false
} }
func userhostHandler(server *Server, client *Client, msg ircmsg.IrcMessage) bool {
nickname := msg.Params[0]
casefoldedNickname, err := CasefoldName(nickname)
target := server.clients.Get(casefoldedNickname)
if err != nil || target == nil {
client.Send(nil, client.server.name, ERR_NOSUCHNICK, nickname, "No such nick")
return false
}
if target.flags[Away] {
client.Send(nil, client.server.name, RPL_USERHOST, client.nick, fmt.Sprintf(strings.TrimSpace("%s =- %s @ %s"), target.nick, target.username, target.hostname))
} else {
client.Send(nil, client.server.name, RPL_USERHOST, client.nick, fmt.Sprintf(strings.TrimSpace("%s =+ %s @ %s"), target.nick, target.username, target.hostname))
}
return false
}