summaryrefslogtreecommitdiff
path: root/modules/core/cs_xop.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2010-08-17 19:27:37 -0400
committerAdam <Adam@anope.org>2010-08-17 19:27:37 -0400
commite65d8b2f3dfdb40858259b3bb48ef6998c31e62f (patch)
treefd845bdef5664d025ab19c262ae2c5e9d23d7bb2 /modules/core/cs_xop.cpp
parent2575008baa5c9d0ca789680da1a3b81dc74786f7 (diff)
Rewrote the config reader to better handle invalid configs.
This prevents Anope from exploding when /os reload has errors.
Diffstat (limited to 'modules/core/cs_xop.cpp')
-rw-r--r--modules/core/cs_xop.cpp96
1 files changed, 48 insertions, 48 deletions
diff --git a/modules/core/cs_xop.cpp b/modules/core/cs_xop.cpp
index b9b271ea3..973febf0a 100644
--- a/modules/core/cs_xop.cpp
+++ b/modules/core/cs_xop.cpp
@@ -134,7 +134,7 @@ class XOPListCallback : public NumberList
if (!SentHeader)
{
SentHeader = true;
- notice_lang(Config.s_ChanServ, u, messages[XOP_LIST_HEADER], ci->name.c_str());
+ notice_lang(Config->s_ChanServ, u, messages[XOP_LIST_HEADER], ci->name.c_str());
}
DoList(u, ci, access, Number - 1, level, messages);
@@ -142,7 +142,7 @@ class XOPListCallback : public NumberList
static void DoList(User *u, ChannelInfo *ci, ChanAccess *access, unsigned index, int level, int *messages)
{
- notice_lang(Config.s_ChanServ, u, CHAN_XOP_LIST_FORMAT, index, access->nc->display.c_str());
+ notice_lang(Config->s_ChanServ, u, CHAN_XOP_LIST_FORMAT, index, access->nc->display.c_str());
}
};
@@ -161,15 +161,15 @@ class XOPDelCallback : public NumberList
~XOPDelCallback()
{
if (!Deleted)
- notice_lang(Config.s_ChanServ, u, messages[XOP_NO_MATCH], ci->name.c_str());
+ notice_lang(Config->s_ChanServ, u, messages[XOP_NO_MATCH], ci->name.c_str());
else
{
- Alog() << Config.s_ChanServ << ": " << u->GetMask() << " (level " << get_access(u, ci) << ") deleted access of users " << Nicks << " on " << ci->name;
+ Alog() << Config->s_ChanServ << ": " << u->GetMask() << " (level " << get_access(u, ci) << ") deleted access of users " << Nicks << " on " << ci->name;
if (Deleted == 1)
- notice_lang(Config.s_ChanServ, u, messages[XOP_DELETED_ONE], ci->name.c_str());
+ notice_lang(Config->s_ChanServ, u, messages[XOP_DELETED_ONE], ci->name.c_str());
else
- notice_lang(Config.s_ChanServ, u, messages[XOP_DELETED_SEVERAL], Deleted, ci->name.c_str());
+ notice_lang(Config->s_ChanServ, u, messages[XOP_DELETED_SEVERAL], Deleted, ci->name.c_str());
}
}
@@ -209,7 +209,7 @@ class XOPBase : public Command
if (readonly)
{
- notice_lang(Config.s_ChanServ, u, messages[XOP_DISABLED]);
+ notice_lang(Config->s_ChanServ, u, messages[XOP_DISABLED]);
return MOD_CONT;
}
@@ -217,19 +217,19 @@ class XOPBase : public Command
if ((level >= ulev || ulev < ACCESS_AOP) && !u->Account()->HasPriv("chanserv/access/modify"))
{
- notice_lang(Config.s_ChanServ, u, ACCESS_DENIED);
+ notice_lang(Config->s_ChanServ, u, ACCESS_DENIED);
return MOD_CONT;
}
NickAlias *na = findnick(nick);
if (!na)
{
- notice_lang(Config.s_ChanServ, u, messages[XOP_NICKS_ONLY]);
+ notice_lang(Config->s_ChanServ, u, messages[XOP_NICKS_ONLY]);
return MOD_CONT;
}
else if (na->HasFlag(NS_FORBIDDEN))
{
- notice_lang(Config.s_ChanServ, u, NICK_X_FORBIDDEN, na->nick.c_str());
+ notice_lang(Config->s_ChanServ, u, NICK_X_FORBIDDEN, na->nick.c_str());
return MOD_CONT;
}
@@ -242,15 +242,15 @@ class XOPBase : public Command
**/
if (access->level >= ulev && !u->Account()->HasPriv("chanserv/access/modify"))
{
- notice_lang(Config.s_ChanServ, u, ACCESS_DENIED);
+ notice_lang(Config->s_ChanServ, u, ACCESS_DENIED);
return MOD_CONT;
}
++change;
}
- if (!change && ci->GetAccessCount() >= Config.CSAccessMax)
+ if (!change && ci->GetAccessCount() >= Config->CSAccessMax)
{
- notice_lang(Config.s_ChanServ, u, CHAN_XOP_REACHED_LIMIT, Config.CSAccessMax);
+ notice_lang(Config->s_ChanServ, u, CHAN_XOP_REACHED_LIMIT, Config->CSAccessMax);
return MOD_CONT;
}
@@ -263,17 +263,17 @@ class XOPBase : public Command
access->creator = u->nick;
}
- Alog() << Config.s_ChanServ << ": " << u->GetMask() << " (level " << ulev << ") " << (change ? "changed" : "set") << " access level " << level << " to " << na->nick << " (group " << nc->display << ") on channel " << ci->name;
+ Alog() << Config->s_ChanServ << ": " << u->GetMask() << " (level " << ulev << ") " << (change ? "changed" : "set") << " access level " << level << " to " << na->nick << " (group " << nc->display << ") on channel " << ci->name;
if (!change)
{
FOREACH_MOD(I_OnAccessAdd, OnAccessAdd(ci, u, nc, level));
- notice_lang(Config.s_ChanServ, u, messages[XOP_ADDED], nc->display.c_str(), ci->name.c_str());
+ notice_lang(Config->s_ChanServ, u, messages[XOP_ADDED], nc->display.c_str(), ci->name.c_str());
}
else
{
FOREACH_MOD(I_OnAccessChange, OnAccessChange(ci, u, na->nc, level));
- notice_lang(Config.s_ChanServ, u, messages[XOP_MOVED], nc->display.c_str(), ci->name.c_str());
+ notice_lang(Config->s_ChanServ, u, messages[XOP_MOVED], nc->display.c_str(), ci->name.c_str());
}
return MOD_CONT;
@@ -292,13 +292,13 @@ class XOPBase : public Command
if (readonly)
{
- notice_lang(Config.s_ChanServ, u, messages[XOP_DISABLED]);
+ notice_lang(Config->s_ChanServ, u, messages[XOP_DISABLED]);
return MOD_CONT;
}
if (!ci->GetAccessCount())
{
- notice_lang(Config.s_ChanServ, u, messages[XOP_LIST_EMPTY], ci->name.c_str());
+ notice_lang(Config->s_ChanServ, u, messages[XOP_LIST_EMPTY], ci->name.c_str());
return MOD_CONT;
}
@@ -306,7 +306,7 @@ class XOPBase : public Command
if ((level >= ulev || ulev < ACCESS_AOP) && !u->Account()->HasPriv("chanserv/access/modify"))
{
- notice_lang(Config.s_ChanServ, u, ACCESS_DENIED);
+ notice_lang(Config->s_ChanServ, u, ACCESS_DENIED);
return MOD_CONT;
}
@@ -321,7 +321,7 @@ class XOPBase : public Command
NickAlias *na = findnick(nick);
if (!na)
{
- notice_lang(Config.s_ChanServ, u, NICK_X_NOT_REGISTERED, nick.c_str());
+ notice_lang(Config->s_ChanServ, u, NICK_X_NOT_REGISTERED, nick.c_str());
return MOD_CONT;
}
NickCore *nc = na->nc;
@@ -337,17 +337,17 @@ class XOPBase : public Command
if (i == end)
{
- notice_lang(Config.s_ChanServ, u, messages[XOP_NOT_FOUND], nick.c_str(), ci->name.c_str());
+ notice_lang(Config->s_ChanServ, u, messages[XOP_NOT_FOUND], nick.c_str(), ci->name.c_str());
return MOD_CONT;
}
if (ulev <= access->level && !u->Account()->HasPriv("chanserv/access/modify"))
- notice_lang(Config.s_ChanServ, u, ACCESS_DENIED);
+ notice_lang(Config->s_ChanServ, u, ACCESS_DENIED);
else
{
- Alog() << Config.s_ChanServ << ": " << u->GetMask() << " (level " << get_access(u, ci) << ") deleted access of user " << access->nc->display << " on " << ci->name;
+ Alog() << Config->s_ChanServ << ": " << u->GetMask() << " (level " << get_access(u, ci) << ") deleted access of user " << access->nc->display << " on " << ci->name;
- notice_lang(Config.s_ChanServ, u, messages[XOP_DELETED], access->nc->display.c_str(), ci->name.c_str());
+ notice_lang(Config->s_ChanServ, u, messages[XOP_DELETED], access->nc->display.c_str(), ci->name.c_str());
FOREACH_MOD(I_OnAccessDel, OnAccessDel(ci, u, na->nc));
@@ -364,13 +364,13 @@ class XOPBase : public Command
if (!get_access(u, ci) && !u->Account()->HasCommand("chanserv/access/list"))
{
- notice_lang(Config.s_ChanServ, u, ACCESS_DENIED);
+ notice_lang(Config->s_ChanServ, u, ACCESS_DENIED);
return MOD_CONT;
}
if (!ci->GetAccessCount())
{
- notice_lang(Config.s_ChanServ, u, messages[XOP_LIST_EMPTY], ci->name.c_str());
+ notice_lang(Config->s_ChanServ, u, messages[XOP_LIST_EMPTY], ci->name.c_str());
return MOD_CONT;
}
@@ -393,14 +393,14 @@ class XOPBase : public Command
if (!SentHeader)
{
SentHeader = true;
- notice_lang(Config.s_ChanServ, u, messages[XOP_LIST_HEADER], ci->name.c_str());
+ notice_lang(Config->s_ChanServ, u, messages[XOP_LIST_HEADER], ci->name.c_str());
}
XOPListCallback::DoList(u, ci, access, i, level, messages);
}
if (!SentHeader)
- notice_lang(Config.s_ChanServ, u, messages[XOP_NO_MATCH], ci->name.c_str());
+ notice_lang(Config->s_ChanServ, u, messages[XOP_NO_MATCH], ci->name.c_str());
}
return MOD_CONT;
@@ -410,19 +410,19 @@ class XOPBase : public Command
{
if (readonly)
{
- notice_lang(Config.s_ChanServ, u, messages[XOP_DISABLED]);
+ notice_lang(Config->s_ChanServ, u, messages[XOP_DISABLED]);
return MOD_CONT;
}
if (!ci->GetAccessCount())
{
- notice_lang(Config.s_ChanServ, u, messages[XOP_LIST_EMPTY], ci->name.c_str());
+ notice_lang(Config->s_ChanServ, u, messages[XOP_LIST_EMPTY], ci->name.c_str());
return MOD_CONT;
}
if (!check_access(u, ci, CA_FOUNDER) && !u->Account()->HasPriv("chanserv/access/modify"))
{
- notice_lang(Config.s_ChanServ, u, ACCESS_DENIED);
+ notice_lang(Config->s_ChanServ, u, ACCESS_DENIED);
return MOD_CONT;
}
@@ -435,7 +435,7 @@ class XOPBase : public Command
FOREACH_MOD(I_OnAccessClear, OnAccessClear(ci, u));
- notice_lang(Config.s_ChanServ, u, messages[XOP_CLEAR], ci->name.c_str());
+ notice_lang(Config->s_ChanServ, u, messages[XOP_CLEAR], ci->name.c_str());
return MOD_CONT;
}
@@ -448,7 +448,7 @@ class XOPBase : public Command
ChannelInfo *ci = cs_findchan(chan);
if (!ci->HasFlag(CI_XOP))
- notice_lang(Config.s_ChanServ, u, CHAN_XOP_ACCESS, Config.s_ChanServ.c_str());
+ notice_lang(Config->s_ChanServ, u, CHAN_XOP_ACCESS, Config->s_ChanServ.c_str());
else if (cmd.equals_ci("ADD"))
return this->DoAdd(u, params, ci, level, messages);
else if (cmd.equals_ci("DEL"))
@@ -493,18 +493,18 @@ class CommandCSQOP : public XOPBase
bool OnHelp(User *u, const Anope::string &subcommand)
{
- notice_help(Config.s_ChanServ, u, CHAN_HELP_QOP);
+ notice_help(Config->s_ChanServ, u, CHAN_HELP_QOP);
return true;
}
void OnSyntaxError(User *u, const Anope::string &subcommand)
{
- syntax_error(Config.s_ChanServ, u, "QOP", CHAN_QOP_SYNTAX);
+ syntax_error(Config->s_ChanServ, u, "QOP", CHAN_QOP_SYNTAX);
}
void OnServHelp(User *u)
{
- notice_lang(Config.s_ChanServ, u, CHAN_HELP_CMD_QOP);
+ notice_lang(Config->s_ChanServ, u, CHAN_HELP_CMD_QOP);
}
};
@@ -522,18 +522,18 @@ class CommandCSAOP : public XOPBase
bool OnHelp(User *u, const Anope::string &subcommand)
{
- notice_help(Config.s_ChanServ, u, CHAN_HELP_AOP);
+ notice_help(Config->s_ChanServ, u, CHAN_HELP_AOP);
return true;
}
void OnSyntaxError(User *u, const Anope::string &subcommand)
{
- syntax_error(Config.s_ChanServ, u, "AOP", CHAN_AOP_SYNTAX);
+ syntax_error(Config->s_ChanServ, u, "AOP", CHAN_AOP_SYNTAX);
}
void OnServHelp(User *u)
{
- notice_lang(Config.s_ChanServ, u, CHAN_HELP_CMD_AOP);
+ notice_lang(Config->s_ChanServ, u, CHAN_HELP_CMD_AOP);
}
};
@@ -551,18 +551,18 @@ class CommandCSHOP : public XOPBase
bool OnHelp(User *u, const Anope::string &subcommand)
{
- notice_help(Config.s_ChanServ, u, CHAN_HELP_HOP);
+ notice_help(Config->s_ChanServ, u, CHAN_HELP_HOP);
return true;
}
void OnSyntaxError(User *u, const Anope::string &subcommand)
{
- syntax_error(Config.s_ChanServ, u, "HOP", CHAN_HOP_SYNTAX);
+ syntax_error(Config->s_ChanServ, u, "HOP", CHAN_HOP_SYNTAX);
}
void OnServHelp(User *u)
{
- notice_lang(Config.s_ChanServ, u, CHAN_HELP_CMD_HOP);
+ notice_lang(Config->s_ChanServ, u, CHAN_HELP_CMD_HOP);
}
};
@@ -580,18 +580,18 @@ class CommandCSSOP : public XOPBase
bool OnHelp(User *u, const Anope::string &subcommand)
{
- notice_help(Config.s_ChanServ, u, CHAN_HELP_SOP);
+ notice_help(Config->s_ChanServ, u, CHAN_HELP_SOP);
return true;
}
void OnSyntaxError(User *u, const Anope::string &subcommand)
{
- syntax_error(Config.s_ChanServ, u, "SOP", CHAN_SOP_SYNTAX);
+ syntax_error(Config->s_ChanServ, u, "SOP", CHAN_SOP_SYNTAX);
}
void OnServHelp(User *u)
{
- notice_lang(Config.s_ChanServ, u, CHAN_HELP_CMD_SOP);
+ notice_lang(Config->s_ChanServ, u, CHAN_HELP_CMD_SOP);
}
};
@@ -609,18 +609,18 @@ class CommandCSVOP : public XOPBase
bool OnHelp(User *u, const Anope::string &subcommand)
{
- notice_help(Config.s_ChanServ, u, CHAN_HELP_VOP);
+ notice_help(Config->s_ChanServ, u, CHAN_HELP_VOP);
return true;
}
void OnSyntaxError(User *u, const Anope::string &subcommand)
{
- syntax_error(Config.s_ChanServ, u, "VOP", CHAN_VOP_SYNTAX);
+ syntax_error(Config->s_ChanServ, u, "VOP", CHAN_VOP_SYNTAX);
}
void OnServHelp(User *u)
{
- notice_lang(Config.s_ChanServ, u, CHAN_HELP_CMD_VOP);
+ notice_lang(Config->s_ChanServ, u, CHAN_HELP_CMD_VOP);
}
};