summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNaram Qashat cyberbotx@cyberbotx.com <Naram Qashat cyberbotx@cyberbotx.com@5417fbe8-f217-4b02-8779-1006273d7864>2008-10-27 01:01:59 +0000
committerNaram Qashat cyberbotx@cyberbotx.com <Naram Qashat cyberbotx@cyberbotx.com@5417fbe8-f217-4b02-8779-1006273d7864>2008-10-27 01:01:59 +0000
commit7e541ba7e1145c6118f69c7856e50d5976bbb07e (patch)
tree57a484925e07b437b719e2cf57ad917c491e7159
parent0d02abf9a8a00bd8892100026fad715bb528a862 (diff)
Added chanmodes directive to defcon block in new config.
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@1495 5417fbe8-f217-4b02-8779-1006273d7864
-rw-r--r--data/example_new.conf12
-rw-r--r--src/config.c4
2 files changed, 14 insertions, 2 deletions
diff --git a/data/example_new.conf b/data/example_new.conf
index df8cfbad1..975fef99b 100644
--- a/data/example_new.conf
+++ b/data/example_new.conf
@@ -912,4 +912,16 @@ defcon
* network.
*/
#akillexpire = 5m
+
+ /*
+ * The channel modes to set on all channels when the DefCon channel mode system is in use.
+ *
+ * Note 1: Choose these modes carefully, because when DefCon switches to a level which does NOT have
+ * the mode setting selected, Services will set the reverse on all channels, e.g. if this setting
+ * is +RN when DefCon is used, all channels will be set to +RN, when DefCon is removed, all
+ * channels will be set to -RN. You don't want to set this to +k for example, because when DefCon
+ * is removed all channels with -k.
+ * Note 2: MLOCK'd modes will not be lost.
+ */
+ #chanmodes = "+R"
}
diff --git a/src/config.c b/src/config.c
index 0dc418808..74815f393 100644
--- a/src/config.c
+++ b/src/config.c
@@ -520,7 +520,7 @@ bool ValidateDefCon(ServerConfig *, const char *tag, const char *value, ValueIte
if (level > 5) throw ConfigException("The value for <defcon:defaultlevel> must be between 1 through 5 if you wish to use DefCon or 0 if you wish to disable it!");
}
else if (DefConLevel) {
- if (static_cast<std::string>(value).substr(0, 5) == "level" && isdigit(value[5])) {
+ if ((static_cast<std::string>(value).substr(0, 5) == "level" && isdigit(value[5])) || static_cast<std::string>(value) == "chanmodes") {
if (!*data.GetString()) throw ConfigException(static_cast<std::string>("The value for <") + tag + ":" + value + "> cannot be empty when DefCon is enabled!");
}
else if (static_cast<std::string>(value) == "sessionlimit" || static_cast<std::string>(value) == "akillexpire") {
@@ -702,6 +702,7 @@ int ServerConfig::Read(bool bail)
{"defcon", "level1", "", new ValueContainerString(&DefCon1), DT_STRING, ValidateDefCon},
{"defcon", "sessionlimit", "0", new ValueContainerInt(&DefConSessionLimit), DT_INTEGER, ValidateDefCon},
{"defcon", "akillexpire", "0", new ValueContainerTime(&DefConAKILL), DT_TIME, ValidateDefCon},
+ {"defcon", "chanmodes", "", new ValueContainerChar(&DefConChanModes), DT_CHARPTR, ValidateDefCon},
{NULL, NULL, NULL, NULL, DT_NOTHING, NoValidation}
};
/* These tags can occur multiple times, and therefore they have special code to read them
@@ -1282,7 +1283,6 @@ Directive directives[] = {
{"DontQuoteAddresses",
{{PARAM_SET, PARAM_RELOAD, &DontQuoteAddresses}}},
{"DumpCore", {{PARAM_SET, 0, &DumpCore}}},
- {"DefConChanModes", {{PARAM_STRING, PARAM_RELOAD, &DefConChanModes}}},
{"DefConTimeOut", {{PARAM_STRING, PARAM_RELOAD, &DefConTimeOut}}},
{"DefConAkillReason",
{{PARAM_STRING, PARAM_RELOAD, &DefConAkillReason}}},