diff options
author | Adam <Adam@anope.org> | 2010-08-17 19:27:37 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2010-08-17 19:27:37 -0400 |
commit | e65d8b2f3dfdb40858259b3bb48ef6998c31e62f (patch) | |
tree | fd845bdef5664d025ab19c262ae2c5e9d23d7bb2 /modules/core/os_set.cpp | |
parent | 2575008baa5c9d0ca789680da1a3b81dc74786f7 (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/os_set.cpp')
-rw-r--r-- | modules/core/os_set.cpp | 92 |
1 files changed, 46 insertions, 46 deletions
diff --git a/modules/core/os_set.cpp b/modules/core/os_set.cpp index e46d91bb7..377dddfcf 100644 --- a/modules/core/os_set.cpp +++ b/modules/core/os_set.cpp @@ -21,15 +21,15 @@ class CommandOSSet : public Command int index; index = allow_ignore ? OPER_SET_LIST_OPTION_ON : OPER_SET_LIST_OPTION_OFF; - notice_lang(Config.s_OperServ, u, index, "IGNORE"); + notice_lang(Config->s_OperServ, u, index, "IGNORE"); index = readonly ? OPER_SET_LIST_OPTION_ON : OPER_SET_LIST_OPTION_OFF; - notice_lang(Config.s_OperServ, u, index, "READONLY"); + notice_lang(Config->s_OperServ, u, index, "READONLY"); index = LogChan ? OPER_SET_LIST_OPTION_ON : OPER_SET_LIST_OPTION_OFF; - notice_lang(Config.s_OperServ, u, index, "LOGCHAN"); + notice_lang(Config->s_OperServ, u, index, "LOGCHAN"); index = debug ? OPER_SET_LIST_OPTION_ON : OPER_SET_LIST_OPTION_OFF; - notice_lang(Config.s_OperServ, u, index, "DEBUG"); + notice_lang(Config->s_OperServ, u, index, "DEBUG"); index = noexpire ? OPER_SET_LIST_OPTION_ON : OPER_SET_LIST_OPTION_OFF; - notice_lang(Config.s_OperServ, u, index, "NOEXPIRE"); + notice_lang(Config->s_OperServ, u, index, "NOEXPIRE"); return MOD_CONT; } @@ -47,15 +47,15 @@ class CommandOSSet : public Command if (setting.equals_ci("ON")) { allow_ignore = 1; - notice_lang(Config.s_OperServ, u, OPER_SET_IGNORE_ON); + notice_lang(Config->s_OperServ, u, OPER_SET_IGNORE_ON); } else if (setting.equals_ci("OFF")) { allow_ignore = 0; - notice_lang(Config.s_OperServ, u, OPER_SET_IGNORE_OFF); + notice_lang(Config->s_OperServ, u, OPER_SET_IGNORE_OFF); } else - notice_lang(Config.s_OperServ, u, OPER_SET_IGNORE_ERROR); + notice_lang(Config->s_OperServ, u, OPER_SET_IGNORE_ERROR); return MOD_CONT; } @@ -75,17 +75,17 @@ class CommandOSSet : public Command readonly = true; Alog() << "Read-only mode activated"; close_log(); - notice_lang(Config.s_OperServ, u, OPER_SET_READONLY_ON); + notice_lang(Config->s_OperServ, u, OPER_SET_READONLY_ON); } else if (setting.equals_ci("OFF")) { readonly = false; open_log(); Alog() << "Read-only mode deactivated"; - notice_lang(Config.s_OperServ, u, OPER_SET_READONLY_OFF); + notice_lang(Config->s_OperServ, u, OPER_SET_READONLY_OFF); } else - notice_lang(Config.s_OperServ, u, OPER_SET_READONLY_ERROR); + notice_lang(Config->s_OperServ, u, OPER_SET_READONLY_ERROR); return MOD_CONT; } @@ -102,36 +102,36 @@ class CommandOSSet : public Command } /* Unlike the other SET commands where only stricmp is necessary, - * we also have to ensure that Config.LogChannel is defined or we can't + * we also have to ensure that Config->LogChannel is defined or we can't * send to it. * * -jester */ - if (!Config.LogChannel.empty() && setting.equals_ci("ON")) + if (!Config->LogChannel.empty() && setting.equals_ci("ON")) { if (ircd->join2msg) { - c = findchan(Config.LogChannel); + c = findchan(Config->LogChannel); if (c) Global->Join(c); else - Global->Join(Config.LogChannel); + Global->Join(Config->LogChannel); } LogChan = true; - Alog() << "Now sending log messages to " << Config.LogChannel; - notice_lang(Config.s_OperServ, u, OPER_SET_LOGCHAN_ON, Config.LogChannel.c_str()); + Alog() << "Now sending log messages to " << Config->LogChannel; + notice_lang(Config->s_OperServ, u, OPER_SET_LOGCHAN_ON, Config->LogChannel.c_str()); } - else if (!Config.LogChannel.empty() && setting.equals_ci("OFF")) + else if (!Config->LogChannel.empty() && setting.equals_ci("OFF")) { Alog() << "No longer sending log messages to a channel"; - c = findchan(Config.LogChannel); + c = findchan(Config->LogChannel); if (ircd->join2msg && c) Global->Part(c); LogChan = false; - notice_lang(Config.s_OperServ, u, OPER_SET_LOGCHAN_OFF); + notice_lang(Config->s_OperServ, u, OPER_SET_LOGCHAN_OFF); } else - notice_lang(Config.s_OperServ, u, OPER_SET_LOGCHAN_ERROR); + notice_lang(Config->s_OperServ, u, OPER_SET_LOGCHAN_ERROR); return MOD_CONT; } @@ -151,24 +151,24 @@ class CommandOSSet : public Command * * Rob **/ - if (!Config.SuperAdmin) - notice_lang(Config.s_OperServ, u, OPER_SUPER_ADMIN_NOT_ENABLED); + if (!Config->SuperAdmin) + notice_lang(Config->s_OperServ, u, OPER_SUPER_ADMIN_NOT_ENABLED); else if (setting.equals_ci("ON")) { u->isSuperAdmin = 1; - notice_lang(Config.s_OperServ, u, OPER_SUPER_ADMIN_ON); - Alog() << Config.s_OperServ << ": " << u->nick << " is a SuperAdmin"; + notice_lang(Config->s_OperServ, u, OPER_SUPER_ADMIN_ON); + Alog() << Config->s_OperServ << ": " << u->nick << " is a SuperAdmin"; ircdproto->SendGlobops(OperServ, getstring(OPER_SUPER_ADMIN_WALL_ON), u->nick.c_str()); } else if (setting.equals_ci("OFF")) { u->isSuperAdmin = 0; - notice_lang(Config.s_OperServ, u, OPER_SUPER_ADMIN_OFF); - Alog() << Config.s_OperServ << ": " << u->nick << " is no longer a SuperAdmin"; + notice_lang(Config->s_OperServ, u, OPER_SUPER_ADMIN_OFF); + Alog() << Config->s_OperServ << ": " << u->nick << " is no longer a SuperAdmin"; ircdproto->SendGlobops(OperServ, getstring(OPER_SUPER_ADMIN_WALL_OFF), u->nick.c_str()); } else - notice_lang(Config.s_OperServ, u, OPER_SUPER_ADMIN_SYNTAX); + notice_lang(Config->s_OperServ, u, OPER_SUPER_ADMIN_SYNTAX); return MOD_CONT; } @@ -187,22 +187,22 @@ class CommandOSSet : public Command { debug = 1; Alog() << "Debug mode activated"; - notice_lang(Config.s_OperServ, u, OPER_SET_DEBUG_ON); + notice_lang(Config->s_OperServ, u, OPER_SET_DEBUG_ON); } else if (setting.equals_ci("OFF") || (setting[0] == '0' && setting.is_number_only() && !convertTo<int>(setting))) { Alog() << "Debug mode deactivated"; debug = 0; - notice_lang(Config.s_OperServ, u, OPER_SET_DEBUG_OFF); + notice_lang(Config->s_OperServ, u, OPER_SET_DEBUG_OFF); } else if (setting.is_number_only() && convertTo<int>(setting) > 0) { debug = convertTo<int>(setting); Alog() << "Debug mode activated (level " << debug << ")"; - notice_lang(Config.s_OperServ, u, OPER_SET_DEBUG_LEVEL, debug); + notice_lang(Config->s_OperServ, u, OPER_SET_DEBUG_LEVEL, debug); } else - notice_lang(Config.s_OperServ, u, OPER_SET_DEBUG_ERROR); + notice_lang(Config->s_OperServ, u, OPER_SET_DEBUG_ERROR); return MOD_CONT; } @@ -221,16 +221,16 @@ class CommandOSSet : public Command { noexpire = true; Alog() << "No expire mode activated"; - notice_lang(Config.s_OperServ, u, OPER_SET_NOEXPIRE_ON); + notice_lang(Config->s_OperServ, u, OPER_SET_NOEXPIRE_ON); } else if (setting.equals_ci("OFF")) { noexpire = false; Alog() << "No expire mode deactivated"; - notice_lang(Config.s_OperServ, u, OPER_SET_NOEXPIRE_OFF); + notice_lang(Config->s_OperServ, u, OPER_SET_NOEXPIRE_OFF); } else - notice_lang(Config.s_OperServ, u, OPER_SET_NOEXPIRE_ERROR); + notice_lang(Config->s_OperServ, u, OPER_SET_NOEXPIRE_ERROR); return MOD_CONT; } @@ -258,28 +258,28 @@ class CommandOSSet : public Command else if (option.equals_ci("NOEXPIRE")) return this->DoSetNoExpire(u, params); else - notice_lang(Config.s_OperServ, u, OPER_SET_UNKNOWN_OPTION, option.c_str()); + notice_lang(Config->s_OperServ, u, OPER_SET_UNKNOWN_OPTION, option.c_str()); return MOD_CONT; } bool OnHelp(User *u, const Anope::string &subcommand) { if (subcommand.empty()) - notice_help(Config.s_OperServ, u, OPER_HELP_SET); + notice_help(Config->s_OperServ, u, OPER_HELP_SET); else if (subcommand.equals_ci("LIST")) - notice_help(Config.s_OperServ, u, OPER_HELP_SET_LIST); + notice_help(Config->s_OperServ, u, OPER_HELP_SET_LIST); else if (subcommand.equals_ci("READONLY")) - notice_help(Config.s_OperServ, u, OPER_HELP_SET_READONLY); + notice_help(Config->s_OperServ, u, OPER_HELP_SET_READONLY); else if (subcommand.equals_ci("LOGCHAN")) - notice_help(Config.s_OperServ, u, OPER_HELP_SET_LOGCHAN); + notice_help(Config->s_OperServ, u, OPER_HELP_SET_LOGCHAN); else if (subcommand.equals_ci("DEBUG")) - notice_help(Config.s_OperServ, u, OPER_HELP_SET_DEBUG); + notice_help(Config->s_OperServ, u, OPER_HELP_SET_DEBUG); else if (subcommand.equals_ci("NOEXPIRE")) - notice_help(Config.s_OperServ, u, OPER_HELP_SET_NOEXPIRE); + notice_help(Config->s_OperServ, u, OPER_HELP_SET_NOEXPIRE); else if (subcommand.equals_ci("IGNORE")) - notice_help(Config.s_OperServ, u, OPER_HELP_SET_IGNORE); + notice_help(Config->s_OperServ, u, OPER_HELP_SET_IGNORE); else if (subcommand.equals_ci("SUPERADMIN")) - notice_help(Config.s_OperServ, u, OPER_HELP_SET_SUPERADMIN); + notice_help(Config->s_OperServ, u, OPER_HELP_SET_SUPERADMIN); else return false; @@ -288,12 +288,12 @@ class CommandOSSet : public Command void OnSyntaxError(User *u, const Anope::string &subcommand) { - syntax_error(Config.s_OperServ, u, "SET", OPER_SET_SYNTAX); + syntax_error(Config->s_OperServ, u, "SET", OPER_SET_SYNTAX); } void OnServHelp(User *u) { - notice_lang(Config.s_OperServ, u, OPER_HELP_CMD_SET); + notice_lang(Config->s_OperServ, u, OPER_HELP_CMD_SET); } }; |