X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fconfigreader.cpp;h=58a932981a402a8213c7386c30a9fd083e9372da;hb=d04db003df83ddfdc2b5b9ae0e360335d88ae769;hp=2a50a22b394a2aa96831b75a82650425565b2ded;hpb=020c1d6ea658956e7cb2462a748790a4f4e30787;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/configreader.cpp b/src/configreader.cpp index 2a50a22b3..58a932981 100644 --- a/src/configreader.cpp +++ b/src/configreader.cpp @@ -219,7 +219,7 @@ void ServerConfig::CrossCheckConnectBlocks(ServerConfig* current) } } - int blk_count = config_data.count("connect"); + size_t blk_count = config_data.count("connect"); if (blk_count == 0) { // No connect blocks found; make a trivial default block @@ -231,14 +231,14 @@ void ServerConfig::CrossCheckConnectBlocks(ServerConfig* current) } Classes.resize(blk_count); - std::map names; + std::map names; bool try_again = true; - for(int tries=0; try_again; tries++) + for(size_t tries = 0; try_again; tries++) { try_again = false; ConfigTagList tags = ConfTags("connect"); - int i=0; + size_t i = 0; for(ConfigIter it = tags.first; it != tags.second; ++it, ++i) { ConfigTag* tag = it->second; @@ -249,7 +249,7 @@ void ServerConfig::CrossCheckConnectBlocks(ServerConfig* current) std::string parentName = tag->getString("parent"); if (!parentName.empty()) { - std::map::iterator parentIter = names.find(parentName); + std::map::const_iterator parentIter = names.find(parentName); if (parentIter == names.end()) { try_again = true; @@ -311,7 +311,7 @@ void ServerConfig::CrossCheckConnectBlocks(ServerConfig* current) if (tag->readString("sendq", sendq)) { // attempt to guess a good hard/soft sendq from a single value - long value = atol(sendq.c_str()); + unsigned long value = strtoul(sendq.c_str(), NULL, 10); if (value > 16384) me->softsendqmax = value / 16; else @@ -431,7 +431,7 @@ void ServerConfig::Fill() CustomVersion = security->getString("customversion"); HideSplits = security->getBool("hidesplits"); HideBans = security->getBool("hidebans"); - HideWhoisServer = security->getString("hidewhois"); + HideServer = security->getString("hideserver", security->getString("hidewhois")); HideKillsServer = security->getString("hidekills"); HideULineKills = security->getBool("hideulinekills"); RestrictBannedUsers = security->getBool("restrictbannedusers", true); @@ -444,15 +444,12 @@ void ServerConfig::Fill() PID = ConfValue("pid")->getString("file"); MaxChans = ConfValue("channels")->getInt("users", 20); OperMaxChans = ConfValue("channels")->getInt("opers"); - c_ipv4_range = ConfValue("cidr")->getInt("ipv4clone", 32); - c_ipv6_range = ConfValue("cidr")->getInt("ipv6clone", 128); + c_ipv4_range = ConfValue("cidr")->getInt("ipv4clone", 32, 1, 32); + c_ipv6_range = ConfValue("cidr")->getInt("ipv6clone", 128, 1, 128); Limits = ServerLimits(ConfValue("limits")); Paths = ServerPaths(ConfValue("path")); NoSnoticeStack = options->getBool("nosnoticestack", false); - if (Network.find(' ') != std::string::npos) - throw CoreException(Network + " is not a valid network name. A network name must not contain spaces."); - std::string defbind = options->getString("defaultbind"); if (stdalgo::string::equalsci(defbind, "ipv4")) { @@ -495,25 +492,6 @@ void ServerConfig::Fill() throw CoreException("Invalid chanmode " + std::string(1, *p) + " was found."); DisabledCModes.set(*p - 'A'); } - - std::string v = security->getString("announceinvites"); - - if (v == "ops") - AnnounceInvites = ServerConfig::INVITE_ANNOUNCE_OPS; - else if (v == "all") - AnnounceInvites = ServerConfig::INVITE_ANNOUNCE_ALL; - else if (v == "dynamic") - AnnounceInvites = ServerConfig::INVITE_ANNOUNCE_DYNAMIC; - else - AnnounceInvites = ServerConfig::INVITE_ANNOUNCE_NONE; - - v = security->getString("operspywhois"); - if (v == "splitmsg") - OperSpyWhois = SPYWHOIS_SPLITMSG; - else if (v == "on" || v == "yes") - OperSpyWhois = SPYWHOIS_SINGLEMSG; - else - OperSpyWhois = SPYWHOIS_NONE; } // WARNING: it is not safe to use most of the codebase in this function, as it @@ -551,7 +529,7 @@ void ServerConfig::Apply(ServerConfig* old, const std::string &useruid) /* The stuff in here may throw CoreException, be sure we're in a position to catch it. */ try { - for (int index = 0; index * sizeof(DeprecatedConfig) < sizeof(ChangedConfig); index++) + for (unsigned long index = 0; index * sizeof(DeprecatedConfig) < sizeof(ChangedConfig); index++) { std::string value; ConfigTagList tags = ConfTags(ChangedConfig[index].tag); @@ -812,15 +790,23 @@ void ConfigReaderThread::Finish() ServerInstance->Users.RehashCloneCounts(); ServerInstance->XLines->CheckELines(); ServerInstance->XLines->ApplyLines(); - ChanModeReference ban(NULL, "ban"); - static_cast(*ban)->DoRehash(); Config->ApplyDisabledCommands(); User* user = ServerInstance->FindNick(TheUserUID); ConfigStatus status(user); const ModuleManager::ModuleMap& mods = ServerInstance->Modules->GetModules(); for (ModuleManager::ModuleMap::const_iterator i = mods.begin(); i != mods.end(); ++i) - i->second->ReadConfig(status); + { + try + { + ServerInstance->Logs->Log("MODULE", LOG_DEBUG, "Rehashing " + i->first); + i->second->ReadConfig(status); + } + catch (CoreException& modex) + { + ServerInstance->Logs->Log("MODULE", LOG_DEFAULT, "Exception caught: " + modex.GetReason()); + } + } // The description of this server may have changed - update it for WHOIS etc. ServerInstance->FakeClient->server->description = Config->ServerDesc;