commit c2b39fdedef18b7cb634509bb3f1dd67bf47c214 from: DNS777 via: Alexander Barton date: Sun Aug 26 13:58:37 2012 UTC Implement an Unreal-like user mode "B" ("Bot mode") commit - 360a254be0e55e975998d0f3a5ff301ac3346f72 commit + c2b39fdedef18b7cb634509bb3f1dd67bf47c214 blob - cd0a1666ae58a7696c27f7c5aeac40fcfeea565b blob + 27eecf1d169f10a2aa124d7d2363e6bf54601aea --- src/ngircd/defines.h +++ src/ngircd/defines.h @@ -161,7 +161,7 @@ #endif /** Supported user modes. */ -#define USERMODES "acCiorRswx" +#define USERMODES "aBcCiorRswx" /** Supported channel modes. */ #define CHANMODES "beiIklmnoOPrRstvz" blob - 0ea85874862b7114b6cd355d59467371055a4013 blob + f5139d07ebed78c68953bc56b19ed04424b9c884 --- src/ngircd/irc-info.c +++ src/ngircd/irc-info.c @@ -1108,6 +1108,12 @@ IRC_WHOIS_SendReply(CLIENT *Client, CLIENT *from, CLIE /* IRC-Operator? */ if (Client_HasMode(c, 'o') && !IRC_WriteStrClient(from, RPL_WHOISOPERATOR_MSG, + 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; blob - fa35cdd0f29d7742d92c169f6ce992a56eaa1ca5 blob + 9cad32493d84b2ddb55520913b64e6628e0cfc7e --- src/ngircd/irc-mode.c +++ src/ngircd/irc-mode.c @@ -227,7 +227,15 @@ Client_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Ori } else ok = IRC_WriteStrClient(Origin, 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!) */ blob - 9ad6be1763d569f7af3b486e3620930f15127516 blob + 4858fea91af9589c7865715b6d15cfbf99e446d5 --- src/ngircd/messages.h +++ 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"