]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/configreader.h
Fix for #564
[user/henk/code/inspircd.git] / include / configreader.h
index 7fc60203d9116b736798206744722a35b648c74d..62d757621815690640e2cc56ba09d429275d9756 100644 (file)
@@ -150,6 +150,8 @@ typedef ValueContainer<char*> ValueContainerChar;
  */
 typedef ValueContainer<int*> ValueContainerInt;
 
+typedef ValueContainer<size_t*> ValueContainerST;
+
 /** A set of ValueItems used by multi-value validator functions
  */
 typedef std::deque<ValueItem> ValueList;
@@ -226,6 +228,40 @@ struct operclass_data : public Extensible
 typedef std::map<irc::string, operclass_data> operclass_t;
 
 
+class ServerLimits : public Extensible
+{
+ public:
+       size_t NickMax;
+       size_t ChanMax;
+       size_t MaxModes;
+       size_t IdentMax;
+       size_t MaxQuit;
+       size_t MaxTopic;
+       size_t MaxKick;
+       size_t MaxGecos;
+       size_t MaxAway;
+
+       /* 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.
+        */
+       ServerLimits() : NickMax(31), ChanMax(64), MaxModes(20), IdentMax(12), MaxQuit(255), MaxTopic(307), MaxKick(255), MaxGecos(128), MaxAway(200)
+       {
+       }
+
+       void Finalise()
+       {
+               NickMax++;
+               ChanMax++;
+               IdentMax++;
+               MaxQuit++;
+               MaxTopic++;
+               MaxKick++;
+               MaxGecos++;
+               MaxAway++;
+       }
+};
+
 /** This class holds the bulk of the runtime configuration for the ircd.
  * It allows for reading new config values, accessing configuration files,
  * and storage of the configuration data needed to run the ircd, such as
@@ -249,7 +285,7 @@ class CoreExport ServerConfig : public Extensible
         * configutation, appending errors to errorstream
         * and setting error if an error has occured.
         */
-       bool ParseLine(ConfigDataHash &target, std::string &line, long &linenumber, std::ostringstream &errorstream);
+       bool ParseLine(ConfigDataHash &target, const std::string &filename, std::string &line, long &linenumber, std::ostringstream &errorstream);
 
        /** Check that there is only one of each configuration item
         */
@@ -275,11 +311,6 @@ class CoreExport ServerConfig : public Extensible
 
        std::map<std::string, std::istream*> IncludedFiles;
 
-       std::map<std::string, bool> CompletedFiles;
-
-       size_t TotalDownloaded;
-       size_t FileErrors;
-
        /** Used to indicate who we announce invites to on a channel */
        enum InviteAnnounceState { INVITE_ANNOUNCE_NONE, INVITE_ANNOUNCE_ALL, INVITE_ANNOUNCE_OPS, INVITE_ANNOUNCE_DYNAMIC };
 
@@ -295,6 +326,8 @@ class CoreExport ServerConfig : public Extensible
         */
        ConfigDataHash config_data;
 
+       ServerLimits Limits;
+
        /** Max number of WhoWas entries per user.
         */
        int WhoWasGroupSize;