mirror of
https://github.com/anope/anope.git
synced 2026-06-29 05:06:38 +02:00
Rewrote the config reader to better handle invalid configs.
This prevents Anope from exploding when /os reload has errors.
This commit is contained in:
+15
-15
@@ -35,12 +35,12 @@ class CommandHSSet : public Command
|
||||
rawhostmask = myStrGetTokenRemainder(rawhostmask, '@', 1); /* get the remaining string */
|
||||
if (rawhostmask.empty())
|
||||
{
|
||||
notice_lang(Config.s_HostServ, u, HOST_SET_SYNTAX, Config.s_HostServ.c_str());
|
||||
notice_lang(Config->s_HostServ, u, HOST_SET_SYNTAX, Config->s_HostServ.c_str());
|
||||
return MOD_CONT;
|
||||
}
|
||||
if (vIdent.length() > Config.UserLen)
|
||||
if (vIdent.length() > Config->UserLen)
|
||||
{
|
||||
notice_lang(Config.s_HostServ, u, HOST_SET_IDENTTOOLONG, Config.UserLen);
|
||||
notice_lang(Config->s_HostServ, u, HOST_SET_IDENTTOOLONG, Config->UserLen);
|
||||
return MOD_CONT;
|
||||
}
|
||||
else
|
||||
@@ -48,27 +48,27 @@ class CommandHSSet : public Command
|
||||
for (Anope::string::iterator s = vIdent.begin(), s_end = vIdent.end(); s != s_end; ++s)
|
||||
if (!isvalidchar(*s))
|
||||
{
|
||||
notice_lang(Config.s_HostServ, u, HOST_SET_IDENT_ERROR);
|
||||
notice_lang(Config->s_HostServ, u, HOST_SET_IDENT_ERROR);
|
||||
return MOD_CONT;
|
||||
}
|
||||
}
|
||||
if (!ircd->vident)
|
||||
{
|
||||
notice_lang(Config.s_HostServ, u, HOST_NO_VIDENT);
|
||||
notice_lang(Config->s_HostServ, u, HOST_NO_VIDENT);
|
||||
return MOD_CONT;
|
||||
}
|
||||
}
|
||||
if (rawhostmask.length() < Config.HostLen)
|
||||
if (rawhostmask.length() < Config->HostLen)
|
||||
hostmask = rawhostmask;
|
||||
else
|
||||
{
|
||||
notice_lang(Config.s_HostServ, u, HOST_SET_TOOLONG, Config.HostLen);
|
||||
notice_lang(Config->s_HostServ, u, HOST_SET_TOOLONG, Config->HostLen);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (!isValidHost(hostmask, 3))
|
||||
{
|
||||
notice_lang(Config.s_HostServ, u, HOST_SET_ERROR);
|
||||
notice_lang(Config->s_HostServ, u, HOST_SET_ERROR);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@ class CommandHSSet : public Command
|
||||
{
|
||||
if (na->HasFlag(NS_FORBIDDEN))
|
||||
{
|
||||
notice_lang(Config.s_HostServ, u, NICK_X_FORBIDDEN, nick.c_str());
|
||||
notice_lang(Config->s_HostServ, u, NICK_X_FORBIDDEN, nick.c_str());
|
||||
return MOD_CONT;
|
||||
}
|
||||
Alog() << "vHost for user \2" << nick << "\2 set to \2" << (!vIdent.empty() && ircd->vident ? vIdent : "") << (!vIdent.empty() && ircd->vident ? "@" : "") << hostmask << " \2 by oper \2" << u->nick << "\2";
|
||||
@@ -86,29 +86,29 @@ class CommandHSSet : public Command
|
||||
na->hostinfo.SetVhost(vIdent, hostmask, u->nick);
|
||||
FOREACH_MOD(I_OnSetVhost, OnSetVhost(na));
|
||||
if (!vIdent.empty())
|
||||
notice_lang(Config.s_HostServ, u, HOST_IDENT_SET, nick.c_str(), vIdent.c_str(), hostmask.c_str());
|
||||
notice_lang(Config->s_HostServ, u, HOST_IDENT_SET, nick.c_str(), vIdent.c_str(), hostmask.c_str());
|
||||
else
|
||||
notice_lang(Config.s_HostServ, u, HOST_SET, nick.c_str(), hostmask.c_str());
|
||||
notice_lang(Config->s_HostServ, u, HOST_SET, nick.c_str(), hostmask.c_str());
|
||||
}
|
||||
else
|
||||
notice_lang(Config.s_HostServ, u, HOST_NOREG, nick.c_str());
|
||||
notice_lang(Config->s_HostServ, u, HOST_NOREG, nick.c_str());
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
bool OnHelp(User *u, const Anope::string &subcommand)
|
||||
{
|
||||
notice_help(Config.s_HostServ, u, HOST_HELP_SET);
|
||||
notice_help(Config->s_HostServ, u, HOST_HELP_SET);
|
||||
return true;
|
||||
}
|
||||
|
||||
void OnSyntaxError(User *u, const Anope::string &subcommand)
|
||||
{
|
||||
syntax_error(Config.s_HostServ, u, "SET", HOST_SET_SYNTAX);
|
||||
syntax_error(Config->s_HostServ, u, "SET", HOST_SET_SYNTAX);
|
||||
}
|
||||
|
||||
void OnServHelp(User *u)
|
||||
{
|
||||
notice_lang(Config.s_HostServ, u, HOST_HELP_CMD_SET);
|
||||
notice_lang(Config->s_HostServ, u, HOST_HELP_CMD_SET);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user