* | Inspire Internet Relay Chat Daemon |
* +------------------------------------+
*
- * InspIRCd: (C) 2002-2009 InspIRCd Development Team
+ * InspIRCd: (C) 2002-2010 InspIRCd Development Team
* See: http://wiki.inspircd.org/Credits
*
* This program is free but copyrighted software; see
*/
virtual void DoRehash()
{
- ConfigReader Conf;
+ ConfigTagList tags = ServerInstance->Config->ConfTags(configtag);
chanlimits.clear();
- for (int i = 0; i < Conf.Enumerate(configtag); i++)
+ for (ConfigIter i = tags.first; i != tags.second; i++)
{
// For each <banlist> tag
+ ConfigTag* c = i->second;
ListLimit limit;
- limit.mask = Conf.ReadValue(configtag, "chan", i);
- limit.limit = Conf.ReadInteger(configtag, "limit", i, true);
+ limit.mask = c->getString("chan");
+ limit.limit = c->getInt("limit");
if (limit.mask.size() && limit.limit > 0)
chanlimits.push_back(limit);
if (adding)
{
+ if (tidy)
+ ModeParser::CleanMask(parameter);
+
+ if (parameter.length() > 250)
+ return MODEACTION_DENY;
+
// If there was no list
if (!el)
{
extItem.set(channel, el);
}
- // Clean the mask up
- if (this->tidy)
- ModeParser::CleanMask(parameter);
-
// Check if the item already exists in the list
for (modelist::iterator it = el->begin(); it != el->end(); it++)
{
{
// We have a pattern matching the channel...
maxsize = el->size();
- if (IS_LOCAL(source) || (maxsize < it->limit))
+ if (!IS_LOCAL(source) || (maxsize < it->limit))
{
/* Ok, it *could* be allowed, now give someone subclassing us
* a chance to validate the parameter.