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.
|