*
* Copyright (C) 2019 Matt Schatz <genius3000@g3k.solutions>
* Copyright (C) 2013-2016 Attila Molnar <attilamolnar@hush.com>
- * Copyright (C) 2013-2014, 2016-2019 Sadie Powell <sadie@witchery.services>
+ * Copyright (C) 2013-2014, 2016-2021 Sadie Powell <sadie@witchery.services>
* Copyright (C) 2013 Daniel Vassdal <shutter@canternet.org>
* Copyright (C) 2012 Robby <robby@chatbelgie.be>
* Copyright (C) 2012 Justin Crawford <Justasic@Gmail.com>
#include <iostream>
ServerLimits::ServerLimits(ConfigTag* tag)
- : NickMax(tag->getUInt("maxnick", 30))
- , ChanMax(tag->getUInt("maxchan", 64))
- , MaxModes(tag->getUInt("maxmodes", 20))
- , IdentMax(tag->getUInt("maxident", 10))
- , MaxQuit(tag->getUInt("maxquit", 255))
- , MaxTopic(tag->getUInt("maxtopic", 307))
- , MaxKick(tag->getUInt("maxkick", 255))
- , MaxReal(tag->getUInt("maxreal", tag->getUInt("maxgecos", 128)))
- , MaxAway(tag->getUInt("maxaway", 200))
- , MaxLine(tag->getUInt("maxline", 512))
- , MaxHost(tag->getUInt("maxhost", 64))
+ : MaxLine(tag->getUInt("maxline", 512, 512))
+ , NickMax(tag->getUInt("maxnick", 30, 1, MaxLine))
+ , ChanMax(tag->getUInt("maxchan", 64, 1, MaxLine))
+ , MaxModes(tag->getUInt("maxmodes", 20, 1))
+ , IdentMax(tag->getUInt("maxident", 10, 1))
+ , MaxQuit(tag->getUInt("maxquit", 255, 0, MaxLine))
+ , MaxTopic(tag->getUInt("maxtopic", 307, 1, MaxLine))
+ , MaxKick(tag->getUInt("maxkick", 255, 1, MaxLine))
+ , MaxReal(tag->getUInt("maxreal", tag->getUInt("maxgecos", 128), 1, MaxLine))
+ , MaxAway(tag->getUInt("maxaway", 200, 1, MaxLine))
+ , MaxHost(tag->getUInt("maxhost", 64, 1, MaxLine))
{
}
ServerConfig::ServerPaths::ServerPaths(ConfigTag* tag)
- : Config(tag->getString("configdir", INSPIRCD_CONFIG_PATH))
- , Data(tag->getString("datadir", INSPIRCD_DATA_PATH))
- , Log(tag->getString("logdir", INSPIRCD_LOG_PATH))
- , Module(tag->getString("moduledir", INSPIRCD_MODULE_PATH))
+ : Config(tag->getString("configdir", INSPIRCD_CONFIG_PATH, 1))
+ , Data(tag->getString("datadir", INSPIRCD_DATA_PATH, 1))
+ , Log(tag->getString("logdir", INSPIRCD_LOG_PATH, 1))
+ , Module(tag->getString("moduledir", INSPIRCD_MODULE_PATH, 1))
+ , Runtime(tag->getString("runtimedir", INSPIRCD_RUNTIME_PATH, 1))
{
}
}
}
-static std::string GetServerName()
+static std::string GetServerHost()
{
#ifndef _WIN32
char hostname[256];
ConfigTag* server = ConfValue("server");
if (sid.empty())
{
- ServerName = server->getString("name", GetServerName(), InspIRCd::IsHost);
+ ServerName = server->getString("name", GetServerHost(), InspIRCd::IsHost);
sid = server->getString("id");
if (!sid.empty() && !InspIRCd::IsSID(sid))
throw CoreException(sid + " is not a valid server ID. A server ID must be 3 characters long, with the first character a digit and the next two characters a digit or letter.");
- CaseMapping = options->getString("casemapping", "rfc1459");
+ CaseMapping = options->getString("casemapping", "rfc1459", 1);
if (CaseMapping == "ascii")
national_case_insensitive_map = ascii_case_insensitive_map;
else if (CaseMapping == "rfc1459")
MaxConn = ConfValue("performance")->getUInt("somaxconn", SOMAXCONN);
TimeSkipWarn = ConfValue("performance")->getDuration("timeskipwarn", 2, 0, 30);
XLineMessage = options->getString("xlinemessage", options->getString("moronbanner", "You're banned!"));
- ServerDesc = server->getString("description", "Configure Me");
- Network = server->getString("network", "Network");
+ ServerDesc = server->getString("description", "Configure Me", 1);
+ Network = server->getString("network", "Network", 1);
NetBufferSize = ConfValue("performance")->getInt("netbuffersize", 10240, 1024, 65534);
CustomVersion = security->getString("customversion");
HideBans = security->getBool("hidebans");
ReadXLine(this, "badhost", "host", ServerInstance->XLines->GetFactory("K"));
ReadXLine(this, "exception", "host", ServerInstance->XLines->GetFactory("E"));
- const std::string restrictbannedusers = options->getString("restrictbannedusers", "yes");
+ const std::string restrictbannedusers = options->getString("restrictbannedusers", "yes", 1);
if (stdalgo::string::equalsci(restrictbannedusers, "no"))
RestrictBannedUsers = ServerConfig::BUT_NORMAL;
else if (stdalgo::string::equalsci(restrictbannedusers, "silent"))
// On first run, ports are bound later on
FailedPortList pl;
ServerInstance->BindPorts(pl);
- if (pl.size())
+ if (!pl.empty())
{
- std::cout << "Warning! Some of your listener" << (pl.size() == 1 ? "s" : "") << " failed to bind:" << std::endl;
+ errstr << "Warning! Some of your listener" << (pl.size() == 1 ? "s" : "") << " failed to bind:" << std::endl;
for (FailedPortList::const_iterator iter = pl.begin(); iter != pl.end(); ++iter)
{
const FailedPort& fp = *iter;