X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fconfigreader.cpp;h=a922543a38ced7ab71137d8c1ef145e6fabcb35d;hb=acccaa39641500b8a691db4136e6571102a438ed;hp=b9417bf3caa62afe470814c2c9530d5713cb9542;hpb=b15cffc167391fc8af6cab52061d4b591ec5bbf8;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/configreader.cpp b/src/configreader.cpp index b9417bf3c..a922543a3 100644 --- a/src/configreader.cpp +++ b/src/configreader.cpp @@ -36,7 +36,6 @@ ServerConfig::ServerConfig() dns_timeout = 5; MaxTargets = 20; NetBufferSize = 10240; - SoftLimit = SocketEngine::GetMaxFds(); MaxConn = SOMAXCONN; MaxChans = 20; OperMaxChans = 30; @@ -70,17 +69,16 @@ bool ServerConfig::ApplyDisabledCommands(const std::string& data) std::string thiscmd; /* Enable everything first */ - for (Commandtable::iterator x = ServerInstance->Parser->cmdlist.begin(); x != ServerInstance->Parser->cmdlist.end(); x++) + const CommandParser::CommandMap& commands = ServerInstance->Parser.GetCommands(); + for (CommandParser::CommandMap::const_iterator x = commands.begin(); x != commands.end(); ++x) x->second->Disable(false); /* Now disable all the ones which the user wants disabled */ while (dcmds >> thiscmd) { - Commandtable::iterator cm = ServerInstance->Parser->cmdlist.find(thiscmd); - if (cm != ServerInstance->Parser->cmdlist.end()) - { - cm->second->Disable(true); - } + Command* handler = ServerInstance->Parser.GetHandler(thiscmd); + if (handler) + handler->Disable(true); } return true; } @@ -176,7 +174,7 @@ void ServerConfig::CrossCheckConnectBlocks(ServerConfig* current) for(ClassVector::iterator i = current->Classes.begin(); i != current->Classes.end(); ++i) { ConnectClass* c = *i; - if (c->name.substr(0, 8) != "unnamed-") + if (c->name.compare(0, 8, "unnamed-", 8)) { oldBlocksByMask["n" + c->name] = c; } @@ -366,7 +364,7 @@ void ServerConfig::Fill() if (!nsid.empty() && nsid != sid) throw CoreException("You must restart to change the server id"); } - SoftLimit = ConfValue("performance")->getInt("softlimit", SocketEngine::GetMaxFds(), 10, SocketEngine::GetMaxFds()); + SoftLimit = ConfValue("performance")->getInt("softlimit", (SocketEngine::GetMaxFds() > 0 ? SocketEngine::GetMaxFds() : LONG_MAX), 10); CCOnConnect = ConfValue("performance")->getBool("clonesonconnect", true); MaxConn = ConfValue("performance")->getInt("somaxconn", SOMAXCONN); XLineMessage = options->getString("xlinemessage", options->getString("moronbanner", "You're banned!")); @@ -392,23 +390,24 @@ void ServerConfig::Fill() DefaultModes = options->getString("defaultmodes", "not"); PID = ConfValue("pid")->getString("file"); MaxChans = ConfValue("channels")->getInt("users", 20); - OperMaxChans = ConfValue("channels")->getInt("opers", 60); + OperMaxChans = ConfValue("channels")->getInt("opers"); c_ipv4_range = ConfValue("cidr")->getInt("ipv4clone", 32); c_ipv6_range = ConfValue("cidr")->getInt("ipv6clone", 128); Limits.NickMax = ConfValue("limits")->getInt("maxnick", 32); Limits.ChanMax = ConfValue("limits")->getInt("maxchan", 64); Limits.MaxModes = ConfValue("limits")->getInt("maxmodes", 20); Limits.IdentMax = ConfValue("limits")->getInt("maxident", 11); + Limits.MaxHost = ConfValue("limits")->getInt("maxhost", 64); Limits.MaxQuit = ConfValue("limits")->getInt("maxquit", 255); Limits.MaxTopic = ConfValue("limits")->getInt("maxtopic", 307); Limits.MaxKick = ConfValue("limits")->getInt("maxkick", 255); Limits.MaxGecos = ConfValue("limits")->getInt("maxgecos", 128); Limits.MaxAway = ConfValue("limits")->getInt("maxaway", 200); Limits.MaxLine = ConfValue("limits")->getInt("maxline", 512); - Paths.Config = ConfValue("path")->getString("configdir", CONFIG_PATH); - Paths.Data = ConfValue("path")->getString("datadir", DATA_PATH); - Paths.Log = ConfValue("path")->getString("logdir", LOG_PATH); - Paths.Module = ConfValue("path")->getString("moduledir", MOD_PATH); + Paths.Config = ConfValue("path")->getString("configdir", INSPIRCD_CONFIG_PATH); + Paths.Data = ConfValue("path")->getString("datadir", INSPIRCD_DATA_PATH); + Paths.Log = ConfValue("path")->getString("logdir", INSPIRCD_LOG_PATH); + Paths.Module = ConfValue("path")->getString("moduledir", INSPIRCD_MODULE_PATH); InvBypassModes = options->getBool("invitebypassmodes", true); NoSnoticeStack = options->getBool("nosnoticestack", false); @@ -585,7 +584,10 @@ void ServerConfig::Apply(ServerConfig* old, const std::string &useruid) User* user = useruid.empty() ? NULL : ServerInstance->FindNick(useruid); if (!valid) + { ServerInstance->Logs->Log("CONFIG", LOG_DEFAULT, "There were errors in your configuration file:"); + Classes.clear(); + } while (errstr.good()) { @@ -781,6 +783,9 @@ void ConfigReaderThread::Finish() for (ModuleManager::ModuleMap::const_iterator i = mods.begin(); i != mods.end(); ++i) i->second->ReadConfig(status); + // The description of this server may have changed - update it for WHOIS etc. + ServerInstance->FakeClient->server->description = Config->ServerDesc; + ServerInstance->ISupport.Build(); ServerInstance->Logs->CloseLogs();