summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/config.c101
1 files changed, 56 insertions, 45 deletions
diff --git a/src/config.c b/src/config.c
index ff144360e..888cc12dc 100644
--- a/src/config.c
+++ b/src/config.c
@@ -192,28 +192,29 @@ time_t SZLineExpiry;
bool AkillOnAdd;
bool KillonSGline;
bool KillonSQline;
-int WallOper;
-int WallBadOS;
-int WallOSGlobal;
-int WallOSMode;
-int WallOSClearmodes;
-int WallOSKick;
-int WallOSAkill;
-int WallOSSGLine;
-int WallOSSQLine;
-int WallOSSZLine;
-int WallOSNoOp;
-int WallOSJupe;
-int WallOSRaw;
-int WallAkillExpire;
-int WallSGLineExpire;
-int WallSQLineExpire;
-int WallSZLineExpire;
-int WallExceptionExpire;
-int WallDrop;
-int WallForbid;
-int WallGetpass;
-int WallSetpass;
+static std::string OSNotifications;
+bool WallOper;
+bool WallBadOS;
+bool WallOSGlobal;
+bool WallOSMode;
+bool WallOSClearmodes;
+bool WallOSKick;
+bool WallOSAkill;
+bool WallOSSGLine;
+bool WallOSSQLine;
+bool WallOSSZLine;
+bool WallOSNoOp;
+bool WallOSJupe;
+bool WallOSRaw;
+bool WallAkillExpire;
+bool WallSGLineExpire;
+bool WallSQLineExpire;
+bool WallSZLineExpire;
+bool WallExceptionExpire;
+bool WallDrop;
+bool WallForbid;
+bool WallGetpass;
+bool WallSetpass;
int AddAkiller;
int LimitSessions;
@@ -656,6 +657,7 @@ int ServerConfig::Read(bool bail)
{"operserv", "killonsgline", "no", new ValueContainerBool(&KillonSGline), DT_BOOLEAN, NoValidation},
{"operserv", "killonsqline", "no", new ValueContainerBool(&KillonSQline), DT_BOOLEAN, NoValidation},
{"operserv", "disableraw", "no", new ValueContainerBool(&DisableRaw), DT_BOOLEAN, NoValidation},
+ {"operserv", "notifications", "", new ValueContainerString(&OSNotifications), DT_STRING, NoValidation},
{NULL, NULL, NULL, NULL, DT_NOTHING, NoValidation}
};
/* These tags can occur multiple times, and therefore they have special code to read them
@@ -1335,29 +1337,6 @@ Directive directives[] = {
{"UseTokens", {{PARAM_SET, 0, &UseTokens}}},
{"UseTS6", {{PARAM_SET, 0, &UseTS6}}},
{"UnRestrictSAdmin", {{PARAM_SET, PARAM_RELOAD, &UnRestrictSAdmin}}},
- {"WallAkillExpire", {{PARAM_SET, PARAM_RELOAD, &WallAkillExpire}}},
- {"WallBadOS", {{PARAM_SET, PARAM_RELOAD, &WallBadOS}}},
- {"WallDrop", {{PARAM_SET, PARAM_RELOAD, &WallDrop}}},
- {"WallExceptionExpire",
- {{PARAM_SET, PARAM_RELOAD, &WallExceptionExpire}}},
- {"WallForbid", {{PARAM_SET, PARAM_RELOAD, &WallForbid}}},
- {"WallGetpass", {{PARAM_SET, PARAM_RELOAD, &WallGetpass}}},
- {"WallOper", {{PARAM_SET, PARAM_RELOAD, &WallOper}}},
- {"WallOSAkill", {{PARAM_SET, PARAM_RELOAD, &WallOSAkill}}},
- {"WallOSClearmodes", {{PARAM_SET, PARAM_RELOAD, &WallOSClearmodes}}},
- {"WallOSGlobal", {{PARAM_SET, PARAM_RELOAD, &WallOSGlobal}}},
- {"WallOSKick", {{PARAM_SET, PARAM_RELOAD, &WallOSKick}}},
- {"WallOSJupe", {{PARAM_SET, PARAM_RELOAD, &WallOSJupe}}},
- {"WallOSMode", {{PARAM_SET, PARAM_RELOAD, &WallOSMode}}},
- {"WallOSNoOp", {{PARAM_SET, PARAM_RELOAD, &WallOSNoOp}}},
- {"WallOSRaw", {{PARAM_SET, PARAM_RELOAD, &WallOSRaw}}},
- {"WallOSSGLine", {{PARAM_SET, PARAM_RELOAD, &WallOSSGLine}}},
- {"WallOSSQLine", {{PARAM_SET, PARAM_RELOAD, &WallOSSQLine}}},
- {"WallOSSZLine", {{PARAM_SET, PARAM_RELOAD, &WallOSSZLine}}},
- {"WallSetpass", {{PARAM_SET, PARAM_RELOAD, &WallSetpass}}},
- {"WallSGLineExpire", {{PARAM_SET, PARAM_RELOAD, &WallSGLineExpire}}},
- {"WallSQLineExpire", {{PARAM_SET, PARAM_RELOAD, &WallSQLineExpire}}},
- {"WallSZLineExpire", {{PARAM_SET, PARAM_RELOAD, &WallSZLineExpire}}},
{"WarningTimeout", {{PARAM_TIME, PARAM_RELOAD, &WarningTimeout}}},
{"GlobalOnDefcon", {{PARAM_SET, PARAM_RELOAD, &GlobalOnDefcon}}},
{"GlobalOnDefconMore",
@@ -1806,6 +1785,38 @@ int read_config(int reload)
}
}
+ WallOper = WallBadOS = WallOSGlobal = WallOSMode = WallOSClearmodes = WallOSKick = WallOSAkill = WallOSSGLine = WallOSSQLine = WallOSSZLine = WallOSNoOp =
+ WallOSJupe = WallOSRaw = WallAkillExpire = WallSGLineExpire = WallSQLineExpire = WallSZLineExpire = WallExceptionExpire = WallGetpass = WallSetpass =
+ WallForbid = WallDrop = false;
+ if (!OSNotifications.empty()) {
+ spacesepstream notifications(OSNotifications);
+ std::string notice;
+ while (notifications.GetToken(notice)) {
+ if (notice == "oper") WallOper = true;
+ else if (notice == "bados") WallBadOS = true;
+ else if (notice == "osglobal") WallOSGlobal = true;
+ else if (notice == "osmode") WallOSMode = true;
+ else if (notice == "osclearmodes") WallOSClearmodes = true;
+ else if (notice == "oskick") WallOSKick = true;
+ else if (notice == "osakill") WallOSAkill = true;
+ else if (notice == "ossgline") WallOSSGLine = true;
+ else if (notice == "ossqline") WallOSSQLine = true;
+ else if (notice == "osszline") WallOSSZLine = true;
+ else if (notice == "osnoop") WallOSNoOp = true;
+ else if (notice == "osjupe") WallOSJupe = true;
+ else if (notice == "osraw") WallOSRaw = true;
+ else if (notice == "akillexpire") WallAkillExpire = true;
+ else if (notice == "sglineexpire") WallSGLineExpire = true;
+ else if (notice == "sqlineexpire") WallSQLineExpire = true;
+ else if (notice == "szlineexpire") WallSZLineExpire = true;
+ else if (notice == "exceptionexpire") WallExceptionExpire = true;
+ else if (notice == "getpass") WallGetpass = true;
+ else if (notice == "setpass") WallSetpass = true;
+ else if (notice == "forbid") WallForbid = true;
+ else if (notice == "drop") WallDrop = true;
+ }
+ }
+
/* Services Root building */
if (ServicesRoot && !reload) { /* Check to prevent segmentation fault if it's missing */