diff options
| -rw-r--r-- | doc/Modes.txt | 3 | ||||
| -rw-r--r-- | src/ngircd/defines.h | 2 | ||||
| -rw-r--r-- | src/ngircd/irc-info.c | 6 | ||||
| -rw-r--r-- | src/ngircd/irc-mode.c | 8 | ||||
| -rw-r--r-- | src/ngircd/messages.h | 1 |
5 files changed, 18 insertions, 2 deletions
diff --git a/doc/Modes.txt b/doc/Modes.txt index 2b700f0c..c2c533f2 100644 --- a/doc/Modes.txt +++ b/doc/Modes.txt @@ -2,7 +2,7 @@ ngIRCd - Next Generation IRC Server http://ngircd.barton.de/ - (c)2001-2011 Alexander Barton and Contributors. + (c)2001-2012 Alexander Barton and Contributors. ngIRCd is free software and published under the terms of the GNU General Public License. @@ -22,6 +22,7 @@ channels he is using at the moment. mode since description a 0.3.0 User is away. + B 20 User is flagged as a "bot". c 17 IRC operator wants to receive connect/disconnect NOTICEs. C 19 Only users that share a channel are allowed to send messages. i 0.0.1 User is "invisible". diff --git a/src/ngircd/defines.h b/src/ngircd/defines.h index 310e0699..82837599 100644 --- a/src/ngircd/defines.h +++ b/src/ngircd/defines.h @@ -161,7 +161,7 @@ #endif /** Supported user modes. */ -#define USERMODES "acCiorRswx" +#define USERMODES "aBcCiorRswx" /** Supported channel modes. */ #define CHANMODES "beiIklmMnoOPrRstvz" diff --git a/src/ngircd/irc-info.c b/src/ngircd/irc-info.c index 0ea85874..f5139d07 100644 --- a/src/ngircd/irc-info.c +++ b/src/ngircd/irc-info.c @@ -1111,6 +1111,12 @@ IRC_WHOIS_SendReply(CLIENT *Client, CLIENT *from, CLIENT *c) Client_ID(from), Client_ID(c))) return DISCONNECTED; + /* IRC-Bot? */ + if (Client_HasMode(c, 'B') && + !IRC_WriteStrClient(from, RPL_WHOISBOT_MSG, + Client_ID(from), Client_ID(c))) + return DISCONNECTED; + /* Connected using SSL? */ if (Conn_UsesSSL(Client_Conn(c)) && !IRC_WriteStrClient(from, RPL_WHOISSSL_MSG, Client_ID(from), diff --git a/src/ngircd/irc-mode.c b/src/ngircd/irc-mode.c index 8da4a65a..dc37ad00 100644 --- a/src/ngircd/irc-mode.c +++ b/src/ngircd/irc-mode.c @@ -229,6 +229,14 @@ Client_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CLIENT *Target ) ERR_NOPRIVILEGES_MSG, Client_ID(Origin)); break; + case 'B': /* Bot */ + if (Client_HasMode(Client, 'r')) + ok = IRC_WriteStrClient(Origin, + ERR_RESTRICTED_MSG, + Client_ID(Origin)); + else + x[0] = 'B'; + break; case 'c': /* Receive connect notices * (only settable by IRC operators!) */ if (!set || Client_Type(Client) == CLIENT_SERVER diff --git a/src/ngircd/messages.h b/src/ngircd/messages.h index da861f9a..2cfd45db 100644 --- a/src/ngircd/messages.h +++ b/src/ngircd/messages.h @@ -72,6 +72,7 @@ #define RPL_NOTOPIC_MSG "331 %s %s :No topic is set" #define RPL_TOPIC_MSG "332 %s %s :%s" #define RPL_TOPICSETBY_MSG "333 %s %s %s %u" +#define RPL_WHOISBOT_MSG "335 %s %s :is a IRC Bot" #define RPL_INVITING_MSG "341 %s %s %s%s" #define RPL_INVITELIST_MSG "346 %s %s %s" #define RPL_ENDOFINVITELIST_MSG "347 %s %s :End of channel invite list" |