diff options
| author | Adam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864> | 2010-02-28 17:33:31 +0000 |
|---|---|---|
| committer | Adam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864> | 2010-02-28 17:33:31 +0000 |
| commit | 3f80e1cad02735f692a5a300ee3b200a21f330aa (patch) | |
| tree | d7bcd3c5d1cfd54c725f4c9a0eb7984632b6be67 /src/core | |
| parent | 393b5ab26e952f427f40a8ed6d10acfdf6ead96c (diff) | |
Added in support for live updating MySQL databases and the ability to execute commands to Anope through MySQL. Currently database support only applies to NickServ, ChanServ and BotServ but will be expanded soon.
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2798 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/cs_access.c | 13 | ||||
| -rw-r--r-- | src/core/cs_xop.c | 10 | ||||
| -rw-r--r-- | src/core/db_plain.cpp | 20 | ||||
| -rw-r--r-- | src/core/ns_register.c | 3 |
4 files changed, 23 insertions, 23 deletions
diff --git a/src/core/cs_access.c b/src/core/cs_access.c index d26891d73..bc05695a2 100644 --- a/src/core/cs_access.c +++ b/src/core/cs_access.c @@ -17,7 +17,6 @@ static int access_del(User * u, ChannelInfo *ci, ChanAccess * access, int *perm, int uacc) { - char *nick; if (!access->in_use) return 0; if (uacc <= access->level && !u->Account()->HasPriv("chanserv/access/modify")) @@ -25,11 +24,11 @@ static int access_del(User * u, ChannelInfo *ci, ChanAccess * access, int *perm, (*perm)++; return 0; } - nick = access->nc->display; + NickCore *nc = access->nc; access->nc = NULL; access->in_use = 0; - FOREACH_MOD(I_OnAccessDel, OnAccessDel(ci, u, nick)); + FOREACH_MOD(I_OnAccessDel, OnAccessDel(ci, u, nc)); return 1; } @@ -225,7 +224,7 @@ class CommandCSAccess : public Command } access->level = level; - FOREACH_MOD(I_OnAccessChange, OnAccessChange(ci, u, na->nick, level)); + FOREACH_MOD(I_OnAccessChange, OnAccessChange(ci, u, na, level)); Alog() << Config.s_ChanServ << ": " << u->GetMask() << " (level " << ulev << ") set access level " << access->level << " to " << na->nick << " (group " << nc->display << ") on channel " << ci->name; @@ -242,7 +241,7 @@ class CommandCSAccess : public Command std::string usernick = u->nick; ci->AddAccess(nc, level, usernick); - FOREACH_MOD(I_OnAccessAdd, OnAccessAdd(ci, u, na->nick, level)); + FOREACH_MOD(I_OnAccessAdd, OnAccessAdd(ci, u, na, level)); Alog() << Config.s_ChanServ << ": " << u->GetMask() << " (level " << ulev << ") set access level " << level << " to " << na->nick << " (group " << nc->display << ") on channel " << ci->name; @@ -326,13 +325,11 @@ class CommandCSAccess : public Command /* We'll free the access entries no longer in use... */ ci->CleanAccess(); - /* We don't know the nick if someone used numbers, so we trigger the event without - * nick param. We just do this once, even if someone enters a range. -Certus */ /* Only call this event if na exists (if they deleted by user, not numlist). * The callback for deleting by numlist will call this event otherwise - Adam */ if (na) { - FOREACH_MOD(I_OnAccessDel, OnAccessDel(ci, u, na->nick)); + FOREACH_MOD(I_OnAccessDel, OnAccessDel(ci, u, na->nc)); } } } diff --git a/src/core/cs_xop.c b/src/core/cs_xop.c index 1fa32265e..0f5f863dc 100644 --- a/src/core/cs_xop.c +++ b/src/core/cs_xop.c @@ -195,12 +195,12 @@ class XOPBase : public Command if (!change) { - FOREACH_MOD(I_OnAccessAdd, OnAccessAdd(ci, u, na->nick, level)); + FOREACH_MOD(I_OnAccessAdd, OnAccessAdd(ci, u, na, level)); notice_lang(Config.s_ChanServ, u, messages[XOP_ADDED], nc->display, ci->name.c_str()); } else { - FOREACH_MOD(I_OnAccessChange, OnAccessChange(ci, u, na->nick, level)); + FOREACH_MOD(I_OnAccessChange, OnAccessChange(ci, u, na, level)); notice_lang(Config.s_ChanServ, u, messages[XOP_MOVED], nc->display, ci->name.c_str()); } @@ -290,7 +290,7 @@ class XOPBase : public Command access->nc = NULL; access->in_use = 0; - FOREACH_MOD(I_OnAccessDel, OnAccessDel(ci, u, na->nick)); + FOREACH_MOD(I_OnAccessDel, OnAccessDel(ci, u, na->nc)); deleted = 1; } @@ -572,16 +572,16 @@ int xop_del(User *u, ChannelInfo *ci, ChanAccess *access, int *perm, int uacc, i { if (!access->in_use || access->level != xlev) return 0; - char *nick = access->nc->display; if (uacc <= access->level && !u->Account()->HasPriv("chanserv/access/modify")) { ++(*perm); return 0; } + NickCore *nc = access->nc; access->nc = NULL; access->in_use = 0; - FOREACH_MOD(I_OnAccessDel, OnAccessDel(ci, u, nick)); + FOREACH_MOD(I_OnAccessDel, OnAccessDel(ci, u, nc)); return 1; } diff --git a/src/core/db_plain.cpp b/src/core/db_plain.cpp index c1c9cdae5..ff2a4cdf3 100644 --- a/src/core/db_plain.cpp +++ b/src/core/db_plain.cpp @@ -74,7 +74,7 @@ static void ReadDatabase(Module *m = NULL) if (m) MOD_RESULT = m->OnDatabaseRead(params); - else + else { FOREACH_RESULT(I_OnDatabaseRead, OnDatabaseRead(params)); } @@ -119,7 +119,7 @@ static void ReadDatabase(Module *m = NULL) try { if (m) - MOD_RESULT = m->OnDatabaseReadMetadata(nc, key, params); + m->OnDatabaseReadMetadata(nc, key, params); else { FOREACH_RESULT(I_OnDatabaseReadMetadata, OnDatabaseReadMetadata(nc, key, params)); @@ -127,7 +127,7 @@ static void ReadDatabase(Module *m = NULL) } catch (const char *err) { - Alog() << "[db_plain}: " << err; + Alog() << "[db_plain]: " << err; } } else if (na && Type == MD_NA) @@ -135,7 +135,7 @@ static void ReadDatabase(Module *m = NULL) try { if (m) - MOD_RESULT = m->OnDatabaseReadMetadata(na, key, params); + m->OnDatabaseReadMetadata(na, key, params); else { FOREACH_RESULT(I_OnDatabaseReadMetadata, OnDatabaseReadMetadata(na, key, params)); @@ -143,7 +143,7 @@ static void ReadDatabase(Module *m = NULL) } catch (const char *err) { - Alog() << "[db_plain}: " << err; + Alog() << "[db_plain]: " << err; } } else if (bi && Type == MD_BI) @@ -151,7 +151,7 @@ static void ReadDatabase(Module *m = NULL) try { if (m) - MOD_RESULT = m->OnDatabaseReadMetadata(bi, key, params); + m->OnDatabaseReadMetadata(bi, key, params); else { FOREACH_RESULT(I_OnDatabaseReadMetadata, OnDatabaseReadMetadata(bi, key, params)); @@ -159,15 +159,15 @@ static void ReadDatabase(Module *m = NULL) } catch (const char *err) { - Alog() << "[db_plain}: " << err; - } + Alog() << "[db_plain]: " << err; } + } else if (ci && Type == MD_CH) { try { if (m) - MOD_RESULT = m->OnDatabaseReadMetadata(ci, key, params); + m->OnDatabaseReadMetadata(ci, key, params); else { FOREACH_RESULT(I_OnDatabaseReadMetadata, OnDatabaseReadMetadata(ci, key, params)); @@ -175,7 +175,7 @@ static void ReadDatabase(Module *m = NULL) } catch (const char *err) { - Alog() << "[db_plain}: " << err; + Alog() << "[db_plain]: " << err; } } } diff --git a/src/core/ns_register.c b/src/core/ns_register.c index a351711dc..fcd9c329c 100644 --- a/src/core/ns_register.c +++ b/src/core/ns_register.c @@ -88,6 +88,9 @@ class CommandNSConfirm : public Command validate_user(user); } } + + FOREACH_MOD(I_OnNickRegister, OnNickRegister(na)); + return MOD_CONT; } |
