#include "users.h"
#include "channels.h"
#include "modules.h"
-#include "helperfuncs.h"
+
+#include "wildcard.h"
+#include "inspircd.h"
/* $ModDesc: Provides support for easily creating listmodes, stores the time set, the user, and a parameter. */
class ListModeBase : public ModeHandler
{
protected:
- Server* Srv;
std::string infokey;
std::string listnumeric;
std::string endoflistnumeric;
limitlist chanlimits;
public:
- ListModeBase(Server* serv, char modechar, const std::string &eolstr, const std::string &lnum, const std::string &eolnum, bool autotidy, const std::string &ctag = "banlist")
- : ModeHandler(modechar, 1, 1, true, MODETYPE_CHANNEL, false), Srv(serv), listnumeric(lnum), endoflistnumeric(eolnum), endofliststring(eolstr), tidy(autotidy), configtag(ctag)
+ ListModeBase(InspIRCd* Instance, char modechar, const std::string &eolstr, const std::string &lnum, const std::string &eolnum, bool autotidy, const std::string &ctag = "banlist")
+ : ModeHandler(Instance, modechar, 1, 1, true, MODETYPE_CHANNEL, false), listnumeric(lnum), endoflistnumeric(eolnum), endofliststring(eolstr), tidy(autotidy), configtag(ctag)
{
this->DoRehash();
infokey = "exceptionbase_mode_" + std::string(1, mode) + "_list";
{
for(modelist::iterator it = el->begin(); it != el->end(); it++)
{
- WriteServ(user->fd, "%s %s %s %s %s %s", listnumeric.c_str(), user->nick, channel->name, it->mask.c_str(), it->nick.c_str(), it->time.c_str());
+ user->WriteServ( "%s %s %s %s %s %s", listnumeric.c_str(), user->nick, channel->name, it->mask.c_str(), it->nick.c_str(), it->time.c_str());
}
}
- WriteServ(user->fd, "%s %s %s %s", endoflistnumeric.c_str(), user->nick, channel->name, endofliststring.c_str());
+ user->WriteServ( "%s %s %s %s", endoflistnumeric.c_str(), user->nick, channel->name, endofliststring.c_str());
}
virtual void DoRehash()
{
- ConfigReader Conf;
+ ConfigReader Conf(ServerInstance);
chanlimits.clear();
limit.limit = Conf.ReadInteger(configtag, "limit", i, true);
if(limit.mask.size() && limit.limit > 0)
- {
chanlimits.push_back(limit);
- log(DEBUG, "Read channel listmode limit of %u for mask '%s'", limit.limit, limit.mask.c_str());
- }
- else
- {
- log(DEBUG, "Invalid tag");
- }
}
if(chanlimits.size() == 0)
{
for (limitlist::iterator it = chanlimits.begin(); it != chanlimits.end(); it++)
{
- if (Srv->MatchText(channel->name, it->mask))
+ if (match(channel->name, it->mask.c_str()))
{
// We have a pattern matching the channel...
maxsize = el->size();
/* List is full, give subclass a chance to send a custom message */
if(!TellListTooLong(source, channel, parameter))
{
- WriteServ(source->fd, "478 %s %s %s :Channel ban/ignore list is full", source->nick, channel->name, parameter.c_str());
+ source->WriteServ("478 %s %s %s :Channel ban/ignore list is full", source->nick, channel->name, parameter.c_str());
}
parameter = "";