, MaxQuit(tag->getUInt("maxquit", 255))
, MaxTopic(tag->getUInt("maxtopic", 307))
, MaxKick(tag->getUInt("maxkick", 255))
- , MaxGecos(tag->getUInt("maxgecos", 128))
+ , MaxReal(tag->getUInt("maxreal", tag->getUInt("maxgecos", 128)))
, MaxAway(tag->getUInt("maxaway", 200))
, MaxLine(tag->getUInt("maxline", 512))
, MaxHost(tag->getUInt("maxhost", 64))
delete EmptyTag;
}
-static void ValidHost(const std::string& p, const std::string& msg)
-{
- int num_dots = 0;
- if (p.empty() || p[0] == '.')
- throw CoreException("The value of "+msg+" is not a valid hostname");
- for (unsigned int i=0;i < p.length();i++)
- {
- switch (p[i])
- {
- case ' ':
- throw CoreException("The value of "+msg+" is not a valid hostname");
- case '.':
- num_dots++;
- break;
- }
- }
- if (num_dots == 0)
- throw CoreException("The value of "+msg+" is not a valid hostname");
-}
-
bool ServerConfig::ApplyDisabledCommands()
{
// Enable everything first.
ConfigTag* server = ConfValue("server");
if (sid.empty())
{
- ServerName = server->getString("name", "irc.example.com");
- ValidHost(ServerName, "<server:name>");
+ ServerName = server->getString("name", "irc.example.com", InspIRCd::IsHost);
sid = server->getString("id");
if (!sid.empty() && !InspIRCd::IsSID(sid))
HideServer = security->getString("hideserver", security->getString("hidewhois"));
HideKillsServer = security->getString("hidekills");
HideULineKills = security->getBool("hideulinekills");
- RestrictBannedUsers = security->getBool("restrictbannedusers", true);
GenericOper = security->getBool("genericoper");
SyntaxHints = options->getBool("syntaxhints");
CycleHostsFromUser = options->getBool("cyclehostsfromuser");
ReadXLine(this, "badhost", "host", ServerInstance->XLines->GetFactory("K"));
ReadXLine(this, "exception", "host", ServerInstance->XLines->GetFactory("E"));
+ const std::string restrictbannedusers = options->getString("restrictbannedusers", "yes");
+ if (stdalgo::string::equalsci(restrictbannedusers, "no"))
+ RestrictBannedUsers = ServerConfig::BUT_NORMAL;
+ else if (stdalgo::string::equalsci(restrictbannedusers, "silent"))
+ RestrictBannedUsers = ServerConfig::BUT_RESTRICT_SILENT;
+ else if (stdalgo::string::equalsci(restrictbannedusers, "yes"))
+ RestrictBannedUsers = ServerConfig::BUT_RESTRICT_NOTIFY;
+ else
+ throw CoreException(restrictbannedusers + " is an invalid <options:restrictbannedusers> value, at " + options->getTagLocation());
+
DisabledUModes.reset();
std::string modes = ConfValue("disabled")->getString("usermodes");
for (std::string::const_iterator p = modes.begin(); p != modes.end(); ++p)
for (ClassVector::const_iterator it = this->Classes.begin(), it_end = this->Classes.end(); it != it_end; ++it)
{
ConfigTag *tag = (*it)->config;
- // Make sure our connection class allows motd colors
- if(!tag->getBool("allowmotdcolors"))
- continue;
ConfigFileCache::iterator file = this->Files.find(tag->getString("motd", "motd"));
if (file != this->Files.end())