X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fconfigreader.h;h=fb93adafd65383d11b01c1dd01c5979c5552e230;hb=b9e11915a976daaf790ebc763aff56e19fd49e0f;hp=a46f9cf95ce2bb5b370f0b85062bb2fa7538d069;hpb=575a3126834d3f283f6296e33c8bce94ee7a0f59;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/configreader.h b/include/configreader.h index a46f9cf95..fb93adafd 100644 --- a/include/configreader.h +++ b/include/configreader.h @@ -83,8 +83,7 @@ class CoreExport ConfigTag : public refcountbase inline const std::vector& getItems() const { return items; } /** Create a new ConfigTag, giving access to the private KeyVal item list */ - static ConfigTag* create(const std::string& Tag, const std::string& file, int line, - std::vector*&items); + static ConfigTag* create(const std::string& Tag, const std::string& file, int line, std::vector*& Items); private: ConfigTag(const std::string& Tag, const std::string& file, int line); }; @@ -115,14 +114,16 @@ class ServerLimits size_t MaxAway; /** Maximum line length */ size_t MaxLine; + /** 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) { } + ServerLimits(ConfigTag* tag); + + /** Maximum length of a n!u@h mask */ + size_t GetMaxMask() const { return NickMax + 1 + IdentMax + 1 + MaxHost; } }; struct CommandLineConf @@ -152,11 +153,6 @@ struct CommandLineConf */ bool writelog; - /** True if we have been told to run the testsuite from the commandline, - * rather than entering the mainloop. - */ - bool TestSuite; - /** Saved argc from startup */ int argc; @@ -169,8 +165,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; @@ -220,10 +217,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); } @@ -231,6 +228,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 */ @@ -238,6 +243,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; @@ -303,67 +311,6 @@ class CoreExport ServerConfig */ std::string ServerDesc; - /** Holds the admin's name, for output in - * the /ADMIN command. - */ - std::string AdminName; - - /** Holds the email address of the admin, - * for output in the /ADMIN command. - */ - std::string AdminEmail; - - /** Holds the admin's nickname, for output - * in the /ADMIN command - */ - std::string AdminNick; - - /** The admin-configured /DIE password - */ - std::string diepass; - - /** The admin-configured /RESTART password - */ - std::string restartpass; - - /** The hash method for *BOTH* the die and restart passwords. - */ - std::string powerhash; - - /** The pathname and filename of the message of the - * day file, as defined by the administrator. - */ - std::string motd; - - /** The pathname and filename of the rules file, - * as defined by the administrator. - */ - std::string rules; - - /** The quit prefix in use, or an empty string - */ - std::string PrefixQuit; - - /** The quit suffix in use, or an empty string - */ - std::string SuffixQuit; - - /** The fixed quit message in use, or an empty string - */ - std::string FixedQuit; - - /** The part prefix in use, or an empty string - */ - std::string PrefixPart; - - /** The part suffix in use, or an empty string - */ - std::string SuffixPart; - - /** The fixed part message in use, or an empty string - */ - std::string FixedPart; - /** Pretend disabled commands don't exist. */ bool DisabledDontExist; @@ -393,12 +340,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. */ @@ -462,6 +403,10 @@ class CoreExport ServerConfig */ std::string HideKillsServer; + /** Set to hide kills from clients of ulined servers in snotices. + */ + bool HideULineKills; + /** The full pathname and filename of the PID * file as defined in the configuration. */ @@ -484,10 +429,6 @@ class CoreExport ServerConfig */ std::string CustomVersion; - /** List of u-lined servers - */ - std::map ulines; - /** If set to true, provide syntax hints for unknown commands */ bool SyntaxHints; @@ -497,11 +438,6 @@ class CoreExport ServerConfig */ bool CycleHostsFromUser; - /** If set to true, prefixed channel NOTICEs and PRIVMSGs will have the prefix - * added to the outgoing text for undernet style msg prefixing. - */ - bool UndernetMsgPrefix; - /** If set to true, the full nick!user\@host will be shown in the TOPIC command * for who set the topic last. If false, only the nick is shown. */ @@ -515,11 +451,11 @@ class CoreExport ServerConfig */ OperIndex OperTypes; - /** Max channels per user + /** Default value for , deprecated in 2.2 */ unsigned int MaxChans; - /** Oper max channels per user + /** Default value for , deprecated in 2.2 */ unsigned int OperMaxChans; @@ -534,6 +470,8 @@ class CoreExport ServerConfig */ ServerConfig(); + ~ServerConfig(); + /** Get server ID as string with required leading zeroes */ const std::string& GetSID() const { return sid; } @@ -559,10 +497,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;