Module: ngircd.git Branch: master Commit: 84a599ece472c4f2ef6d2f553addf898e0ed73f9 URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=84a59...
Author: Alexander Barton alex@barton.de Date: Sun Feb 3 21:32:53 2013 +0100
Enable WHOIS to display information about IRC Services
This patch introduces the new numeric 310(RPL_WHOISSERVICE) and enables WHOIS to display information about IRC services. This numeric is used for this purpose by InspIRCd, for example -- but as usual, other numerics are in use, too, like 613 in UltimateIRCd ...
Please note that neither the Operator (+o) not the "bot status" (+B) of an IRC service id displayed in the output.
Change suggested by Federico G. Schwindt fgsch@lodoss.net, Thanks.
---
src/ngircd/irc-info.c | 13 ++++++++++--- src/ngircd/messages.h | 1 + 2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/src/ngircd/irc-info.c b/src/ngircd/irc-info.c index aaa607d..e9c1ff5 100644 --- a/src/ngircd/irc-info.c +++ b/src/ngircd/irc-info.c @@ -1133,14 +1133,20 @@ IRC_WHOIS_SendReply(CLIENT *Client, CLIENT *from, CLIENT *c) return DISCONNECTED; }
+ /* Service? */ + if (Client_Type(c) == CLIENT_SERVICE && + !IRC_WriteStrClient(from, RPL_WHOISSERVICE_MSG, + Client_ID(from), Client_ID(c))) + return DISCONNECTED; + /* IRC-Operator? */ - if (Client_HasMode(c, 'o') && + if (Client_HasMode(c, 'o') && Client_Type(c) != CLIENT_SERVICE && !IRC_WriteStrClient(from, RPL_WHOISOPERATOR_MSG, Client_ID(from), Client_ID(c))) return DISCONNECTED;
/* IRC-Bot? */ - if (Client_HasMode(c, 'B') && + if (Client_HasMode(c, 'B') && Client_Type(c) != CLIENT_SERVICE && !IRC_WriteStrClient(from, RPL_WHOISBOT_MSG, Client_ID(from), Client_ID(c))) return DISCONNECTED; @@ -1262,7 +1268,8 @@ IRC_WHOIS( CLIENT *Client, REQUEST *Req ) */ if (!has_wildcards || is_remote) { c = Client_Search(query); - if (c && Client_Type(c) == CLIENT_USER) { + if (c && (Client_Type(c) == CLIENT_USER + || Client_Type(c) == CLIENT_SERVICE)) { if (!IRC_WHOIS_SendReply(Client, from, c)) return DISCONNECTED; } else { diff --git a/src/ngircd/messages.h b/src/ngircd/messages.h index a6a6d8c..371abc2 100644 --- a/src/ngircd/messages.h +++ b/src/ngircd/messages.h @@ -56,6 +56,7 @@ #define RPL_UNAWAY_MSG "305 %s :You are no longer marked as being away" #define RPL_NOWAWAY_MSG "306 %s :You have been marked as being away" #define RPL_WHOISREGNICK_MSG "307 %s %s :is a registered nick" +#define RPL_WHOISSERVICE_MSG "310 %s %s :is an IRC service" #define RPL_WHOISUSER_MSG "311 %s %s %s %s * :%s" #define RPL_WHOISSERVER_MSG "312 %s %s %s :%s" #define RPL_WHOISOPERATOR_MSG "313 %s %s :is an IRC operator"
ngircd-commits@lists.barton.de