mirror of
https://github.com/anope/anope.git
synced 2026-06-28 12:56:39 +02:00
Automatically destruct messages when modules are unloaded
This commit is contained in:
@@ -304,20 +304,6 @@ namespace Anope
|
||||
*/
|
||||
extern CoreExport bool Match(const Anope::string &str, const Anope::string &mask, bool case_sensitive = false);
|
||||
|
||||
/** Add a message to Anope
|
||||
* @param name The message name as sent by the IRCd
|
||||
* @param func A callback function that will be called when this message is received
|
||||
* @return The new message object
|
||||
*/
|
||||
extern CoreExport Message *AddMessage(const string &name, bool (*func)(const string &source, const std::vector<Anope::string> ¶ms));
|
||||
|
||||
/** Deletes a message from Anope
|
||||
* XXX Im not sure what will happen if this function is called indirectly from message function pointed to by this message.. must check
|
||||
* @param m The message
|
||||
* @return true if the message was found and deleted, else false
|
||||
*/
|
||||
extern CoreExport bool DelMessage(Message *m);
|
||||
|
||||
/** Returns a list of pointers to message handlers
|
||||
* @param The message name as sent by the IRCd
|
||||
* @return a vector with pointers to the messagehandlers (you can bind more than one handler to a message)
|
||||
|
||||
@@ -1269,6 +1269,9 @@ struct Message
|
||||
{
|
||||
Anope::string name;
|
||||
bool (*func)(const Anope::string &source, const std::vector<Anope::string> ¶ms);
|
||||
|
||||
Message(const Anope::string &n, bool (*f)(const Anope::string &, const std::vector<Anope::string> &));
|
||||
~Message();
|
||||
};
|
||||
|
||||
#endif // MODULES_H
|
||||
|
||||
@@ -683,36 +683,6 @@ bool ChannelModeFlood::IsValid(const Anope::string &value) const
|
||||
return false;
|
||||
}
|
||||
|
||||
void moduleAddIRCDMsgs()
|
||||
{
|
||||
Anope::AddMessage("436", event_436);
|
||||
Anope::AddMessage("AWAY", event_away);
|
||||
Anope::AddMessage("JOIN", event_join);
|
||||
Anope::AddMessage("KICK", event_kick);
|
||||
Anope::AddMessage("KILL", event_kill);
|
||||
Anope::AddMessage("MODE", event_mode);
|
||||
Anope::AddMessage("MOTD", event_motd);
|
||||
Anope::AddMessage("NICK", event_nick);
|
||||
Anope::AddMessage("PART", event_part);
|
||||
Anope::AddMessage("PING", event_ping);
|
||||
Anope::AddMessage("PRIVMSG", event_privmsg);
|
||||
Anope::AddMessage("QUIT", event_quit);
|
||||
Anope::AddMessage("SERVER", event_server);
|
||||
Anope::AddMessage("SQUIT", event_squit);
|
||||
Anope::AddMessage("TOPIC", event_topic);
|
||||
Anope::AddMessage("WHOIS", event_whois);
|
||||
Anope::AddMessage("SVSMODE", event_mode);
|
||||
Anope::AddMessage("CAPAB", event_capab);
|
||||
Anope::AddMessage("CS", event_cs);
|
||||
Anope::AddMessage("HS", event_hs);
|
||||
Anope::AddMessage("MS", event_ms);
|
||||
Anope::AddMessage("NS", event_ns);
|
||||
Anope::AddMessage("OS", event_os);
|
||||
Anope::AddMessage("SJOIN", event_sjoin);
|
||||
Anope::AddMessage("ERROR", event_error);
|
||||
Anope::AddMessage("BURST", event_burst);
|
||||
}
|
||||
|
||||
static void AddModes()
|
||||
{
|
||||
/* Add user modes */
|
||||
@@ -752,8 +722,21 @@ static void AddModes()
|
||||
|
||||
class ProtoBahamut : public Module
|
||||
{
|
||||
Message message_436, message_away, message_join, message_kick, message_kill, message_mode, message_motd, message_nick,
|
||||
message_part, message_ping, message_privmsg, message_quit, message_server, message_squit, message_topic, message_whois,
|
||||
message_svsmode, message_capab, message_cs, message_hs, message_ms, message_ns, message_os, message_sjoin, message_error,
|
||||
message_burst;
|
||||
public:
|
||||
ProtoBahamut(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator)
|
||||
ProtoBahamut(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator),
|
||||
message_436("436", event_436), message_away("AWAY", event_away), message_join("JOIN", event_join),
|
||||
message_kick("KICK", event_kick), message_kill("KILL", event_kill), message_mode("MODE", event_mode),
|
||||
message_motd("MOTD", event_motd), message_nick("NICK", event_nick), message_part("PART", event_part),
|
||||
message_ping("PING", event_ping), message_privmsg("PRIVMSG", event_privmsg), message_quit("QUIT", event_quit),
|
||||
message_server("SERVER", event_server), message_squit("SQUIT", event_squit), message_topic("TOPIC", event_topic),
|
||||
message_whois("WHOIS", event_whois), message_svsmode("SVSMODE", event_mode), message_capab("CAPAB", event_capab),
|
||||
message_cs("CS", event_cs), message_hs("HS", event_hs), message_ms("MS", event_ms), message_ns("NS", event_ns),
|
||||
message_os("OS", event_os), message_sjoin("SJOIN", event_sjoin), message_error("ERROR", event_error),
|
||||
message_burst("BURST", event_burst)
|
||||
{
|
||||
this->SetAuthor("Anope");
|
||||
this->SetType(PROTOCOL);
|
||||
@@ -764,7 +747,6 @@ class ProtoBahamut : public Module
|
||||
for (unsigned i = 0; i < 6; ++i)
|
||||
Capab.SetFlag(c[i]);
|
||||
|
||||
moduleAddIRCDMsgs();
|
||||
AddModes();
|
||||
|
||||
pmodule_ircd_proto(&ircd_proto);
|
||||
|
||||
@@ -963,41 +963,6 @@ bool event_endburst(const Anope::string &source, const std::vector<Anope::string
|
||||
return true;
|
||||
}
|
||||
|
||||
void moduleAddIRCDMsgs()
|
||||
{
|
||||
Anope::AddMessage("ENDBURST", event_endburst);
|
||||
Anope::AddMessage("436", event_436);
|
||||
Anope::AddMessage("AWAY", event_away);
|
||||
Anope::AddMessage("JOIN", event_join);
|
||||
Anope::AddMessage("KICK", event_kick);
|
||||
Anope::AddMessage("KILL", event_kill);
|
||||
Anope::AddMessage("MODE", event_mode);
|
||||
Anope::AddMessage("MOTD", event_motd);
|
||||
Anope::AddMessage("NICK", event_nick);
|
||||
Anope::AddMessage("CAPAB", event_capab);
|
||||
Anope::AddMessage("PART", event_part);
|
||||
Anope::AddMessage("PING", event_ping);
|
||||
Anope::AddMessage("PRIVMSG", event_privmsg);
|
||||
Anope::AddMessage("QUIT", event_quit);
|
||||
Anope::AddMessage("SERVER", event_server);
|
||||
Anope::AddMessage("SQUIT", event_squit);
|
||||
Anope::AddMessage("RSQUIT", event_rsquit);
|
||||
Anope::AddMessage("TOPIC", event_topic);
|
||||
Anope::AddMessage("WHOIS", event_whois);
|
||||
Anope::AddMessage("SVSMODE", event_mode);
|
||||
Anope::AddMessage("FHOST", event_chghost);
|
||||
Anope::AddMessage("CHGIDENT", event_chgident);
|
||||
Anope::AddMessage("FNAME", event_chgname);
|
||||
Anope::AddMessage("SETHOST", event_sethost);
|
||||
Anope::AddMessage("SETIDENT", event_setident);
|
||||
Anope::AddMessage("SETNAME", event_setname);
|
||||
Anope::AddMessage("FJOIN", event_fjoin);
|
||||
Anope::AddMessage("FMODE", event_fmode);
|
||||
Anope::AddMessage("FTOPIC", event_ftopic);
|
||||
Anope::AddMessage("OPERTYPE", event_opertype);
|
||||
Anope::AddMessage("IDLE", event_idle);
|
||||
}
|
||||
|
||||
bool ChannelModeFlood::IsValid(const Anope::string &value) const
|
||||
{
|
||||
Anope::string rest;
|
||||
@@ -1020,8 +985,24 @@ static void AddModes()
|
||||
|
||||
class ProtoInspIRCd : public Module
|
||||
{
|
||||
Message message_endburst, message_436, message_away, message_join, message_kick, message_kill, message_mode, message_motd,
|
||||
message_nick, message_capab, message_part, message_ping, message_privmsg, message_quit, message_server, message_squit,
|
||||
message_rsquit, message_topic, message_whois, message_svsmode, message_chghost, message_chgident, message_chgname,
|
||||
message_sethost, message_setident, message_setname, message_fjoin, message_fmode, message_ftopic, message_opertype,
|
||||
message_idle;
|
||||
public:
|
||||
ProtoInspIRCd(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator)
|
||||
ProtoInspIRCd(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator),
|
||||
message_endburst("ENDBURST", event_endburst), message_436("436", event_436), message_away("AWAY", event_away),
|
||||
message_join("JOIN", event_join), message_kick("KICK", event_kick), message_kill("KILL", event_kill),
|
||||
message_mode("MODE", event_mode), message_motd("MOTD", event_motd), message_nick("NICK", event_nick),
|
||||
message_capab("CAPAB", event_capab), message_part("PART", event_part), message_ping("PING", event_ping),
|
||||
message_privmsg("PRIVMSG", event_privmsg), message_quit("QUIT", event_quit), message_server("SERVER", event_server),
|
||||
message_squit("SQUIT", event_squit), message_rsquit("RSQUIT", event_rsquit), message_topic("TOPIC", event_topic),
|
||||
message_whois("WHOIS", event_whois), message_svsmode("SVSMODE", event_mode), message_chghost("CHGHOST", event_chghost),
|
||||
message_chgident("CHGIDENT", event_chgident), message_chgname("CHGNAME", event_chgname),
|
||||
message_sethost("SETHOST", event_sethost), message_setident("SETIDENT", event_setident),
|
||||
message_setname("SETNAME", event_setname), message_fjoin("FJOIN", event_fjoin), message_fmode("FMODE", event_fmode),
|
||||
message_ftopic("FTOPIC", event_ftopic), message_opertype("OPERTYPE", event_opertype), message_idle("IDLE", event_idle)
|
||||
{
|
||||
this->SetAuthor("Anope");
|
||||
this->SetType(PROTOCOL);
|
||||
@@ -1035,7 +1016,6 @@ class ProtoInspIRCd : public Module
|
||||
AddModes();
|
||||
|
||||
pmodule_ircd_proto(&ircd_proto);
|
||||
moduleAddIRCDMsgs();
|
||||
|
||||
ModuleManager::Attach(I_OnUserNickChange, this);
|
||||
}
|
||||
|
||||
@@ -1155,7 +1155,7 @@ bool event_endburst(const Anope::string &source, const std::vector<Anope::string
|
||||
Server *s = Server::Find(source);
|
||||
|
||||
if (!s)
|
||||
throw new CoreException("Got ENDBURST without a source");
|
||||
throw CoreException("Got ENDBURST without a source");
|
||||
|
||||
/* Check if the previously introduced user was Id'd for the nickgroup of the nick he s currently using.
|
||||
* If not, validate the user. ~ Viper*/
|
||||
@@ -1181,44 +1181,6 @@ bool event_endburst(const Anope::string &source, const std::vector<Anope::string
|
||||
return true;
|
||||
}
|
||||
|
||||
void moduleAddIRCDMsgs()
|
||||
{
|
||||
Anope::AddMessage("ENDBURST", event_endburst);
|
||||
Anope::AddMessage("436", event_436);
|
||||
Anope::AddMessage("AWAY", event_away);
|
||||
Anope::AddMessage("JOIN", event_join);
|
||||
Anope::AddMessage("KICK", event_kick);
|
||||
Anope::AddMessage("KILL", event_kill);
|
||||
Anope::AddMessage("MODE", event_mode);
|
||||
Anope::AddMessage("MOTD", event_motd);
|
||||
Anope::AddMessage("NICK", event_nick);
|
||||
Anope::AddMessage("UID", event_uid);
|
||||
Anope::AddMessage("CAPAB", event_capab);
|
||||
Anope::AddMessage("PART", event_part);
|
||||
Anope::AddMessage("PING", event_ping);
|
||||
Anope::AddMessage("TIME", event_time);
|
||||
Anope::AddMessage("PRIVMSG", event_privmsg);
|
||||
Anope::AddMessage("QUIT", event_quit);
|
||||
Anope::AddMessage("SERVER", event_server);
|
||||
Anope::AddMessage("SQUIT", event_squit);
|
||||
Anope::AddMessage("RSQUIT", event_rsquit);
|
||||
Anope::AddMessage("TOPIC", event_topic);
|
||||
Anope::AddMessage("WHOIS", event_whois);
|
||||
Anope::AddMessage("SVSMODE", event_mode);
|
||||
Anope::AddMessage("FHOST", event_chghost);
|
||||
Anope::AddMessage("CHGIDENT", event_chgident);
|
||||
Anope::AddMessage("FNAME", event_chgname);
|
||||
Anope::AddMessage("SETHOST", event_sethost);
|
||||
Anope::AddMessage("SETIDENT", event_setident);
|
||||
Anope::AddMessage("SETNAME", event_setname);
|
||||
Anope::AddMessage("FJOIN", event_fjoin);
|
||||
Anope::AddMessage("FMODE", event_fmode);
|
||||
Anope::AddMessage("FTOPIC", event_ftopic);
|
||||
Anope::AddMessage("OPERTYPE", event_opertype);
|
||||
Anope::AddMessage("IDLE", event_idle);
|
||||
Anope::AddMessage("METADATA", event_metadata);
|
||||
}
|
||||
|
||||
bool ChannelModeFlood::IsValid(const Anope::string &value) const
|
||||
{
|
||||
Anope::string rest;
|
||||
@@ -1230,8 +1192,26 @@ bool ChannelModeFlood::IsValid(const Anope::string &value) const
|
||||
|
||||
class ProtoInspIRCd : public Module
|
||||
{
|
||||
Message message_endburst, message_436, message_away, message_join, message_kick, message_kill, message_mode, message_motd,
|
||||
message_nick, message_uid, message_capab, message_part, message_ping, message_time, message_privmsg, message_quit,
|
||||
message_server, message_squit, message_rsquit, message_topic, message_whois, message_svsmode, message_fhost,
|
||||
message_chgident, message_fname, message_sethost, message_setident, message_setname, message_fjoin, message_fmode,
|
||||
message_ftopic, message_opertype, message_idle, message_metadata;
|
||||
public:
|
||||
ProtoInspIRCd(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator)
|
||||
ProtoInspIRCd(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator),
|
||||
message_endburst("ENDBURST", event_endburst), message_436("436", event_436), message_away("AWAY", event_away),
|
||||
message_join("JOIN", event_join), message_kick("KICK", event_kick), message_kill("KILL", event_kill),
|
||||
message_mode("MODE", event_mode), message_motd("MOTD", event_motd), message_nick("NICK", event_nick),
|
||||
message_uid("UID", event_uid), message_capab("CAPAB", event_capab), message_part("PART", event_part),
|
||||
message_ping("PING", event_ping), message_time("TIME", event_time), message_privmsg("PRIVMSG", event_privmsg),
|
||||
message_quit("QUIT", event_quit), message_server("SERVER", event_server), message_squit("SQUIT", event_squit),
|
||||
message_rsquit("RSQUIT", event_rsquit), message_topic("TOPIC", event_topic), message_whois("WHOIS", event_whois),
|
||||
message_svsmode("SVSMODE", event_mode), message_fhost("FHOST", event_chghost),
|
||||
message_chgident("CHGIDENT", event_chgident), message_fname("FNAME", event_chgname),
|
||||
message_sethost("SETHOST", event_sethost), message_setident("SETIDENT", event_setident),
|
||||
message_setname("SETNAME", event_setname), message_fjoin("FJOIN", event_fjoin), message_fmode("FMODE", event_fmode),
|
||||
message_ftopic("FTOPIC", event_ftopic), message_opertype("OPERTYPE", event_opertype), message_idle("IDLE", event_idle),
|
||||
message_metadata("METADATA", event_metadata)
|
||||
{
|
||||
this->SetAuthor("Anope");
|
||||
this->SetType(PROTOCOL);
|
||||
@@ -1246,7 +1226,6 @@ class ProtoInspIRCd : public Module
|
||||
Capab.SetFlag(c[i]);
|
||||
|
||||
pmodule_ircd_proto(&ircd_proto);
|
||||
moduleAddIRCDMsgs();
|
||||
|
||||
ModuleManager::Attach(I_OnUserNickChange, this);
|
||||
}
|
||||
|
||||
@@ -1154,44 +1154,6 @@ bool event_endburst(const Anope::string &source, const std::vector<Anope::string
|
||||
return true;
|
||||
}
|
||||
|
||||
void moduleAddIRCDMsgs()
|
||||
{
|
||||
Anope::AddMessage("ENDBURST", event_endburst);
|
||||
Anope::AddMessage("436", event_436);
|
||||
Anope::AddMessage("AWAY", event_away);
|
||||
Anope::AddMessage("JOIN", event_join);
|
||||
Anope::AddMessage("KICK", event_kick);
|
||||
Anope::AddMessage("KILL", event_kill);
|
||||
Anope::AddMessage("MODE", event_mode);
|
||||
Anope::AddMessage("MOTD", event_motd);
|
||||
Anope::AddMessage("NICK", event_nick);
|
||||
Anope::AddMessage("UID", event_uid);
|
||||
Anope::AddMessage("CAPAB", event_capab);
|
||||
Anope::AddMessage("PART", event_part);
|
||||
Anope::AddMessage("PING", event_ping);
|
||||
Anope::AddMessage("TIME", event_time);
|
||||
Anope::AddMessage("PRIVMSG", event_privmsg);
|
||||
Anope::AddMessage("QUIT", event_quit);
|
||||
Anope::AddMessage("SERVER", event_server);
|
||||
Anope::AddMessage("SQUIT", event_squit);
|
||||
Anope::AddMessage("RSQUIT", event_rsquit);
|
||||
Anope::AddMessage("TOPIC", event_topic);
|
||||
Anope::AddMessage("WHOIS", event_whois);
|
||||
Anope::AddMessage("SVSMODE", event_mode);
|
||||
Anope::AddMessage("FHOST", event_chghost);
|
||||
Anope::AddMessage("FIDENT", event_chgident);
|
||||
Anope::AddMessage("FNAME", event_chgname);
|
||||
Anope::AddMessage("SETHOST", event_sethost);
|
||||
Anope::AddMessage("SETIDENT", event_setident);
|
||||
Anope::AddMessage("SETNAME", event_setname);
|
||||
Anope::AddMessage("FJOIN", event_fjoin);
|
||||
Anope::AddMessage("FMODE", event_fmode);
|
||||
Anope::AddMessage("FTOPIC", event_ftopic);
|
||||
Anope::AddMessage("OPERTYPE", event_opertype);
|
||||
Anope::AddMessage("IDLE", event_idle);
|
||||
Anope::AddMessage("METADATA", event_metadata);
|
||||
}
|
||||
|
||||
bool ChannelModeFlood::IsValid(const Anope::string &value) const
|
||||
{
|
||||
//char *dp, *end;
|
||||
@@ -1204,8 +1166,26 @@ bool ChannelModeFlood::IsValid(const Anope::string &value) const
|
||||
|
||||
class ProtoInspIRCd : public Module
|
||||
{
|
||||
Message message_endburst, message_436, message_away, message_join, message_kick, message_kill, message_mode, message_motd,
|
||||
message_nick, message_uid, message_capab, message_part, message_ping, message_time, message_privmsg, message_quit,
|
||||
message_server, message_squit, message_rsquit, message_topic, message_whois, message_svsmode, message_fhost,
|
||||
message_chgident, message_fname, message_sethost, message_setident, message_setname, message_fjoin, message_fmode,
|
||||
message_ftopic, message_opertype, message_idle, message_metadata;
|
||||
public:
|
||||
ProtoInspIRCd(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator)
|
||||
ProtoInspIRCd(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator),
|
||||
message_endburst("ENDBURST", event_endburst), message_436("436", event_436), message_away("AWAY", event_away),
|
||||
message_join("JOIN", event_join), message_kick("KICK", event_kick), message_kill("KILL", event_kill),
|
||||
message_mode("MODE", event_mode), message_motd("MOTD", event_motd), message_nick("NICK", event_nick),
|
||||
message_uid("UID", event_uid), message_capab("CAPAB", event_capab), message_part("PART", event_part),
|
||||
message_ping("PING", event_ping), message_time("TIME", event_time), message_privmsg("PRIVMSG", event_privmsg),
|
||||
message_quit("QUIT", event_quit), message_server("SERVER", event_server), message_squit("SQUIT", event_squit),
|
||||
message_rsquit("RSQUIT", event_rsquit), message_topic("TOPIC", event_topic), message_whois("WHOIS", event_whois),
|
||||
message_svsmode("SVSMODE", event_mode), message_fhost("FHOST", event_chghost),
|
||||
message_chgident("FIDENT", event_chgident), message_fname("FNAME", event_chgname),
|
||||
message_sethost("SETHOST", event_sethost), message_setident("SETIDENT", event_setident),
|
||||
message_setname("SETNAME", event_setname), message_fjoin("FJOIN", event_fjoin), message_fmode("FMODE", event_fmode),
|
||||
message_ftopic("FTOPIC", event_ftopic), message_opertype("OPERTYPE", event_opertype), message_idle("IDLE", event_idle),
|
||||
message_metadata("METADATA", event_metadata)
|
||||
{
|
||||
this->SetAuthor("Anope");
|
||||
this->SetType(PROTOCOL);
|
||||
@@ -1220,7 +1200,6 @@ class ProtoInspIRCd : public Module
|
||||
Capab.SetFlag(c[i]);
|
||||
|
||||
pmodule_ircd_proto(&ircd_proto);
|
||||
moduleAddIRCDMsgs();
|
||||
|
||||
ModuleManager::Attach(I_OnUserNickChange, this);
|
||||
}
|
||||
|
||||
+14
-31
@@ -658,35 +658,6 @@ bool event_error(const Anope::string &source, const std::vector<Anope::string> &
|
||||
return true;
|
||||
}
|
||||
|
||||
void moduleAddIRCDMsgs()
|
||||
{
|
||||
Anope::AddMessage("436", event_436);
|
||||
Anope::AddMessage("AWAY", event_away);
|
||||
Anope::AddMessage("JOIN", event_join);
|
||||
Anope::AddMessage("KICK", event_kick);
|
||||
Anope::AddMessage("KILL", event_kill);
|
||||
Anope::AddMessage("MODE", event_mode);
|
||||
Anope::AddMessage("TMODE", event_tmode);
|
||||
Anope::AddMessage("MOTD", event_motd);
|
||||
Anope::AddMessage("NICK", event_nick);
|
||||
Anope::AddMessage("BMASK", event_bmask);
|
||||
Anope::AddMessage("UID", event_nick);
|
||||
Anope::AddMessage("PART", event_part);
|
||||
Anope::AddMessage("PASS", event_pass);
|
||||
Anope::AddMessage("PING", event_ping);
|
||||
Anope::AddMessage("PRIVMSG", event_privmsg);
|
||||
Anope::AddMessage("QUIT", event_quit);
|
||||
Anope::AddMessage("SERVER", event_server);
|
||||
Anope::AddMessage("SQUIT", event_squit);
|
||||
Anope::AddMessage("TOPIC", event_topic);
|
||||
Anope::AddMessage("TB", event_tburst);
|
||||
Anope::AddMessage("WHOIS", event_whois);
|
||||
Anope::AddMessage("CAPAB", event_capab);
|
||||
Anope::AddMessage("SJOIN", event_sjoin);
|
||||
Anope::AddMessage("ERROR", event_error);
|
||||
Anope::AddMessage("SID", event_sid);
|
||||
}
|
||||
|
||||
static void AddModes()
|
||||
{
|
||||
/* Add user modes */
|
||||
@@ -718,8 +689,21 @@ static void AddModes()
|
||||
|
||||
class ProtoRatbox : public Module
|
||||
{
|
||||
Message message_436, message_away, message_join, message_kick, message_kill, message_mode, message_tmode, message_motd,
|
||||
message_nick, message_bmask, message_uid, message_part, message_pass, message_ping, message_privmsg, message_quit,
|
||||
message_server, message_squit, message_topic, message_tb, message_whois, message_capab, message_sjoin, message_error,
|
||||
message_sid;
|
||||
public:
|
||||
ProtoRatbox(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator)
|
||||
ProtoRatbox(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator),
|
||||
message_436("436", event_436), message_away("AWAY", event_away), message_join("JOIN", event_join),
|
||||
message_kick("KICK", event_kick), message_kill("KILL", event_kill), message_mode("MODE", event_mode),
|
||||
message_tmode("TMODE", event_tmode), message_motd("MOTD", event_motd), message_nick("NICK", event_nick),
|
||||
message_bmask("BMASK", event_bmask), message_uid("UID", event_nick), message_part("PART", event_part),
|
||||
message_pass("PASS", event_pass), message_ping("PING", event_ping), message_privmsg("PRIVMSG", event_privmsg),
|
||||
message_quit("QUIT", event_quit), message_server("SERVER", event_server), message_squit("SQUIT", event_squit),
|
||||
message_topic("TOPIC", event_topic), message_tb("TB", event_tburst), message_whois("WHOIS", event_whois),
|
||||
message_capab("CAPAB", event_capab), message_sjoin("SJOIN", event_sjoin), message_error("ERROR", event_error),
|
||||
message_sid("SID", event_sid)
|
||||
{
|
||||
this->SetAuthor("Anope");
|
||||
this->SetType(PROTOCOL);
|
||||
@@ -736,7 +720,6 @@ class ProtoRatbox : public Module
|
||||
AddModes();
|
||||
|
||||
pmodule_ircd_proto(&ircd_proto);
|
||||
moduleAddIRCDMsgs();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -917,9 +917,8 @@ bool event_privmsg(const Anope::string &source, const std::vector<Anope::string>
|
||||
|
||||
bool event_part(const Anope::string &source, const std::vector<Anope::string> ¶ms)
|
||||
{
|
||||
if (params.size() < 1 || params.size() > 2)
|
||||
return true;
|
||||
do_part(source, params[0], params[1]);
|
||||
if (!params.empty())
|
||||
do_part(source, params[0], params.size() > 1 ? params[1] : "");
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1082,76 +1081,6 @@ bool event_sjoin(const Anope::string &source, const std::vector<Anope::string> &
|
||||
return true;
|
||||
}
|
||||
|
||||
void moduleAddIRCDMsgs()
|
||||
{
|
||||
Anope::AddMessage("436", event_436);
|
||||
Anope::AddMessage("AWAY", event_away);
|
||||
Anope::AddMessage("6", event_away);
|
||||
Anope::AddMessage("JOIN", event_join);
|
||||
Anope::AddMessage("C", event_join);
|
||||
Anope::AddMessage("KICK", event_kick);
|
||||
Anope::AddMessage("H", event_kick);
|
||||
Anope::AddMessage("KILL", event_kill);
|
||||
Anope::AddMessage(".", event_kill);
|
||||
Anope::AddMessage("MODE", event_mode);
|
||||
Anope::AddMessage("G", event_mode);
|
||||
Anope::AddMessage("MOTD", event_motd);
|
||||
Anope::AddMessage("F", event_motd);
|
||||
Anope::AddMessage("NICK", event_nick);
|
||||
Anope::AddMessage("&", event_nick);
|
||||
Anope::AddMessage("PART", event_part);
|
||||
Anope::AddMessage("D", event_part);
|
||||
Anope::AddMessage("PING", event_ping);
|
||||
Anope::AddMessage("8", event_ping);
|
||||
Anope::AddMessage("PONG", event_pong);
|
||||
Anope::AddMessage("9", event_pong);
|
||||
Anope::AddMessage("PRIVMSG", event_privmsg);
|
||||
Anope::AddMessage("!", event_privmsg);
|
||||
Anope::AddMessage("QUIT", event_quit);
|
||||
Anope::AddMessage(",", event_quit);
|
||||
Anope::AddMessage("SERVER", event_server);
|
||||
Anope::AddMessage("'", event_server);
|
||||
Anope::AddMessage("SQUIT", event_squit);
|
||||
Anope::AddMessage("-", event_squit);
|
||||
Anope::AddMessage("TOPIC", event_topic);
|
||||
Anope::AddMessage(")", event_topic);
|
||||
Anope::AddMessage("SVSMODE", event_mode);
|
||||
Anope::AddMessage("n", event_mode);
|
||||
Anope::AddMessage("SVS2MODE", event_mode);
|
||||
Anope::AddMessage("v", event_mode);
|
||||
Anope::AddMessage("WHOIS", event_whois);
|
||||
Anope::AddMessage("#", event_whois);
|
||||
Anope::AddMessage("PROTOCTL", event_capab);
|
||||
Anope::AddMessage("_", event_capab);
|
||||
Anope::AddMessage("CHGHOST", event_chghost);
|
||||
Anope::AddMessage("AL", event_chghost);
|
||||
Anope::AddMessage("CHGIDENT", event_chgident);
|
||||
Anope::AddMessage("AZ", event_chgident);
|
||||
Anope::AddMessage("CHGNAME", event_chgname);
|
||||
Anope::AddMessage("BK", event_chgname);
|
||||
Anope::AddMessage("NETINFO", event_netinfo);
|
||||
Anope::AddMessage("AO", event_netinfo);
|
||||
Anope::AddMessage("SETHOST", event_sethost);
|
||||
Anope::AddMessage("AA", event_sethost);
|
||||
Anope::AddMessage("SETIDENT", event_setident);
|
||||
Anope::AddMessage("AD", event_setident);
|
||||
Anope::AddMessage("SETNAME", event_setname);
|
||||
Anope::AddMessage("AE", event_setname);
|
||||
Anope::AddMessage("ERROR", event_error);
|
||||
Anope::AddMessage("5", event_error);
|
||||
Anope::AddMessage("UMODE2", event_umode2);
|
||||
Anope::AddMessage("|", event_umode2);
|
||||
Anope::AddMessage("SJOIN", event_sjoin);
|
||||
Anope::AddMessage("~", event_sjoin);
|
||||
Anope::AddMessage("SDESC", event_sdesc);
|
||||
Anope::AddMessage("AG", event_sdesc);
|
||||
|
||||
/* The non token version of these is in messages.c */
|
||||
Anope::AddMessage("2", m_stats);
|
||||
Anope::AddMessage(">", m_time);
|
||||
Anope::AddMessage("+", m_version);
|
||||
}
|
||||
|
||||
/* Borrowed part of this check from UnrealIRCd */
|
||||
bool ChannelModeFlood::IsValid(const Anope::string &value) const
|
||||
{
|
||||
@@ -1228,8 +1157,44 @@ static void AddModes()
|
||||
|
||||
class ProtoUnreal : public Module
|
||||
{
|
||||
Message message_436, message_away, message_away2, message_join, message_join2, message_kick, message_kick2,
|
||||
message_kill, message_kill2, message_mode, message_mode2, message_nick, message_nick2, message_part,
|
||||
message_part2, message_ping, message_ping2, message_pong, message_pong2, message_privmsg, message_privmsg2,
|
||||
message_quit, message_quit2, message_server, message_server2, message_squit, message_squit2, message_topic,
|
||||
message_topic2, message_svsmode, message_svsmode2, message_svs2mode, message_svs2mode2, message_whois, message_whois2,
|
||||
message_capab, message_capab2, message_chghost, message_chghost2, message_chgident, message_chgident2,
|
||||
message_chgname, message_chgname2, message_netinfo, message_netinfo2, message_sethost, message_sethost2,
|
||||
message_setident, message_setident2, message_setname, message_setname2, message_error, message_error2,
|
||||
message_umode2, message_umode22, message_sjoin, message_sjoin2, message_sdesc, message_sdesc2;
|
||||
|
||||
/* Non-token of these in messages.cpp */
|
||||
Message message_stats, message_time, message_version;
|
||||
public:
|
||||
ProtoUnreal(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator)
|
||||
ProtoUnreal(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator),
|
||||
message_436("436", event_436), message_away("AWAY", event_away), message_away2("6", event_away),
|
||||
message_join("JOIN", event_join), message_join2("C", event_join), message_kick("KICK", event_kick),
|
||||
message_kick2("H", event_kick), message_kill("KILL", event_kill), message_kill2(".", event_kill),
|
||||
message_mode("MODE", event_mode), message_mode2("G", event_mode), message_nick("NICK", event_nick),
|
||||
message_nick2("&", event_nick), message_part("PART", event_part), message_part2("D", event_part),
|
||||
message_ping("PING", event_ping), message_ping2("8", event_ping), message_pong("PONG", event_pong),
|
||||
message_pong2("9", event_pong), message_privmsg("PRIVMSG", event_privmsg), message_privmsg2("!", event_privmsg),
|
||||
message_quit("QUIT", event_quit), message_quit2(",", event_quit), message_server("SERVER", event_server),
|
||||
message_server2("'", event_server), message_squit("SQUIT", event_squit), message_squit2("-", event_squit),
|
||||
message_topic("TOPIC", event_topic), message_topic2(")", event_topic), message_svsmode("SVSMODE", event_mode),
|
||||
message_svsmode2("n", event_mode), message_svs2mode("SVS2MODE", event_mode), message_svs2mode2("v", event_mode),
|
||||
message_whois("WHOIS", event_whois), message_whois2("#", event_whois), message_capab("PROTOCTL", event_capab),
|
||||
message_capab2("_", event_capab), message_chghost("CHGHOST", event_chghost), message_chghost2("AL", event_chghost),
|
||||
message_chgident("CHGIDENT", event_chgident), message_chgident2("AZ", event_chgident),
|
||||
message_chgname("CHGNAME", event_chgname), message_chgname2("BK", event_chgname),
|
||||
message_netinfo("NETINFO", event_netinfo), message_netinfo2("AO", event_netinfo),
|
||||
message_sethost("SETHOST", event_sethost), message_sethost2("AA", event_sethost),
|
||||
message_setident("SETIDENT", event_setident), message_setident2("AD", event_setident),
|
||||
message_setname("SETNAME", event_setname), message_setname2("AE", event_setname),
|
||||
message_error("ERROR", event_error), message_error2("5", event_error), message_umode2("UMODE2", event_umode2),
|
||||
message_umode22("|", event_umode2), message_sjoin("SJOIN", event_sjoin), message_sjoin2("~", event_sjoin),
|
||||
message_sdesc("SDESC", event_sdesc), message_sdesc2("AG", event_sdesc),
|
||||
|
||||
message_stats("2", m_stats), message_time(">", m_time), message_version("+", m_version)
|
||||
{
|
||||
this->SetAuthor("Anope");
|
||||
this->SetType(PROTOCOL);
|
||||
@@ -1243,7 +1208,6 @@ class ProtoUnreal : public Module
|
||||
AddModes();
|
||||
|
||||
pmodule_ircd_proto(&ircd_proto);
|
||||
moduleAddIRCDMsgs();
|
||||
|
||||
ModuleManager::Attach(I_OnUserNickChange, this);
|
||||
}
|
||||
|
||||
@@ -14,11 +14,6 @@
|
||||
|
||||
Uplink *uplink_server;
|
||||
|
||||
extern void moduleAddMsgs();
|
||||
extern void moduleAddIRCDMsgs();
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
void introduce_user(const Anope::string &user)
|
||||
{
|
||||
/* Watch out for infinite loops... */
|
||||
@@ -379,9 +374,6 @@ void Init(int ac, char **av)
|
||||
throw FatalException(ex.GetReason());
|
||||
}
|
||||
|
||||
/* Add Core MSG handles */
|
||||
moduleAddMsgs();
|
||||
|
||||
#ifndef _WIN32
|
||||
if (!nofork)
|
||||
{
|
||||
|
||||
+4
-7
@@ -304,10 +304,7 @@ int m_whois(const Anope::string &source, const Anope::string &who)
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
/* *INDENT-OFF* */
|
||||
void moduleAddMsgs()
|
||||
{
|
||||
Anope::AddMessage("STATS", m_stats);
|
||||
Anope::AddMessage("TIME", m_time);
|
||||
Anope::AddMessage("VERSION", m_version);
|
||||
}
|
||||
Message message_stats("STATS", m_stats);
|
||||
Message message_time("TIME", m_time);
|
||||
Message message_verssion("VERSION", m_version);
|
||||
|
||||
|
||||
+12
-27
@@ -87,49 +87,34 @@ Module *FindModule(const Anope::string &name)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/** Add a message to Anope
|
||||
* @param name The message name as sent by the IRCd
|
||||
* @param func A callback function that will be called when this message is received
|
||||
* @return The new message object
|
||||
/** Message constructor, adds the message to Anope
|
||||
* @param n The message name
|
||||
* @param f A callback function
|
||||
*/
|
||||
Message *Anope::AddMessage(const Anope::string &name, bool (*func)(const Anope::string &source, const std::vector<Anope::string> ¶ms))
|
||||
Message::Message(const Anope::string &n, bool (*f)(const Anope::string &, const std::vector<Anope::string> &)) : name(n), func(f)
|
||||
{
|
||||
Message *m = new Message();
|
||||
|
||||
m->name = name;
|
||||
m->func = func;
|
||||
|
||||
MessageMap.insert(std::make_pair(m->name, m));
|
||||
|
||||
return m;
|
||||
MessageMap.insert(std::make_pair(this->name, this));
|
||||
}
|
||||
|
||||
/** Deletes a message from Anope
|
||||
* XXX Im not sure what will happen if this function is called indirectly from a message function pointed to by this message and there
|
||||
* is more than one hook for this message.. must check
|
||||
* @param m The message
|
||||
* @return true if the message was found and deleted, else false
|
||||
/** Message destructor
|
||||
*/
|
||||
bool Anope::DelMessage(Message *m)
|
||||
Message::~Message()
|
||||
{
|
||||
message_map::iterator it = MessageMap.find(m->name);
|
||||
message_map::iterator it = MessageMap.find(this->name);
|
||||
|
||||
if (it == MessageMap.end())
|
||||
return false;
|
||||
return;
|
||||
|
||||
message_map::iterator upper = MessageMap.upper_bound(m->name);
|
||||
message_map::iterator upper = MessageMap.upper_bound(this->name);
|
||||
|
||||
for (; it != upper; ++it)
|
||||
{
|
||||
if (it->second == m)
|
||||
if (it->second == this)
|
||||
{
|
||||
delete m;
|
||||
MessageMap.erase(it);
|
||||
return true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/** Find message in the message table
|
||||
|
||||
Reference in New Issue
Block a user