]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/configreader.h
Introduce ModeProcessFlags, can be passed to ModeParser::Process() to indicate local...
[user/henk/code/inspircd.git] / include / configreader.h
index 509ff9c0cbaad88327edf48e05078775cf5ff00f..a17c5cf3eb294223ca2115e02ee33c3318c96f5f 100644 (file)
@@ -21,8 +21,7 @@
  */
 
 
-#ifndef INSPIRCD_CONFIGREADER
-#define INSPIRCD_CONFIGREADER
+#pragma once
 
 #include <sstream>
 #include <string>
@@ -94,29 +93,16 @@ class ServerLimits
        size_t MaxGecos;
        /** Maximum away message length */
        size_t MaxAway;
+       /** Maximum line length */
+       size_t MaxLine;
 
        /** 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)
-       {
-       }
-
-       /** Finalises the settings by adding one. This allows for them to be used as-is
-        * without a 'value+1' when using the std::string assignment methods etc.
-        */
-       void Finalise()
-       {
-               NickMax++;
-               ChanMax++;
-               IdentMax++;
-               MaxQuit++;
-               MaxTopic++;
-               MaxKick++;
-               MaxGecos++;
-               MaxAway++;
-       }
+       ServerLimits() : NickMax(31), ChanMax(64), MaxModes(20), IdentMax(12),
+               MaxQuit(255), MaxTopic(307), MaxKick(255), MaxGecos(128), MaxAway(200),
+               MaxLine(512) { }
 };
 
 struct CommandLineConf
@@ -158,8 +144,6 @@ struct CommandLineConf
        /** Saved argv from startup
         */
        char** argv;
-
-       std::string startup_log;
 };
 
 class CoreExport OperInfo : public refcountbase
@@ -186,11 +170,6 @@ class CoreExport OperInfo : public refcountbase
        /** Get a configuration item, searching in the oper, type, and class blocks (in that order) */
        std::string getConfig(const std::string& key);
        void init();
-
-       inline const char* NameStr()
-       {
-               return irc::Spacify(name.c_str());
-       }
 };
 
 /** This class holds the bulk of the runtime configuration for the ircd.
@@ -255,19 +234,6 @@ class CoreExport ServerConfig
         */
        int c_ipv6_range;
 
-       /** Max number of WhoWas entries per user.
-        */
-       int WhoWasGroupSize;
-
-       /** Max number of cumulative user-entries in WhoWas.
-        *  When max reached and added to, push out oldest entry FIFO style.
-        */
-       int WhoWasMaxGroups;
-
-       /** Max seconds a user is kept in WhoWas before being pruned.
-        */
-       int WhoWasMaxKeep;
-
        /** Holds the server name of the local server
         * as defined by the administrator.
         */
@@ -349,10 +315,6 @@ class CoreExport ServerConfig
         */
        std::string FixedPart;
 
-       /** The DNS server to use for DNS queries
-        */
-       std::string DNSServer;
-
        /** Pretend disabled commands don't exist.
         */
        bool DisabledDontExist;
@@ -460,16 +422,6 @@ class CoreExport ServerConfig
         */
        ClassVector Classes;
 
-       /** The 005 tokens of this server (ISUPPORT)
-        * populated/repopulated upon loading or unloading
-        * modules.
-        */
-       std::string data005;
-
-       /** isupport strings
-        */
-       std::vector<std::string> isupport;
-
        /** STATS characters in this list are available
         * only to operators.
         */
@@ -487,14 +439,6 @@ class CoreExport ServerConfig
         */
        std::map<irc::string, bool> ulines;
 
-       /** Max banlist sizes for channels (the std::string is a glob)
-        */
-       std::map<std::string, int> maxbans;
-
-       /** If set to true, no user DNS lookups are to be performed
-        */
-       bool NoUserDns;
-
        /** If set to true, provide syntax hints for unknown commands
         */
        bool SyntaxHints;
@@ -545,15 +489,7 @@ class CoreExport ServerConfig
 
        /** Get server ID as string with required leading zeroes
         */
-       std::string GetSID();
-
-       /** Update the 005 vector
-        */
-       void Update005();
-
-       /** Send the 005 numerics (ISUPPORT) to a user
-        */
-       void Send005(User* user);
+       const std::string& GetSID() const { return sid; }
 
        /** Read the entire configuration into memory
         * and initialize this class. All other methods
@@ -568,7 +504,7 @@ class CoreExport ServerConfig
 
        void Fill();
 
-       /* Returns true if the given string starts with a windows drive letter
+       /** Returns true if the given string starts with a windows drive letter
         */
        bool StartsWithWindowsDriveLetter(const std::string &path);
 
@@ -585,6 +521,12 @@ class CoreExport ServerConfig
         * @return True if the file exists and is readable.
         */
        static bool FileExists(const char* file);
+       
+       /** Escapes a value for storage in a configuration key.
+        * @param str The string to escape.
+        * @param xml Are we using the XML config format?
+        */
+       static std::string Escape(const std::string& str, bool xml = true);
 
        /** If this value is true, invites will bypass more than just +i
         */
@@ -593,7 +535,6 @@ class CoreExport ServerConfig
        /** If this value is true, snotices will not stack when repeats are sent
         */
        bool NoSnoticeStack;
-
 };
 
 /** The background thread for config reading, so that reading from executable includes
@@ -620,5 +561,3 @@ class CoreExport ConfigReaderThread : public Thread
        void Finish();
        bool IsDone() { return done; }
 };
-
-#endif