]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/configreader.cpp
Rename <options:moronbanner> to <options:xlinemessage>.
[user/henk/code/inspircd.git] / src / configreader.cpp
index b8c54bef9a5ba5ae41696bafcdf3da71b94ea827..d7d448bc4e4f303562e57c3d149485432677a9d9 100644 (file)
@@ -32,7 +32,7 @@
 ServerConfig::ServerConfig()
 {
        RawLog = HideBans = HideSplits = UndernetMsgPrefix = false;
-       WildcardIPv6 = CycleHosts = InvBypassModes = true;
+       WildcardIPv6 = InvBypassModes = true;
        dns_timeout = 5;
        MaxTargets = 20;
        NetBufferSize = 10240;
@@ -44,16 +44,6 @@ ServerConfig::ServerConfig()
        c_ipv6_range = 128;
 }
 
-template<typename T, typename V>
-static void range(T& value, V min, V max, V def, const char* msg)
-{
-       if (value >= (T)min && value <= (T)max)
-               return;
-       ServerInstance->Logs->Log("CONFIG", LOG_DEFAULT, "WARNING: %s value of %ld is not between %ld and %ld; set to %ld.",
-               msg, (long)value, (long)min, (long)max, (long)def);
-       value = def;
-}
-
 static void ValidHost(const std::string& p, const std::string& msg)
 {
        int num_dots = 0;
@@ -309,7 +299,7 @@ void ServerConfig::CrossCheckConnectBlocks(ServerConfig* current)
                        me->maxchans = tag->getInt("maxchans", me->maxchans);
                        me->maxconnwarn = tag->getBool("maxconnwarn", me->maxconnwarn);
                        me->limit = tag->getInt("limit", me->limit);
-                       me->nouserdns = tag->getBool("nouserdns", me->nouserdns);
+                       me->resolvehostnames = tag->getBool("resolvehostnames", me->resolvehostnames);
 
                        ClassMap::iterator oldMask = oldBlocksByMask.find(typeMask);
                        if (oldMask != oldBlocksByMask.end())
@@ -349,7 +339,8 @@ static const DeprecatedConfig ChangedConfig[] = {
        { "link",        "transport",   "",                 "has been moved to <link:ssl> as of 2.0" },
        { "module",      "name",        "m_chanprotect.so", "has been replaced with m_customprefix as of 2.2" },
        { "module",      "name",        "m_halfop.so",      "has been replaced with m_customprefix as of 2.2" },
-       { "performance", "nouserdns",   "",                 "has been moved to <connect:nouserdns> as of 2.2" }
+       { "options",     "cyclehosts",  "",                 "has been replaced with m_hostcycle as of 2.2" },
+       { "performance", "nouserdns",   "",                 "has been moved to <connect:resolvehostnames> as of 2.2" }
 };
 
 void ServerConfig::Fill()
@@ -358,9 +349,10 @@ void ServerConfig::Fill()
        ConfigTag* security = ConfValue("security");
        if (sid.empty())
        {
-               ServerName = ConfValue("server")->getString("name");
-               sid = ConfValue("server")->getString("id");
+               ServerName = ConfValue("server")->getString("name", "irc.example.com");
                ValidHost(ServerName, "<server:name>");
+
+               sid = ConfValue("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.");
        }
@@ -382,22 +374,22 @@ void ServerConfig::Fill()
        PrefixPart = options->getString("prefixpart");
        SuffixPart = options->getString("suffixpart");
        FixedPart = options->getString("fixedpart");
-       SoftLimit = ConfValue("performance")->getInt("softlimit", ServerInstance->SE->GetMaxFds());
+       SoftLimit = ConfValue("performance")->getInt("softlimit", ServerInstance->SE->GetMaxFds(), 10, ServerInstance->SE->GetMaxFds());
        CCOnConnect = ConfValue("performance")->getBool("clonesonconnect", true);
        MaxConn = ConfValue("performance")->getInt("somaxconn", SOMAXCONN);
-       MoronBanner = options->getString("moronbanner", "You're banned!");
+       XLineMessage = options->getString("xlinemessage", options->getString("moronbanner", "You're banned!"));
        ServerDesc = ConfValue("server")->getString("description", "Configure Me");
        Network = ConfValue("server")->getString("network", "Network");
        AdminName = ConfValue("admin")->getString("name", "");
        AdminEmail = ConfValue("admin")->getString("email", "null@example.com");
        AdminNick = ConfValue("admin")->getString("nick", "admin");
        ModPath = ConfValue("path")->getString("moduledir", MOD_PATH);
-       NetBufferSize = ConfValue("performance")->getInt("netbuffersize", 10240);
+       NetBufferSize = ConfValue("performance")->getInt("netbuffersize", 10240, 1024, 65534);
        dns_timeout = ConfValue("dns")->getInt("timeout", 5);
        DisabledCommands = ConfValue("disabled")->getString("commands", "");
        DisabledDontExist = ConfValue("disabled")->getBool("fakenonexistant");
        UserStats = security->getString("userstats");
-       CustomVersion = security->getString("customversion", Network + " IRCd");
+       CustomVersion = security->getString("customversion");
        HideSplits = security->getBool("hidesplits");
        HideBans = security->getBool("hidebans");
        HideWhoisServer = security->getString("hidewhois");
@@ -405,11 +397,10 @@ void ServerConfig::Fill()
        RestrictBannedUsers = security->getBool("restrictbannedusers", true);
        GenericOper = security->getBool("genericoper");
        SyntaxHints = options->getBool("syntaxhints");
-       CycleHosts = options->getBool("cyclehosts");
        CycleHostsFromUser = options->getBool("cyclehostsfromuser");
        UndernetMsgPrefix = options->getBool("ircumsgprefix");
        FullHostInTopic = options->getBool("hostintopic");
-       MaxTargets = security->getInt("maxtargets", 20);
+       MaxTargets = security->getInt("maxtargets", 20, 1, 31);
        DefaultModes = options->getString("defaultmodes", "nt");
        PID = ConfValue("pid")->getString("file");
        MaxChans = ConfValue("channels")->getInt("users", 20);
@@ -432,10 +423,6 @@ void ServerConfig::Fill()
        if (Network.find(' ') != std::string::npos)
                throw CoreException(Network + " is not a valid network name. A network name must not contain spaces.");
 
-       range(SoftLimit, 10, ServerInstance->SE->GetMaxFds(), ServerInstance->SE->GetMaxFds(), "<performance:softlimit>");
-       range(MaxTargets, 1, 31, 20, "<security:maxtargets>");
-       range(NetBufferSize, 1024, 65534, 10240, "<performance:netbuffersize>");
-
        std::string defbind = options->getString("defaultbind");
        if (assign(defbind) == "ipv4")
        {
@@ -461,6 +448,10 @@ void ServerConfig::Fill()
                std::string server;
                if (!tag->readString("server", server))
                        throw CoreException("<uline> tag missing server at " + tag->getTagLocation());
+
+               if (ServerName == server)
+                       throw CoreException("Servers should not uline themselves (at " + tag->getTagLocation() + ")");
+
                ulines[assign(server)] = tag->getBool("silent");
        }
 
@@ -565,7 +556,7 @@ void ServerConfig::Apply(ServerConfig* old, const std::string &useruid)
                                        {
                                                errstr << ' ' << ChangedConfig[index].key << "=\"" << ChangedConfig[index].value << "\"";
                                        }
-                                       errstr << "> - " << ChangedConfig[index].reason << " (at " << i->second->getTagLocation() << ")\n";
+                                       errstr << "> - " << ChangedConfig[index].reason << " (at " << i->second->getTagLocation() << ")" << std::endl;
                                }
                        }
                }
@@ -588,6 +579,11 @@ void ServerConfig::Apply(ServerConfig* old, const std::string &useruid)
        if (valid)
                ServerInstance->WritePID(this->PID);
 
+       ConfigTagList binds = ConfTags("bind");
+       if (binds.first == binds.second)
+                errstr << "Possible configuration error: you have not defined any <bind> blocks." << std::endl
+                        << "You will need to do this if you want clients to be able to connect!" << std::endl;
+
        if (old)
        {
                // On first run, ports are bound later on
@@ -829,7 +825,7 @@ void ConfigReaderThread::Finish()
                static_cast<ListModeBase*>(*ban)->DoRehash();
                Config->ApplyDisabledCommands(Config->DisabledCommands);
                User* user = ServerInstance->FindNick(TheUserUID);
-               FOREACH_MOD(I_OnRehash, OnRehash(user));
+               FOREACH_MOD(OnRehash, (user));
                ServerInstance->ISupport.Build();
 
                ServerInstance->Logs->CloseLogs();