]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/configreader.h
Remove the default value in ConfigTag::get{Duration,Float,Int}.
[user/henk/code/inspircd.git] / include / configreader.h
index 36bb3297e5ee88b48067b747bf380262fe4e6464..bb4c03fae2c1f1a9ba8e84bc06f7db382bb5c178 100644 (file)
@@ -31,6 +31,7 @@
 #include "modules.h"
 #include "socketengine.h"
 #include "socket.h"
+#include "token_list.h"
 
 /** Structure representing a single \<tag> in config */
 class CoreExport ConfigTag : public refcountbase
@@ -44,9 +45,9 @@ class CoreExport ConfigTag : public refcountbase
        /** Get the value of an option, using def if it does not exist */
        std::string getString(const std::string& key, const std::string& def = "", size_t minlen = 0, size_t maxlen = UINT32_MAX);
        /** Get the value of an option, using def if it does not exist */
-       long getInt(const std::string& key, long def = 0, long min = LONG_MIN, long max = LONG_MAX);
+       long getInt(const std::string& key, long def, long min = LONG_MIN, long max = LONG_MAX);
        /** Get the value of an option, using def if it does not exist */
-       double getFloat(const std::string& key, double def = 0);
+       double getFloat(const std::string& key, double def);
        /** Get the value of an option, using def if it does not exist */
        bool getBool(const std::string& key, bool def = false);
 
@@ -58,7 +59,7 @@ class CoreExport ConfigTag : public refcountbase
         * @param max Maximum acceptable value (optional)
         * @return The duration in seconds
         */
-       long getDuration(const std::string& key, long def = 0, long min = LONG_MIN, long max = LONG_MAX);
+       long getDuration(const std::string& key, long def, long min = LONG_MIN, long max = LONG_MAX);
 
        /** Get the value of an option
         * @param key The option to get
@@ -165,9 +166,8 @@ struct CommandLineConf
 class CoreExport OperInfo : public refcountbase
 {
  public:
-       typedef insp::flat_set<std::string> PrivSet;
-       PrivSet AllowedOperCommands;
-       PrivSet AllowedPrivs;
+       TokenList AllowedOperCommands;
+       TokenList AllowedPrivs;
 
        /** Allowed user modes from oper classes. */
        std::bitset<64> AllowedUserModes;
@@ -184,6 +184,11 @@ class CoreExport OperInfo : public refcountbase
        /** Name of the oper type; i.e. the one shown in WHOIS */
        std::string name;
 
+       /** Creates a new OperInfo with the specified oper type name.
+        * @param Name The name of the oper type.
+        */
+       OperInfo(const std::string& Name);
+
        /** Get a configuration item, searching in the oper, type, and class blocks (in that order) */
        std::string getConfig(const std::string& key);
        void init();
@@ -252,11 +257,7 @@ class CoreExport ServerConfig
        /** Bind to IPv6 by default */
        bool WildcardIPv6;
 
-       /** 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 };
-       enum OperSpyWhoisState { SPYWHOIS_NONE, SPYWHOIS_SINGLEMSG, SPYWHOIS_SPLITMSG };
-
-       /** This holds all the information in the config file,
+       /** This holds all the information in the config file,
         * it's indexed by tag name to a vector of key/values.
         */
        ConfigDataHash config_data;
@@ -280,12 +281,12 @@ class CoreExport ServerConfig
        /** Clones CIDR range for ipv4 (0-32)
         * Defaults to 32 (checks clones on all IPs seperately)
         */
-       int c_ipv4_range;
+       unsigned char c_ipv4_range;
 
        /** Clones CIDR range for ipv6 (0-128)
         * Defaults to 128 (checks on all IPs seperately)
         */
-       int c_ipv6_range;
+       unsigned char c_ipv6_range;
 
        /** Holds the server name of the local server
         * as defined by the administrator.
@@ -311,19 +312,13 @@ class CoreExport ServerConfig
         */
        bool DisabledDontExist;
 
-       /** This variable contains a space-seperated list
-        * of commands which are disabled by the
-        * administrator of the server for non-opers.
-        */
-       std::string DisabledCommands;
-
        /** This variable identifies which usermodes have been diabled.
         */
-       char DisabledUModes[64];
+       std::bitset<64> DisabledUModes;
 
        /** This variable identifies which chanmodes have been disabled.
         */
-       char DisabledCModes[64];
+       std::bitset<64> DisabledCModes;
 
        /** If set to true, then all opers on this server are
         * shown with a generic 'is an IRC operator' line rather
@@ -374,21 +369,11 @@ class CoreExport ServerConfig
         */
        bool HideBans;
 
-       /** Announce invites to the channel with a server notice
-        */
-       InviteAnnounceState AnnounceInvites;
-
-       /** If this is enabled then operators will
-        * see invisible (+i) channels in /whois.
-        */
-       OperSpyWhoisState OperSpyWhois;
-
        /** True if raw I/O is being logged */
        bool RawLog;
 
-       /** Set to a non-empty string to obfuscate the server name of users in WHOIS
-        */
-       std::string HideWhoisServer;
+       /** Set to a non-empty string to obfuscate server names. */
+       std::string HideServer;
 
        /** Set to a non empty string to obfuscate nicknames prepended to a KILL.
         */
@@ -484,7 +469,8 @@ class CoreExport ServerConfig
 
        void Fill();
 
-       bool ApplyDisabledCommands(const std::string& data);
+       /** Disables the commands specified in <disabled:commands>. */
+       bool ApplyDisabledCommands();
 
        /** Escapes a value for storage in a configuration key.
         * @param str The string to escape.
@@ -516,7 +502,7 @@ class CoreExport ConfigReaderThread : public Thread
                delete Config;
        }
 
-       void Run();
+       void Run() CXX11_OVERRIDE;
        /** Run in the main thread to apply the configuration */
        void Finish();
        bool IsDone() { return done; }