mirror of
https://github.com/anope/anope.git
synced 2026-07-01 17:46: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
@@ -28,27 +28,27 @@ class CommandNSRelease : public Command
|
||||
NickAlias *na;
|
||||
|
||||
if (!(na = findnick(nick)))
|
||||
notice_lang(Config.s_NickServ, u, NICK_X_NOT_REGISTERED, nick.c_str());
|
||||
notice_lang(Config->s_NickServ, u, NICK_X_NOT_REGISTERED, nick.c_str());
|
||||
else if (na->HasFlag(NS_FORBIDDEN))
|
||||
notice_lang(Config.s_NickServ, u, NICK_X_FORBIDDEN, na->nick.c_str());
|
||||
notice_lang(Config->s_NickServ, u, NICK_X_FORBIDDEN, na->nick.c_str());
|
||||
else if (na->nc->HasFlag(NI_SUSPENDED))
|
||||
notice_lang(Config.s_NickServ, u, NICK_X_SUSPENDED, na->nick.c_str());
|
||||
notice_lang(Config->s_NickServ, u, NICK_X_SUSPENDED, na->nick.c_str());
|
||||
else if (!na->HasFlag(NS_HELD))
|
||||
notice_lang(Config.s_NickServ, u, NICK_RELEASE_NOT_HELD, nick.c_str());
|
||||
notice_lang(Config->s_NickServ, u, NICK_RELEASE_NOT_HELD, nick.c_str());
|
||||
else if (!pass.empty())
|
||||
{
|
||||
int res = enc_check_password(pass, na->nc->pass);
|
||||
if (res == 1)
|
||||
{
|
||||
na->Release();
|
||||
notice_lang(Config.s_NickServ, u, NICK_RELEASED);
|
||||
notice_lang(Config->s_NickServ, u, NICK_RELEASED);
|
||||
}
|
||||
else
|
||||
{
|
||||
notice_lang(Config.s_NickServ, u, ACCESS_DENIED);
|
||||
notice_lang(Config->s_NickServ, u, ACCESS_DENIED);
|
||||
if (!res)
|
||||
{
|
||||
Alog() << Config.s_NickServ << ": RELEASE: invalid password for " << nick << " by " << u->GetMask();
|
||||
Alog() << Config->s_NickServ << ": RELEASE: invalid password for " << nick << " by " << u->GetMask();
|
||||
if (bad_password(u))
|
||||
return MOD_STOP;
|
||||
}
|
||||
@@ -59,33 +59,33 @@ class CommandNSRelease : public Command
|
||||
if (u->Account() == na->nc || (!na->nc->HasFlag(NI_SECURE) && is_on_access(u, na->nc)))
|
||||
{
|
||||
na->Release();
|
||||
notice_lang(Config.s_NickServ, u, NICK_RELEASED);
|
||||
notice_lang(Config->s_NickServ, u, NICK_RELEASED);
|
||||
}
|
||||
else
|
||||
notice_lang(Config.s_NickServ, u, ACCESS_DENIED);
|
||||
notice_lang(Config->s_NickServ, u, ACCESS_DENIED);
|
||||
}
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
bool OnHelp(User *u, const Anope::string &subcommand)
|
||||
{
|
||||
/* Convert Config.NSReleaseTimeout seconds to string format */
|
||||
Anope::string relstr = duration(u->Account(), Config.NSReleaseTimeout);
|
||||
/* Convert Config->NSReleaseTimeout seconds to string format */
|
||||
Anope::string relstr = duration(u->Account(), Config->NSReleaseTimeout);
|
||||
|
||||
notice_help(Config.s_NickServ, u, NICK_HELP_RELEASE, relstr.c_str());
|
||||
//do_help_limited(Config.s_NickServ, u, this);
|
||||
notice_help(Config->s_NickServ, u, NICK_HELP_RELEASE, relstr.c_str());
|
||||
//do_help_limited(Config->s_NickServ, u, this);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void OnSyntaxError(User *u, const Anope::string &subcommand)
|
||||
{
|
||||
syntax_error(Config.s_NickServ, u, "RELEASE", NICK_RELEASE_SYNTAX);
|
||||
syntax_error(Config->s_NickServ, u, "RELEASE", NICK_RELEASE_SYNTAX);
|
||||
}
|
||||
|
||||
void OnServHelp(User *u)
|
||||
{
|
||||
notice_lang(Config.s_NickServ, u, NICK_HELP_CMD_RELEASE);
|
||||
notice_lang(Config->s_NickServ, u, NICK_HELP_CMD_RELEASE);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user