From 26ac315192e0d8a04d50e910697ab794eedf0cc1 Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 20 Apr 2014 14:35:14 -0400 Subject: New event system --- modules/protocol/bahamut.cpp | 39 ++++++++++++++++++++------ modules/protocol/charybdis.cpp | 60 ++++++++++++++++++++++++++------------- modules/protocol/hybrid.cpp | 49 ++++++++++++++++++++++++-------- modules/protocol/inspircd20.cpp | 61 ++++++++++++++++++++++++++++++++-------- modules/protocol/ngircd.cpp | 45 ++++++++++++++++++++++-------- modules/protocol/plexus.cpp | 51 +++++++++++++++++++++++---------- modules/protocol/ratbox.cpp | 48 ++++++++++++++++++++++--------- modules/protocol/unreal.cpp | 62 ++++++++++++++++++++++++++++++++--------- 8 files changed, 313 insertions(+), 102 deletions(-) (limited to 'modules/protocol') diff --git a/modules/protocol/bahamut.cpp b/modules/protocol/bahamut.cpp index 439bfd387..5c1a23426 100644 --- a/modules/protocol/bahamut.cpp +++ b/modules/protocol/bahamut.cpp @@ -466,6 +466,7 @@ struct IRCDMessageTopic : IRCDMessage }; class ProtoBahamut : public Module + , public EventHook { BahamutIRCdProto ircd_proto; @@ -535,15 +536,35 @@ class ProtoBahamut : public Module } public: - ProtoBahamut(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, PROTOCOL | VENDOR), - ircd_proto(this), - message_away(this), message_capab(this), message_error(this), message_invite(this), - message_join(this), message_kick(this), message_kill(this), message_motd(this), message_notice(this), - message_part(this), message_ping(this), message_privmsg(this), message_quit(this), - message_squit(this), message_stats(this), message_time(this), message_version(this), message_whois(this), - - message_burst(this), message_mode(this, "MODE"), message_svsmode(this, "SVSMODE"), - message_nick(this), message_server(this), message_sjoin(this), message_topic(this) + ProtoBahamut(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, PROTOCOL | VENDOR) + , EventHook("OnUserNickChange") + , ircd_proto(this) + , message_away(this) + , message_capab(this) + , message_error(this) + , message_invite(this) + , message_join(this) + , message_kick(this) + , message_kill(this) + , message_motd(this) + , message_notice(this) + , message_part(this) + , message_ping(this) + , message_privmsg(this) + , message_quit(this) + , message_squit(this) + , message_stats(this) + , message_time(this) + , message_version(this) + , message_whois(this) + + , message_burst(this) + , message_mode(this, "MODE") + , message_svsmode(this, "SVSMODE") + , message_nick(this) + , message_server(this) + , message_sjoin(this) + , message_topic(this) { this->AddModes(); diff --git a/modules/protocol/charybdis.cpp b/modules/protocol/charybdis.cpp index eed63edbf..68bf31e76 100644 --- a/modules/protocol/charybdis.cpp +++ b/modules/protocol/charybdis.cpp @@ -175,7 +175,7 @@ struct IRCDMessageEncap : IRCDMessage if (params[1] == "CERTFP") { u->fingerprint = params[2]; - FOREACH_MOD(OnFingerprint, (u)); + Event::OnFingerprint(&Event::Fingerprint::OnFingerprint, u); } /* * Received: :42X ENCAP * SASL 42XAAAAAH * S PLAIN @@ -258,6 +258,8 @@ struct IRCDMessagePass : IRCDMessage }; class ProtoCharybdis : public Module + , public EventHook + , public EventHook { Module *m_ratbox; @@ -321,24 +323,44 @@ class ProtoCharybdis : public Module } public: - ProtoCharybdis(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, PROTOCOL | VENDOR), - ircd_proto(this), - message_away(this), message_capab(this), message_error(this), message_invite(this), message_kick(this), - message_kill(this), message_mode(this), message_motd(this), message_notice(this), message_part(this), - message_ping(this), message_privmsg(this), message_quit(this), message_squit(this), message_stats(this), - message_time(this), message_topic(this), message_version(this), message_whois(this), - - message_bmask("IRCDMessage", "charybdis/bmask", "ratbox/bmask"), - message_join("IRCDMessage", "charybdis/join", "ratbox/join"), - message_nick("IRCDMessage", "charybdis/nick", "ratbox/nick"), - message_pong("IRCDMessage", "charybdis/pong", "ratbox/pong"), - message_sid("IRCDMessage", "charybdis/sid", "ratbox/sid"), - message_sjoin("IRCDMessage", "charybdis/sjoin", "ratbox/sjoin"), - message_tb("IRCDMessage", "charybdis/tb", "ratbox/tb"), - message_tmode("IRCDMessage", "charybdis/tmode", "ratbox/tmode"), - message_uid("IRCDMessage", "charybdis/uid", "ratbox/uid"), - - message_encap(this), message_euid(this), message_pass(this), message_server(this) + ProtoCharybdis(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, PROTOCOL | VENDOR) + , EventHook("OnChannelSync") + , EventHook("MLock") + , ircd_proto(this) + , message_away(this) + , message_capab(this) + , message_error(this) + , message_invite(this) + , message_kick(this) + , message_kill(this) + , message_mode(this) + , message_motd(this) + , message_notice(this) + , message_part(this) + , message_ping(this) + , message_privmsg(this) + , message_quit(this) + , message_squit(this) + , message_stats(this) + , message_time(this) + , message_topic(this) + , message_version(this) + , message_whois(this) + + , message_bmask("IRCDMessage", "charybdis/bmask", "ratbox/bmask") + , message_join("IRCDMessage", "charybdis/join", "ratbox/join") + , message_nick("IRCDMessage", "charybdis/nick", "ratbox/nick") + , message_pong("IRCDMessage", "charybdis/pong", "ratbox/pong") + , message_sid("IRCDMessage", "charybdis/sid", "ratbox/sid") + , message_sjoin("IRCDMessage", "charybdis/sjoin", "ratbox/sjoin") + , message_tb("IRCDMessage", "charybdis/tb", "ratbox/tb") + , message_tmode("IRCDMessage", "charybdis/tmode", "ratbox/tmode") + , message_uid("IRCDMessage", "charybdis/uid", "ratbox/uid") + + , message_encap(this) + , message_euid(this) + , message_pass(this) + , message_server(this) { diff --git a/modules/protocol/hybrid.cpp b/modules/protocol/hybrid.cpp index dc5261403..d2b5b935a 100644 --- a/modules/protocol/hybrid.cpp +++ b/modules/protocol/hybrid.cpp @@ -558,11 +558,12 @@ struct IRCDMessageCertFP: IRCDMessage User *u = source.GetUser(); u->fingerprint = params[0]; - FOREACH_MOD(OnFingerprint, (u)); + Event::OnFingerprint(&Event::Fingerprint::OnFingerprint, u); } }; class ProtoHybrid : public Module + , public EventHook { HybridProto ircd_proto; @@ -651,16 +652,42 @@ class ProtoHybrid : public Module } public: - ProtoHybrid(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, PROTOCOL | VENDOR), - ircd_proto(this), - message_away(this), message_capab(this), message_error(this), message_invite(this), message_kick(this), - message_kill(this), message_mode(this), message_motd(this), message_notice(this), message_part(this), - message_ping(this), message_privmsg(this), message_quit(this), message_squit(this), message_stats(this), - message_time(this), message_topic(this), message_version(this), message_whois(this), - message_bmask(this), message_eob(this), message_join(this), - message_nick(this), message_pass(this), message_pong(this), message_server(this), message_sid(this), - message_sjoin(this), message_svsmode(this), message_tburst(this), message_tmode(this), message_uid(this), - message_certfp(this) + ProtoHybrid(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, PROTOCOL | VENDOR) + , EventHook("OnUserNickChange") + , ircd_proto(this) + , message_away(this) + , message_capab(this) + , message_error(this) + , message_invite(this) + , message_kick(this) + , message_kill(this) + , message_mode(this) + , message_motd(this) + , message_notice(this) + , message_part(this) + , message_ping(this) + , message_privmsg(this) + , message_quit(this) + , message_squit(this) + , message_stats(this) + , message_time(this) + , message_topic(this) + , message_version(this) + , message_whois(this) + , message_bmask(this) + , message_eob(this) + , message_join(this) + , message_nick(this) + , message_pass(this) + , message_pong(this) + , message_server(this) + , message_sid(this) + , message_sjoin(this) + , message_svsmode(this) + , message_tburst(this) + , message_tmode(this) + , message_uid(this) + , message_certfp(this) { if (Config->GetModule(this)) this->AddModes(); diff --git a/modules/protocol/inspircd20.cpp b/modules/protocol/inspircd20.cpp index 7949fd610..77ebb2fe6 100644 --- a/modules/protocol/inspircd20.cpp +++ b/modules/protocol/inspircd20.cpp @@ -12,6 +12,7 @@ #include "module.h" #include "modules/sasl.h" #include "modules/cs_mode.h" +#include "modules/cs_set.h" struct SASLUser { @@ -1188,7 +1189,7 @@ struct IRCDMessageMetadata : IRCDMessage { u->fingerprint = data.substr(pos1, pos2 - pos1); } - FOREACH_MOD(OnFingerprint, (u)); + Event::OnFingerprint(&Event::Fingerprint::OnFingerprint, u); } } else if (params[0][0] == '#') @@ -1424,6 +1425,12 @@ struct IRCDMessageUID : IRCDMessage }; class ProtoInspIRCd20 : public Module + , public EventHook + , public EventHook + , public EventHook + , public EventHook + , public EventHook + , public EventHook { InspIRCd20Proto ircd_proto; ExtensibleItem ssl; @@ -1472,16 +1479,48 @@ class ProtoInspIRCd20 : public Module } public: - ProtoInspIRCd20(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, PROTOCOL | VENDOR), - ircd_proto(this), ssl(this, "ssl"), - message_away(this), message_error(this), message_invite(this), message_join(this), message_kick(this), - message_kill(this), message_motd(this), message_notice(this), message_part(this), message_ping(this), - message_privmsg(this), message_quit(this), message_stats(this), message_topic(this), - - message_capab(this), message_encap(this), message_endburst(this), - message_fhost(this), message_fident(this), message_fjoin(this), message_fmode(this), message_ftopic(this), - message_idle(this), message_metadata(this), message_mode(this), message_nick(this), message_opertype(this), message_rsquit(this), - message_server(this), message_squit(this), message_time(this), message_uid(this) + ProtoInspIRCd20(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, PROTOCOL | VENDOR) + , EventHook("OnUserNickChange") + , EventHook("OnChannelSync") + , EventHook("OnChanRegistered") + , EventHook("OnDelChan") + , EventHook("MLock") + , EventHook("OnSetChannelOption") + , ircd_proto(this) + , ssl(this, "ssl") + , message_away(this) + , message_error(this) + , message_invite(this) + , message_join(this) + , message_kick(this) + , message_kill(this) + , message_motd(this) + , message_notice(this) + , message_part(this) + , message_ping(this) + , message_privmsg(this) + , message_quit(this) + , message_stats(this) + , message_topic(this) + + , message_capab(this) + , message_encap(this) + , message_endburst(this) + , message_fhost(this) + , message_fident(this) + , message_fjoin(this) + , message_fmode(this) + , message_ftopic(this) + , message_idle(this) + , message_metadata(this) + , message_mode(this) + , message_nick(this) + , message_opertype(this) + , message_rsquit(this) + , message_server(this) + , message_squit(this) + , message_time(this) + , message_uid(this) { } diff --git a/modules/protocol/ngircd.cpp b/modules/protocol/ngircd.cpp index 998d83921..06790b2af 100644 --- a/modules/protocol/ngircd.cpp +++ b/modules/protocol/ngircd.cpp @@ -352,7 +352,7 @@ struct IRCDMessageMetadata : IRCDMessage else if (params[1].equals_cs("certfp")) { u->fingerprint = params[2]; - FOREACH_MOD(OnFingerprint, (u)); + Event::OnFingerprint(&Event::Fingerprint::OnFingerprint, u); } else if (params[1].equals_cs("cloakhost")) { @@ -586,6 +586,7 @@ struct IRCDMessageTopic : IRCDMessage class ProtongIRCd : public Module + , public EventHook { ngIRCdProto ircd_proto; @@ -666,16 +667,38 @@ class ProtongIRCd : public Module } public: - ProtongIRCd(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, PROTOCOL | VENDOR), - ircd_proto(this), - message_capab(this), message_error(this), message_invite(this), message_kick(this), message_kill(this), - message_motd(this), message_notice(this), message_part(this), message_ping(this), message_privmsg(this), - message_squery(this, "SQUERY"), message_quit(this), message_squit(this), message_stats(this), message_time(this), - message_version(this), message_whois(this), - - message_005(this), message_376(this), message_chaninfo(this), message_join(this), message_metadata(this), - message_mode(this), message_nick(this), message_njoin(this), message_pong(this), message_server(this), - message_topic(this) + ProtongIRCd(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, PROTOCOL | VENDOR) + , EventHook("OnUserNickChange") + , ircd_proto(this) + , message_capab(this) + , message_error(this) + , message_invite(this) + , message_kick(this) + , message_kill(this) + , message_motd(this) + , message_notice(this) + , message_part(this) + , message_ping(this) + , message_privmsg(this) + , message_squery(this, "SQUERY") + , message_quit(this) + , message_squit(this) + , message_stats(this) + , message_time(this) + , message_version(this) + , message_whois(this) + + , message_005(this) + , message_376(this) + , message_chaninfo(this) + , message_join(this) + , message_metadata(this) + , message_mode(this) + , message_nick(this) + , message_njoin(this) + , message_pong(this) + , message_server(this) + , message_topic(this) { Servers::Capab.insert("QS"); diff --git a/modules/protocol/plexus.cpp b/modules/protocol/plexus.cpp index a7ff0ae88..e4cc26e6a 100644 --- a/modules/protocol/plexus.cpp +++ b/modules/protocol/plexus.cpp @@ -204,7 +204,7 @@ struct IRCDMessageEncap : IRCDMessage if (u) { u->fingerprint = params[3]; - FOREACH_MOD(OnFingerprint, (u)); + Event::OnFingerprint(&Event::Fingerprint::OnFingerprint, u); } } return; @@ -382,20 +382,41 @@ class ProtoPlexus : public Module } public: - ProtoPlexus(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, PROTOCOL | VENDOR), - ircd_proto(this), - message_away(this), message_capab(this), message_error(this), message_invite(this), message_kick(this), message_kill(this), - message_mode(this), message_motd(this), message_notice(this), message_part(this), message_ping(this), message_privmsg(this), - message_quit(this), message_squit(this), message_stats(this), message_time(this), message_topic(this), message_version(this), - message_whois(this), - - message_bmask("IRCDMessage", "plexus/bmask", "hybrid/bmask"), message_eob("IRCDMessage", "plexus/eob", "hybrid/eob"), - message_join("IRCDMessage", "plexus/join", "hybrid/join"), message_nick("IRCDMessage", "plexus/nick", "hybrid/nick"), - message_sid("IRCDMessage", "plexus/sid", "hybrid/sid"), - message_sjoin("IRCDMessage", "plexus/sjoin", "hybrid/sjoin"), message_tburst("IRCDMessage", "plexus/tburst", "hybrid/tburst"), - message_tmode("IRCDMessage", "plexus/tmode", "hybrid/tmode"), - - message_encap(this), message_pass(this), message_server(this), message_uid(this) + ProtoPlexus(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, PROTOCOL | VENDOR) + , ircd_proto(this) + , message_away(this) + , message_capab(this) + , message_error(this) + , message_invite(this) + , message_kick(this) + , message_kill(this) + , message_mode(this) + , message_motd(this) + , message_notice(this) + , message_part(this) + , message_ping(this) + , message_privmsg(this) + , message_quit(this) + , message_squit(this) + , message_stats(this) + , message_time(this) + , message_topic(this) + , message_version(this) + , message_whois(this) + + , message_bmask("IRCDMessage", "plexus/bmask", "hybrid/bmask") + , message_eob("IRCDMessage", "plexus/eob", "hybrid/eob") + , message_join("IRCDMessage", "plexus/join", "hybrid/join") + , message_nick("IRCDMessage", "plexus/nick", "hybrid/nick") + , message_sid("IRCDMessage", "plexus/sid", "hybrid/sid") + , message_sjoin("IRCDMessage", "plexus/sjoin", "hybrid/sjoin") + , message_tburst("IRCDMessage", "plexus/tburst", "hybrid/tburst") + , message_tmode("IRCDMessage", "plexus/tmode", "hybrid/tmode") + + , message_encap(this) + , message_pass(this) + , message_server(this) + , message_uid(this) { if (ModuleManager::LoadModule("hybrid", User::Find(creator)) != MOD_ERR_OK) diff --git a/modules/protocol/ratbox.cpp b/modules/protocol/ratbox.cpp index ef09b9553..5cc80742f 100644 --- a/modules/protocol/ratbox.cpp +++ b/modules/protocol/ratbox.cpp @@ -289,19 +289,41 @@ class ProtoRatbox : public Module } public: - ProtoRatbox(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, PROTOCOL | VENDOR), - ircd_proto(this), - message_away(this), message_capab(this), message_error(this), message_invite(this), message_kick(this), - message_kill(this), message_mode(this), message_motd(this), message_notice(this), message_part(this), - message_ping(this), message_privmsg(this), message_quit(this), message_squit(this), message_stats(this), - message_time(this), message_topic(this), message_version(this), message_whois(this), - - message_bmask("IRCDMessage", "ratbox/bmask", "hybrid/bmask"), message_join("IRCDMessage", "ratbox/join", "hybrid/join"), - message_nick("IRCDMessage", "ratbox/nick", "hybrid/nick"), message_pong("IRCDMessage", "ratbox/pong", "hybrid/pong"), - message_sid("IRCDMessage", "ratbox/sid", "hybrid/sid"), message_sjoin("IRCDMessage", "ratbox/sjoin", "hybrid/sjoin"), - message_tmode("IRCDMessage", "ratbox/tmode", "hybrid/tmode"), - - message_encap(this), message_pass(this), message_server(this), message_tburst(this), message_uid(this) + ProtoRatbox(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, PROTOCOL | VENDOR) + , ircd_proto(this) + , message_away(this) + , message_capab(this) + , message_error(this) + , message_invite(this) + , message_kick(this) + , message_kill(this) + , message_mode(this) + , message_motd(this) + , message_notice(this) + , message_part(this) + , message_ping(this) + , message_privmsg(this) + , message_quit(this) + , message_squit(this) + , message_stats(this) + , message_time(this) + , message_topic(this) + , message_version(this) + , message_whois(this) + + , message_bmask("IRCDMessage", "ratbox/bmask", "hybrid/bmask") + , message_join("IRCDMessage", "ratbox/join", "hybrid/join") + , message_nick("IRCDMessage", "ratbox/nick", "hybrid/nick") + , message_pong("IRCDMessage", "ratbox/pong", "hybrid/pong") + , message_sid("IRCDMessage", "ratbox/sid", "hybrid/sid") + , message_sjoin("IRCDMessage", "ratbox/sjoin", "hybrid/sjoin") + , message_tmode("IRCDMessage", "ratbox/tmode", "hybrid/tmode") + + , message_encap(this) + , message_pass(this) + , message_server(this) + , message_tburst(this) + , message_uid(this) { if (ModuleManager::LoadModule("hybrid", User::Find(creator)) != MOD_ERR_OK) diff --git a/modules/protocol/unreal.cpp b/modules/protocol/unreal.cpp index 395b4dfcc..eec4601ce 100644 --- a/modules/protocol/unreal.cpp +++ b/modules/protocol/unreal.cpp @@ -1091,6 +1091,11 @@ struct IRCDMessageUmode2 : IRCDMessage }; class ProtoUnreal : public Module + , public EventHook + , public EventHook + , public EventHook + , public EventHook + , public EventHook { UnrealIRCdProto ircd_proto; @@ -1173,22 +1178,53 @@ class ProtoUnreal : public Module } public: - ProtoUnreal(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, PROTOCOL | VENDOR), - ircd_proto(this), - message_away(this), message_error(this), message_invite(this), message_join(this), message_kick(this), - message_kill(this), message_motd(this), message_notice(this), message_part(this), message_ping(this), - message_privmsg(this), message_quit(this), message_squit(this), message_stats(this), message_time(this), - message_version(this), message_whois(this), - - message_capab(this), message_chghost(this), message_chgident(this), message_chgname(this), message_mode(this, "MODE"), - message_svsmode(this, "SVSMODE"), message_svs2mode(this, "SVS2MODE"), message_netinfo(this), message_nick(this), message_pong(this), - message_sasl(this), message_sdesc(this), message_sethost(this), message_setident(this), message_setname(this), message_server(this), - message_sjoin(this), message_topic(this), message_umode2(this) + ProtoUnreal(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, PROTOCOL | VENDOR) + , EventHook("OnUserNickChange", EventHook::Priority::FIRST) + , EventHook("OnChannelSync", EventHook::Priority::FIRST) + , EventHook("OnChanRegistered", EventHook::Priority::FIRST) + , EventHook("OnDelChan", EventHook::Priority::FIRST) + , EventHook("MLock", EventHook::Priority::FIRST) + , ircd_proto(this) + , message_away(this) + , message_error(this) + , message_invite(this) + , message_join(this) + , message_kick(this) + , message_kill(this) + , message_motd(this) + , message_notice(this) + , message_part(this) + , message_ping(this) + , message_privmsg(this) + , message_quit(this) + , message_squit(this) + , message_stats(this) + , message_time(this) + , message_version(this) + , message_whois(this) + + , message_capab(this) + , message_chghost(this) + , message_chgident(this) + , message_chgname(this) + , message_mode(this, "MODE") + , message_svsmode(this, "SVSMODE") + , message_svs2mode(this, "SVS2MODE") + , message_netinfo(this) + , message_nick(this) + , message_pong(this) + , message_sasl(this) + , message_sdesc(this) + , message_sethost(this) + , message_setident(this) + , message_setname(this) + , message_server(this) + , message_sjoin(this) + , message_topic(this) + , message_umode2(this) { this->AddModes(); - - ModuleManager::SetPriority(this, PRIORITY_FIRST); } void OnReload(Configuration::Conf *conf) override -- cgit