[IRC-Dev CVS] SF.net SVN: irc-dev: [193] ircd/trunk/ircd/ddb_events.c
Brought to you by:
zolty
From: <zo...@us...> - 2008-07-13 11:03:38
|
Revision: 193 http://irc-dev.svn.sourceforge.net/irc-dev/?rev=193&view=rev Author: zolty Date: 2008-07-13 04:03:39 -0700 (Sun, 13 Jul 2008) Log Message: ----------- Eventos tabla o Modified Paths: -------------- ircd/trunk/ircd/ddb_events.c Modified: ircd/trunk/ircd/ddb_events.c =================================================================== --- ircd/trunk/ircd/ddb_events.c 2008-07-13 00:23:49 UTC (rev 192) +++ ircd/trunk/ircd/ddb_events.c 2008-07-13 11:03:39 UTC (rev 193) @@ -48,6 +48,7 @@ static void ddb_events_table_c(char *key, char *content, int update); static void ddb_events_table_d(char *key, char *content, int update); +static void ddb_events_table_o(char *key, char *content, int update); static void ddb_events_table_n(char *key, char *content, int update); static void ddb_events_table_v(char *key, char *content, int update); static void ddb_events_table_z(char *key, char *content, int update); @@ -70,6 +71,7 @@ ddb_events_table[DDB_CHANDB2] = ddb_events_table_d; ddb_events_table[DDB_ILINEDB] = 0; ddb_events_table[DDB_NICKDB] = ddb_events_table_n; + ddb_events_table[DDB_OPERDB] = ddb_events_table_o; ddb_events_table[DDB_VHOSTDB] = ddb_events_table_v; ddb_events_table[DDB_CONFIGDB] = ddb_events_table_z; @@ -280,6 +282,10 @@ oldflags = cli_flags(cptr); ClearNickRegistered(cptr); + ClearAdmin(cptr); + ClearCoder(cptr); + ClearHelpOper(cptr); + ClearBot(cptr); SetNickSuspended(cptr); sendcmdbotto_one(botname, CMD_NOTICE, cptr, @@ -350,6 +356,78 @@ } } +/** Handle events on Operators Table. + * @param[in] key Key of registry. + * @param[in] content Content of registry. + * @param[in] update Update of registry or no. + */ +static void +ddb_events_table_o(char *key, char *content, int update) +{ + struct Client *cptr; + if ((cptr = FindUser(key)) && MyConnect(cptr)) + { + /* Droping Key */ + if (!content && (IsAdmin(cptr) || IsCoder(cptr) || IsHelpOper(cptr) || IsBot(cptr))) + { + struct Flags oldflags; + + oldflags = cli_flags(cptr); + ClearAdmin(cptr); + ClearCoder(cptr); + ClearHelpOper(cptr); + ClearBot(cptr); + + send_umode_out(cptr, cptr, &oldflags, IsRegistered(cptr)); + } + else if (content) + { + /* New Key or Update Key */ + if (IsNickRegistered(cptr)) + { + struct Flags oldflags = cli_flags(cptr); + int update = 0; + + if ((*content == 'a') && !IsAdmin(cptr)) + { + SetAdmin(cptr); + ClearCoder(cptr); + ClearHelpOper(cptr); + ClearBot(cptr); + update = 1; + } + else if ((*content == 'c') && !IsCoder(cptr)) + { + ClearAdmin(cptr); + SetCoder(cptr); + ClearHelpOper(cptr); + ClearBot(cptr); + update = 1; + } + else if ((*content == 'B') && !IsBot(cptr)) + { + ClearAdmin(cptr); + ClearCoder(cptr); + ClearHelpOper(cptr); + SetBot(cptr); + update = 1; + } + else if (!IsHelpOper(cptr)) + { + ClearAdmin(cptr); + ClearCoder(cptr); + SetHelpOper(cptr); + ClearBot(cptr); + update = 1; + } + + if (update) + send_umode_out(cptr, cptr, &oldflags, IsRegistered(cptr)); + } + } + } +} + /** Handle events on Vhosts Table. * @param[in] key Key of registry. * @param[in] content Content of registry. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |