* | Inspire Internet Relay Chat Daemon |
* +------------------------------------+
*
- * InspIRCd: (C) 2002-2008 InspIRCd Development Team
- * See: http://www.inspircd.org/wiki/index.php/Credits
+ * InspIRCd: (C) 2002-2010 InspIRCd Development Team
+ * See: http://wiki.inspircd.org/Credits
*
* This program is free but copyrighted software; see
* the file COPYING for details.
/* $ModDesc: Logs snomask output to channel(s). */
-/*
- * This is for the "old" chanlog module which intercepted messages going to the logfile..
- * I don't consider it all that useful, and it's quite dangerous if setup incorrectly, so
- * this is defined out but left intact in case someone wants to develop it further someday.
- *
- * -- w00t (aug 23rd, 2008)
- */
-#define OLD_CHANLOG 0
-
-#if OLD_CHANLOG
-class ChannelLogStream : public LogStream
-{
- private:
- std::string channel;
-
- public:
- ChannelLogStream(InspIRCd *Instance, int loglevel, const std::string &chan) : LogStream(Instance, loglevel), channel(chan)
- {
- }
-
- virtual void OnLog(int loglevel, const std::string &type, const std::string &msg)
- {
- Channel *c = ServerInstance->FindChan(channel);
- static bool Logging = false;
-
- if (loglevel < this->loglvl)
- return;
-
- if (Logging)
- return;
-
- if (c)
- {
- Logging = true; // this avoids (rare chance) loops with logging server IO on networks
- char buf[MAXBUF];
- snprintf(buf, MAXBUF, "\2%s\2: %s", type.c_str(), msg.c_str());
-
- c->WriteChannelWithServ(ServerInstance->Config->ServerName, "PRIVMSG %s :%s", c->name.c_str(), buf);
- ServerInstance->PI->SendChannelPrivmsg(c, 0, buf);
- Logging = false;
- }
- }
-};
-#endif
-
class ModuleChanLog : public Module
{
private:
std::multimap<char, std::string> logstreams;
public:
- ModuleChanLog(InspIRCd* Me) : Module(Me)
- {
+ ModuleChanLog() {
Implementation eventlist[] = { I_OnRehash, I_OnSendSnotice };
ServerInstance->Modules->Attach(eventlist, this, 2);
- OnRehash(NULL, "");
+ OnRehash(NULL);
}
virtual ~ModuleChanLog()
{
}
- virtual void OnRehash(User *user, const std::string ¶meter)
+ virtual void OnRehash(User *user)
{
- ConfigReader MyConf(ServerInstance);
+ ConfigReader MyConf;
std::string snomasks;
std::string channel;
continue;
}
- for (std::string::const_iterator it = snomasks.begin(); it != snomasks.end(); i++)
+ for (std::string::const_iterator it = snomasks.begin(); it != snomasks.end(); it++)
{
logstreams.insert(std::make_pair(*it, channel));
ServerInstance->Logs->Log("m_chanlog", DEFAULT, "Logging %c to %s", *it, channel.c_str());
- it++;
}
}
}
- virtual int OnSendSnotice(char &sno, std::string &desc, const std::string &msg)
+ virtual ModResult OnSendSnotice(char &sno, std::string &desc, const std::string &msg)
{
std::multimap<char, std::string>::const_iterator it = logstreams.find(sno);
char buf[MAXBUF];
if (it == logstreams.end())
- return 0;
+ return MOD_RES_PASSTHRU;
snprintf(buf, MAXBUF, "\2%s\2: %s", desc.c_str(), msg.c_str());
Channel *c = ServerInstance->FindChan(it->second);
if (c)
{
- c->WriteChannelWithServ(ServerInstance->Config->ServerName, "PRIVMSG %s :%s", c->name.c_str(), buf);
+ c->WriteChannelWithServ(ServerInstance->Config->ServerName.c_str(), "PRIVMSG %s :%s", c->name.c_str(), buf);
ServerInstance->PI->SendChannelPrivmsg(c, 0, buf);
}
it++;
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual Version GetVersion()
{
- return Version(1,2,0,1,VF_VENDOR,API_VERSION);
+ return Version("Logs snomask output to channel(s).", VF_VENDOR);
}
};
MODULE_INIT(ModuleChanLog)
+
+
+
+
+
+
+
+
+/*
+ * This is for the "old" chanlog module which intercepted messages going to the logfile..
+ * I don't consider it all that useful, and it's quite dangerous if setup incorrectly, so
+ * this is defined out but left intact in case someone wants to develop it further someday.
+ *
+ * -- w00t (aug 23rd, 2008)
+ */
+#define OLD_CHANLOG 0
+
+#if OLD_CHANLOG
+class ChannelLogStream : public LogStream
+{
+ private:
+ std::string channel;
+
+ public:
+ ChannelLogStream(int loglevel, const std::string &chan) : LogStream(loglevel), channel(chan)
+ {
+ }
+
+ virtual void OnLog(int loglevel, const std::string &type, const std::string &msg)
+ {
+ Channel *c = ServerInstance->FindChan(channel);
+ static bool Logging = false;
+
+ if (loglevel < this->loglvl)
+ return;
+
+ if (Logging)
+ return;
+
+ if (c)
+ {
+ Logging = true; // this avoids (rare chance) loops with logging server IO on networks
+ char buf[MAXBUF];
+ snprintf(buf, MAXBUF, "\2%s\2: %s", type.c_str(), msg.c_str());
+
+ c->WriteChannelWithServ(ServerInstance->Config->ServerName.c_str(), "PRIVMSG %s :%s", c->name.c_str(), buf);
+ ServerInstance->PI->SendChannelPrivmsg(c, 0, buf);
+ Logging = false;
+ }
+ }
+};
+#endif
+