X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fconfigreader.h;h=9b73dd3c630a095fdc5e3e59889a25e86fcff670;hb=42de16029da37f08ce1827352aa78b4b29d888cb;hp=f59fba389299e39862fe9ffdd05b97128b9ce867;hpb=c511bb56f5ceff1e395d82c4bfd78e5c23aabab6;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/configreader.h b/include/configreader.h index f59fba389..9b73dd3c6 100644 --- a/include/configreader.h +++ b/include/configreader.h @@ -117,13 +117,10 @@ class ServerLimits /** Maximum hostname length */ size_t MaxHost; - /** Creating the class initialises it to the defaults - * as in 1.1's ./configure script. Reading other values - * from the config will change these values. + /** Read all limits from a config tag. Limits which aren't specified in the tag are set to a default value. + * @param tag Configuration tag to read the limits from */ - ServerLimits() : NickMax(31), ChanMax(64), MaxModes(20), IdentMax(12), - MaxQuit(255), MaxTopic(307), MaxKick(255), MaxGecos(128), MaxAway(200), - MaxLine(512), MaxHost(64) { } + ServerLimits(ConfigTag* tag); }; struct CommandLineConf @@ -165,8 +162,9 @@ struct CommandLineConf class CoreExport OperInfo : public refcountbase { public: - std::set AllowedOperCommands; - std::set AllowedPrivs; + typedef insp::flat_set PrivSet; + PrivSet AllowedOperCommands; + PrivSet AllowedPrivs; /** Allowed user modes from oper classes. */ std::bitset<64> AllowedUserModes; @@ -216,10 +214,10 @@ class CoreExport ServerConfig std::string Module; ServerPaths() - : Config(CONFIG_PATH) - , Data(DATA_PATH) - , Log(LOG_PATH) - , Module(MOD_PATH) { } + : Config(INSPIRCD_CONFIG_PATH) + , Data(INSPIRCD_DATA_PATH) + , Log(INSPIRCD_LOG_PATH) + , Module(INSPIRCD_MODULE_PATH) { } std::string PrependConfig(const std::string& fn) const { return FileSystem::ExpandPath(Config, fn); } std::string PrependData(const std::string& fn) const { return FileSystem::ExpandPath(Data, fn); } @@ -227,6 +225,14 @@ class CoreExport ServerConfig std::string PrependModule(const std::string& fn) const { return FileSystem::ExpandPath(Module, fn); } }; + /** Holds a complete list of all connect blocks + */ + typedef std::vector > ClassVector; + + /** Index of valid oper blocks and types + */ + typedef insp::flat_map > OperIndex; + /** Get a configuration tag * @param tag The name of the tag to get */ @@ -234,6 +240,9 @@ class CoreExport ServerConfig ConfigTagList ConfTags(const std::string& tag); + /** An empty configuration tag. */ + ConfigTag* EmptyTag; + /** Error stream, contains error output from any failed configuration parsing. */ std::stringstream errstr; @@ -328,12 +337,6 @@ class CoreExport ServerConfig */ bool RestrictBannedUsers; - /** If this is set to true, then mode lists (e.g - * MODE \#chan b) are hidden from unprivileged - * users. - */ - bool HideModeLists[256]; - /** The number of seconds the DNS subsystem * will wait before timing out any request. */ @@ -465,6 +468,8 @@ class CoreExport ServerConfig */ ServerConfig(); + ~ServerConfig(); + /** Get server ID as string with required leading zeroes */ const std::string& GetSID() const { return sid; } @@ -490,10 +495,6 @@ class CoreExport ServerConfig */ static std::string Escape(const std::string& str, bool xml = true); - /** If this value is true, invites will bypass more than just +i - */ - bool InvBypassModes; - /** If this value is true, snotices will not stack when repeats are sent */ bool NoSnoticeStack;