summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorrburchell <rburchell@5417fbe8-f217-4b02-8779-1006273d7864>2009-06-06 23:33:23 +0000
committerrburchell <rburchell@5417fbe8-f217-4b02-8779-1006273d7864>2009-06-06 23:33:23 +0000
commit9ff6ed2430ed87014846b39456b31b7aba231e48 (patch)
tree0f61726fefb323c39696510ac38e5bc30d44fa2b /src/core
parent2eae73808355d8a26886bfcf42f03db02e53f1e6 (diff)
New events stuff, patch totally by Adam (aka Awesome).
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2313 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src/core')
-rw-r--r--src/core/bs_bot.c6
-rw-r--r--src/core/cs_access.c21
-rw-r--r--src/core/cs_drop.c4
-rw-r--r--src/core/cs_forbid.c4
-rw-r--r--src/core/cs_register.c3
-rw-r--r--src/core/cs_suspend.c6
-rw-r--r--src/core/cs_xop.c17
-rw-r--r--src/core/ns_drop.c3
-rw-r--r--src/core/ns_forbid.c3
-rw-r--r--src/core/ns_group.c3
-rw-r--r--src/core/ns_identify.c4
-rw-r--r--src/core/ns_logout.c2
-rw-r--r--src/core/ns_register.c3
-rw-r--r--src/core/ns_suspend.c6
-rw-r--r--src/core/os_defcon.c4
15 files changed, 53 insertions, 36 deletions
diff --git a/src/core/bs_bot.c b/src/core/bs_bot.c
index eb2aa2f8b..9999b0c27 100644
--- a/src/core/bs_bot.c
+++ b/src/core/bs_bot.c
@@ -130,7 +130,7 @@ class CommandBSBot : public Command
notice_lang(s_BotServ, u, BOT_BOT_ADDED, bi->nick, bi->user,
bi->host, bi->real);
- send_event(EVENT_BOT_CREATE, 1, bi->nick);
+ FOREACH_MOD(I_OnBotCreate, OnBotCreate(bi));
return MOD_CONT;
}
@@ -310,7 +310,7 @@ class CommandBSBot : public Command
notice_lang(s_BotServ, u, BOT_BOT_CHANGED,
oldnick, bi->nick, bi->user, bi->host, bi->real);
- send_event(EVENT_BOT_CHANGE, 1, bi->nick);
+ FOREACH_MOD(I_OnBotChange, OnBotChange(bi));
return MOD_CONT;
}
@@ -337,7 +337,7 @@ class CommandBSBot : public Command
return MOD_CONT;
}
- send_event(EVENT_BOT_DEL, 1, bi->nick);
+ FOREACH_MOD(I_OnBotDelete, OnBotDelete(bi));
ircdproto->SendQuit(bi, "Quit: Help! I'm being deleted by %s!", u->nick);
ircdproto->SendSQLineDel(bi->nick);
diff --git a/src/core/cs_access.c b/src/core/cs_access.c
index 6a1a1f819..7a4ad8a78 100644
--- a/src/core/cs_access.c
+++ b/src/core/cs_access.c
@@ -28,7 +28,9 @@ static int access_del(User * u, ChannelInfo *ci, ChanAccess * access, int *perm,
nick = access->nc->display;
access->nc = NULL;
access->in_use = 0;
- send_event(EVENT_ACCESS_DEL, 3, ci->name, u->nick, nick);
+
+ FOREACH_MOD(I_OnAccessDel, OnAccessDel(ci, u, nick));
+
return 1;
}
@@ -92,7 +94,6 @@ class CommandCSAccess : public Command
const char *cmd = params[1].c_str();
const char *nick = params.size() > 2 ? params[2].c_str() : NULL;
const char *s = params.size() > 3 ? params[3].c_str() : NULL;
- char event_access[BUFSIZE];
ChannelInfo *ci;
NickAlias *na = NULL;
@@ -180,8 +181,9 @@ class CommandCSAccess : public Command
return MOD_CONT;
}
access->level = level;
- snprintf(event_access, BUFSIZE, "%d", access->level);
- send_event(EVENT_ACCESS_CHANGE, 4, ci->name, u->nick, na->nick, event_access);
+
+ FOREACH_MOD(I_OnAccessChange, OnAccessChange(ci, u, na->nick, level));
+
alog("%s: %s!%s@%s (level %d) set access level %d to %s (group %s) on channel %s", s_ChanServ, u->nick, u->GetIdent().c_str(), u->host, ulev, access->level, na->nick, nc->display, ci->name);
notice_lang(s_ChanServ, u, CHAN_ACCESS_LEVEL_CHANGED, nc->display, chan, level);
return MOD_CONT;
@@ -195,8 +197,8 @@ class CommandCSAccess : public Command
ci->AddAccess(nc, level);
- snprintf(event_access, BUFSIZE, "%d", level);
- send_event(EVENT_ACCESS_ADD, 4, ci->name, u->nick, na->nick, event_access);
+ FOREACH_MOD(I_OnAccessAdd, OnAccessAdd(ci, u, na->nick, level));
+
alog("%s: %s!%s@%s (level %d) set access level %d to %s (group %s) on channel %s", s_ChanServ, u->nick, u->GetIdent().c_str(), u->host, ulev, level, na->nick, nc->display, ci->name);
notice_lang(s_ChanServ, u, CHAN_ACCESS_ADDED, nc->display, ci->name, level);
}
@@ -278,10 +280,7 @@ class CommandCSAccess : public Command
/* 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 */
- if (na)
- send_event(EVENT_ACCESS_DEL, 3, ci->name, u->nick, na->nick);
- else
- send_event(EVENT_ACCESS_DEL, 2, ci->name, u->nick);
+ FOREACH_MOD(I_OnAccessDel, OnAccessDel(ci, u, (na->nick ? na->nick : NULL)));
}
}
else if (!stricmp(cmd, "LIST"))
@@ -326,7 +325,7 @@ class CommandCSAccess : public Command
ci->ClearAccess();
- send_event(EVENT_ACCESS_CLEAR, 2, ci->name, u->nick);
+ FOREACH_MOD(I_OnAccessClear, OnAccessClear(ci, u));
notice_lang(s_ChanServ, u, CHAN_ACCESS_CLEAR, ci->name);
alog("%s: %s!%s@%s (level %d) cleared access list on %s",
diff --git a/src/core/cs_drop.c b/src/core/cs_drop.c
index 25f381a37..8e6328607 100644
--- a/src/core/cs_drop.c
+++ b/src/core/cs_drop.c
@@ -90,7 +90,9 @@ class CommandCSDrop : public Command
}
notice_lang(s_ChanServ, u, CHAN_DROPPED, chan);
- send_event(EVENT_CHAN_DROP, 1, chan);
+
+ FOREACH_MOD(I_OnChanDrop, OnChanDrop(chan));
+
return MOD_CONT;
}
diff --git a/src/core/cs_forbid.c b/src/core/cs_forbid.c
index b20e1bc20..86b6aab54 100644
--- a/src/core/cs_forbid.c
+++ b/src/core/cs_forbid.c
@@ -102,7 +102,9 @@ class CommandCSForbid : public Command
alog("%s: %s set FORBID for channel %s", s_ChanServ, u->nick, ci->name);
notice_lang(s_ChanServ, u, CHAN_FORBID_SUCCEEDED, chan);
- send_event(EVENT_CHAN_FORBIDDEN, 1, chan);
+
+ FOREACH_MOD(I_OnChanForbidden, OnChanForbidden(ci));
+
return MOD_CONT;
}
diff --git a/src/core/cs_register.c b/src/core/cs_register.c
index 0d8b38cfd..9c1bc6077 100644
--- a/src/core/cs_register.c
+++ b/src/core/cs_register.c
@@ -121,7 +121,8 @@ class CommandCSRegister : public Command
ircdproto->SendMode(findbot(s_ChanServ), chan, "%s %s", ircd->adminset, u->nick);
if (ircd->owner && ircd->ownerset)
ircdproto->SendMode(findbot(s_ChanServ), chan, "%s %s", ircd->ownerset, u->nick);
- send_event(EVENT_CHAN_REGISTERED, 1, chan);
+
+ FOREACH_MOD(I_OnChanRegistered, OnChanRegistered(ci));
}
return MOD_CONT;
}
diff --git a/src/core/cs_suspend.c b/src/core/cs_suspend.c
index f181363dc..7a63a0fe6 100644
--- a/src/core/cs_suspend.c
+++ b/src/core/cs_suspend.c
@@ -92,7 +92,8 @@ class CommandCSSuspend : public Command
alog("%s: %s set SUSPEND for channel %s", s_ChanServ, u->nick, ci->name);
notice_lang(s_ChanServ, u, CHAN_SUSPEND_SUCCEEDED, chan);
- send_event(EVENT_CHAN_SUSPENDED, 1, chan);
+
+ FOREACH_MOD(I_OnChanSuspend, OnChanSuspend(ci));
}
else
{
@@ -167,7 +168,8 @@ class CommandCSUnSuspend : public Command
alog("%s: %s set UNSUSPEND for channel %s", s_ChanServ, u->nick, ci->name);
notice_lang(s_ChanServ, u, CHAN_UNSUSPEND_SUCCEEDED, chan);
- send_event(EVENT_CHAN_UNSUSPEND, 1, chan);
+
+ FOREACH_MOD(I_OnChanUnsuspend, OnChanUnsuspend(ci));
}
else
{
diff --git a/src/core/cs_xop.c b/src/core/cs_xop.c
index e5e547aa4..2a73ce3f6 100644
--- a/src/core/cs_xop.c
+++ b/src/core/cs_xop.c
@@ -109,7 +109,6 @@ class XOPBase : public Command
const char *nick = params.size() > 2 ? params[2].c_str() : NULL;
ChanAccess *access;
int change = 0;
- char event_access[BUFSIZE];
if (!nick)
{
@@ -174,16 +173,14 @@ class XOPBase : public Command
alog("%s: %s!%s@%s (level %d) %s access level %d to %s (group %s) on channel %s", s_ChanServ, u->nick, u->GetIdent().c_str(), u->host, ulev, change ? "changed" : "set", level, na->nick, nc->display, ci->name);
- snprintf(event_access, BUFSIZE, "%d", level);
-
if (!change)
{
- send_event(EVENT_ACCESS_ADD, 4, ci->name, u->nick, na->nick, event_access);
+ FOREACH_MOD(I_OnAccessAdd, OnAccessAdd(ci, u, na->nick, level));
notice_lang(s_ChanServ, u, messages[XOP_ADDED], nc->display, ci->name);
}
else
{
- send_event(EVENT_ACCESS_CHANGE, 4, ci->name, u->nick, na->nick, event_access);
+ FOREACH_MOD(I_OnAccessChange, OnAccessChange(ci, u, na->nick, level));
notice_lang(s_ChanServ, u, messages[XOP_MOVED], nc->display, ci->name);
}
@@ -272,7 +269,9 @@ class XOPBase : public Command
notice_lang(s_ChanServ, u, messages[XOP_DELETED], access->nc->display, ci->name);
access->nc = NULL;
access->in_use = 0;
- send_event(EVENT_ACCESS_DEL, 3, ci->name, u->nick, na->nick);
+
+ FOREACH_MOD(I_OnAccessDel, OnAccessDel(ci, u, na->nick));
+
deleted = 1;
}
}
@@ -349,7 +348,7 @@ class XOPBase : public Command
ci->EraseAccess(i - 1);
}
- send_event(EVENT_ACCESS_CLEAR, 2, ci->name, u->nick);
+ FOREACH_MOD(I_OnAccessClear, OnAccessClear(ci, u));
notice_lang(s_ChanServ, u, messages[XOP_CLEAR], ci->name);
@@ -531,7 +530,9 @@ int xop_del(User *u, ChannelInfo *ci, ChanAccess *access, int *perm, int uacc, i
}
access->nc = NULL;
access->in_use = 0;
- send_event(EVENT_ACCESS_DEL, 3, ci->name, u->nick, nick);
+
+ FOREACH_MOD(I_OnAccessDel, OnAccessDel(ci, u, nick));
+
return 1;
}
diff --git a/src/core/ns_drop.c b/src/core/ns_drop.c
index d3454548c..f53142211 100644
--- a/src/core/ns_drop.c
+++ b/src/core/ns_drop.c
@@ -74,7 +74,8 @@ class CommandNSDrop : public Command
alog("%s: %s!%s@%s dropped nickname %s (group %s) (e-mail: %s)", s_NickServ, u->nick, u->GetIdent().c_str(), u->host, na->nick, na->nc->display, na->nc->email ? na->nc->email : "none");
delnick(na);
- send_event(EVENT_NICK_DROPPED, 1, my_nick ? my_nick : nick);
+
+ FOREACH_MOD(I_OnNickDrop, OnNickDrop(my_nick ? my_nick : nick));
if (!is_mine)
{
diff --git a/src/core/ns_forbid.c b/src/core/ns_forbid.c
index 7cceb74d9..8525d9c37 100644
--- a/src/core/ns_forbid.c
+++ b/src/core/ns_forbid.c
@@ -77,7 +77,8 @@ class CommandNSForbid : public Command
alog("%s: %s set FORBID for nick %s", s_NickServ, u->nick, nick);
notice_lang(s_NickServ, u, NICK_FORBID_SUCCEEDED, nick);
- send_event(EVENT_NICK_FORBIDDEN, 1, nick);
+
+ FOREACH_MOD(I_OnNickForbidden, OnNickForbidden(na));
}
else
{
diff --git a/src/core/ns_group.c b/src/core/ns_group.c
index eb069bd9f..11030ffcf 100644
--- a/src/core/ns_group.c
+++ b/src/core/ns_group.c
@@ -155,7 +155,8 @@ class CommandNSGroup : public Command
u->nc = na->nc;
- send_event(EVENT_GROUP, 1, u->nick);
+ FOREACH_MOD(I_OnNickGroup, OnNickGroup(u, target));
+
alog("%s: %s!%s@%s makes %s join group of %s (%s) (e-mail: %s)", s_NickServ, u->nick, u->GetIdent().c_str(), u->host, u->nick, target->nick, target->nc->display, (target->nc->email ? target->nc->email : "none"));
notice_lang(s_NickServ, u, NICK_GROUP_JOINED, target->nick);
diff --git a/src/core/ns_identify.c b/src/core/ns_identify.c
index 457edb974..526e40ca4 100644
--- a/src/core/ns_identify.c
+++ b/src/core/ns_identify.c
@@ -86,7 +86,9 @@ class CommandNSIdentify : public Command
common_svsmode(u, modes, "");
}
ircdproto->SendAccountLogin(u, u->nc);
- send_event(EVENT_NICK_IDENTIFY, 1, u->nick);
+
+ FOREACH_MOD(I_OnNickIdentify, OnNickIdentify(u));
+
alog("%s: %s!%s@%s identified for nick %s", s_NickServ, u->nick, u->GetIdent().c_str(), u->host, u->nick);
notice_lang(s_NickServ, u, NICK_IDENTIFY_SUCCEEDED);
if (ircd->vhost)
diff --git a/src/core/ns_logout.c b/src/core/ns_logout.c
index 0b7345f55..e6985024e 100644
--- a/src/core/ns_logout.c
+++ b/src/core/ns_logout.c
@@ -77,7 +77,7 @@ class CommandNSLogout : public Command
u2->nc = NULL;
/* Send out an event */
- send_event(EVENT_NICK_LOGOUT, 1, u2->nick);
+ FOREACH_MOD(I_OnNickLogout, OnNickLogout(u2));
}
return MOD_CONT;
}
diff --git a/src/core/ns_register.c b/src/core/ns_register.c
index 54bb154a8..26d6046e7 100644
--- a/src/core/ns_register.c
+++ b/src/core/ns_register.c
@@ -86,7 +86,8 @@ class CommandNSConfirm : public Command
notice_lang(s_NickServ, u, NICK_REGISTERED_NO_MASK, u->nick);
ircdproto->SendAccountLogin(u, u->nc);
- send_event(EVENT_NICK_REGISTERED, 1, u->nick);
+
+ FOREACH_MOD(I_OnNickRegister, OnNickRegister(u));
if (enc_decrypt(na->nc->pass, tmp_pass, PASSMAX - 1) == 1)
notice_lang(s_NickServ, u, NICK_PASSWORD_IS, tmp_pass);
diff --git a/src/core/ns_suspend.c b/src/core/ns_suspend.c
index 3c7158f7f..eb4e6547f 100644
--- a/src/core/ns_suspend.c
+++ b/src/core/ns_suspend.c
@@ -80,7 +80,8 @@ class CommandNSSuspend : public Command
alog("%s: %s set SUSPEND for nick %s", s_NickServ, u->nick, nick);
notice_lang(s_NickServ, u, NICK_SUSPEND_SUCCEEDED, nick);
- send_event(EVENT_NICK_SUSPENDED, 1, nick);
+
+ FOREACH_MOD(I_OnNickSuspended, OnNickSuspend(na))
}
else
{
@@ -147,7 +148,8 @@ class CommandNSUnSuspend : public Command
alog("%s: %s set UNSUSPEND for nick %s", s_NickServ, u->nick, nick);
notice_lang(s_NickServ, u, NICK_UNSUSPEND_SUCCEEDED, nick);
- send_event(EVENT_NICK_UNSUSPEND, 1, nick);
+
+ FOREACH_MOD(I_OnNickUnsuspended, OnNickUnsuspended(na));
}
else
{
diff --git a/src/core/os_defcon.c b/src/core/os_defcon.c
index f079c71e3..dfec49a68 100644
--- a/src/core/os_defcon.c
+++ b/src/core/os_defcon.c
@@ -49,7 +49,9 @@ class CommandOSDEFCON : public Command
return MOD_CONT;
}
DefConLevel = newLevel;
- send_event(EVENT_DEFCON_LEVEL, 1, lvl);
+
+ FOREACH_MOD(I_OnDefconLevel, OnDefconLevel(newLevel));
+
DefContimer = time(NULL);
notice_lang(s_OperServ, u, OPER_DEFCON_CHANGED, DefConLevel);
defcon_sendlvls(u);