]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/configreader.h
Fix a bunch of really obvious unnecessary includes.
[user/henk/code/inspircd.git] / include / configreader.h
index 1db64ae5a6af7890a7512ed76167e9a3892ba458..66f7920be7471b6d9f0ad4c9513e407c6506f3b9 100644 (file)
@@ -1,11 +1,18 @@
 /*
  * InspIRCd -- Internet Relay Chat Daemon
  *
- *   Copyright (C) 2009 Daniel De Graaf <danieldg@inspircd.org>
- *   Copyright (C) 2007, 2009 Dennis Friis <peavey@inspircd.org>
- *   Copyright (C) 2006-2008 Craig Edwards <craigedwards@brainbox.cc>
- *   Copyright (C) 2006-2008 Robin Burchell <robin+git@viroteck.net>
- *   Copyright (C) 2006 Oliver Lupton <oliverlupton@gmail.com>
+ *   Copyright (C) 2019 Matt Schatz <genius3000@g3k.solutions>
+ *   Copyright (C) 2018 Chris Novakovic <chrisnovakovic@users.noreply.github.com>
+ *   Copyright (C) 2013-2014, 2016 Attila Molnar <attilamolnar@hush.com>
+ *   Copyright (C) 2013 Daniel Vassdal <shutter@canternet.org>
+ *   Copyright (C) 2012-2014, 2016-2021 Sadie Powell <sadie@witchery.services>
+ *   Copyright (C) 2012, 2019 Robby <robby@chatbelgie.be>
+ *   Copyright (C) 2009-2010 Daniel De Graaf <danieldg@inspircd.org>
+ *   Copyright (C) 2008 Thomas Stagner <aquanight@inspircd.org>
+ *   Copyright (C) 2007-2008 Robin Burchell <robin+git@viroteck.net>
+ *   Copyright (C) 2007 Dennis Friis <peavey@inspircd.org>
+ *   Copyright (C) 2006-2008 Craig Edwards <brain@inspircd.org>
+ *   Copyright (C) 2006 Oliver Lupton <om@inspircd.org>
  *
  * This file is part of InspIRCd.  InspIRCd is free software: you can
  * redistribute it and/or modify it under the terms of the GNU General Public
 
 #pragma once
 
-#include <sstream>
-#include <string>
-#include <vector>
-#include <map>
 #include "inspircd.h"
-#include "modules.h"
-#include "socketengine.h"
-#include "socket.h"
 #include "token_list.h"
 
 /** Structure representing a single \<tag> in config */
@@ -89,6 +89,8 @@ class CoreExport ConfigTag : public refcountbase
 class ServerLimits
 {
  public:
+       /** Maximum line length */
+       size_t MaxLine;
        /** Maximum nickname length */
        size_t NickMax;
        /** Maximum channel length */
@@ -107,8 +109,6 @@ class ServerLimits
        size_t MaxReal;
        /** Maximum away message length */
        size_t MaxAway;
-       /** Maximum line length */
-       size_t MaxLine;
        /** Maximum hostname length */
        size_t MaxHost;
 
@@ -160,12 +160,13 @@ struct CommandLineConf
         */
        bool writepid;
 
-       /** Saved argc from startup
-        */
+       /* Whether the --runasroot option was specified at boot. */
+       bool runasroot;
+
+       /** Saved argc from startup. */
        int argc;
 
-       /** Saved argv from startup
-        */
+       /** Saved argv from startup. */
        char** argv;
 };
 
@@ -181,6 +182,9 @@ class CoreExport OperInfo : public refcountbase
        /** Allowed channel modes from oper classes. */
        std::bitset<64> AllowedChanModes;
 
+       /** Allowed snomasks from oper classes. */
+       std::bitset<64> AllowedSnomasks;
+
        /** \<oper> block used for this oper-up. May be NULL. */
        reference<ConfigTag> oper_block;
        /** \<type> block used for this oper-up. Valid for local users, may be NULL on remote */
@@ -240,12 +244,16 @@ class CoreExport ServerConfig
                /** Module path */
                std::string Module;
 
+               /** Runtime path */
+               std::string Runtime;
+
                ServerPaths(ConfigTag* tag);
 
                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); }
                std::string PrependLog(const std::string& fn) const { return FileSystem::ExpandPath(Log, fn); }
                std::string PrependModule(const std::string& fn) const { return FileSystem::ExpandPath(Module, fn); }
+               std::string PrependRuntime(const std::string& fn) const { return FileSystem::ExpandPath(Runtime, fn); }
        };
 
        /** Holds a complete list of all connect blocks
@@ -303,12 +311,12 @@ class CoreExport ServerConfig
        CommandLineConf cmdline;
 
        /** Clones CIDR range for ipv4 (0-32)
-        * Defaults to 32 (checks clones on all IPs seperately)
+        * Defaults to 32 (checks clones on all IPs separately)
         */
        unsigned char c_ipv4_range;
 
        /** Clones CIDR range for ipv6 (0-128)
-        * Defaults to 128 (checks on all IPs seperately)
+        * Defaults to 128 (checks on all IPs separately)
         */
        unsigned char c_ipv6_range;
 
@@ -322,7 +330,7 @@ class CoreExport ServerConfig
        std::string XLineMessage;
 
        /* Holds the network name the local server
-        * belongs to. This is an arbitary field defined
+        * belongs to. This is an arbitrary field defined
         * by the administrator.
         */
        std::string Network;
@@ -332,18 +340,6 @@ class CoreExport ServerConfig
         */
        std::string ServerDesc;
 
-       /** Pretend disabled commands don't exist.
-        */
-       bool DisabledDontExist;
-
-       /** This variable identifies which usermodes have been diabled.
-        */
-       std::bitset<64> DisabledUModes;
-
-       /** This variable identifies which chanmodes have been disabled.
-        */
-       std::bitset<64> DisabledCModes;
-
        /** How to treat a user in a channel who is banned. */
        BannedUserTreatment RestrictBannedUsers;
 
@@ -376,8 +372,11 @@ class CoreExport ServerConfig
         */
        unsigned int MaxTargets;
 
-       /** True if we're going to hide ban reasons for non-opers (e.g. G-Lines,
-        * K-Lines, Z-Lines)
+       /** The number of seconds that the server clock can skip by before server operators are warned. */
+       time_t TimeSkipWarn;
+
+       /** True if we're going to hide ban reasons for non-opers (e.g. G-lines,
+        * K-lines, Z-lines)
         */
        bool HideBans;
 
@@ -433,7 +432,7 @@ class CoreExport ServerConfig
         */
        unsigned int OperMaxChans;
 
-       /** TS6-like server ID.
+       /** Unique server ID.
         * NOTE: 000...999 are usable for InspIRCd servers. This
         * makes code simpler. 0AA, 1BB etc with letters are reserved
         * for services use.
@@ -450,6 +449,12 @@ class CoreExport ServerConfig
         */
        const std::string& GetSID() const { return sid; }
 
+       /** Retrieves the server name which should be shown to users. */
+       const std::string& GetServerName() const { return HideServer.empty() ? ServerName : HideServer; }
+
+       /** Retrieves the server description which should be shown to users. */
+       const std::string& GetServerDesc() const { return HideServer.empty() ? ServerDesc : HideServer; }
+
        /** Read the entire configuration into memory
         * and initialize this class. All other methods
         * should be used only by the core.
@@ -463,9 +468,6 @@ class CoreExport ServerConfig
 
        void Fill();
 
-       /** Disables the commands specified in <disabled:commands>. */
-       bool ApplyDisabledCommands();
-
        /** Escapes a value for storage in a configuration key.
         * @param str The string to escape.
         * @param xml Are we using the XML config format?
@@ -502,13 +504,23 @@ class CoreExport ConfigReaderThread : public Thread
        bool IsDone() { return done; }
 };
 
+/** Represents the status of a config load. */
 class CoreExport ConfigStatus
 {
  public:
+       /** Whether this is the initial config load. */
+       bool const initial;
+
+       /** The user who initiated the config load or NULL if not initiated by a user. */
        User* const srcuser;
 
-       ConfigStatus(User* user = NULL)
-               : srcuser(user)
+       /** Initializes a new instance of the ConfigStatus class.
+        * @param user The user who initiated the config load or NULL if not initiated by a user.
+        * @param isinitial Whether this is the initial config load.
+        */
+       ConfigStatus(User* user = NULL, bool isinitial = false)
+               : initial(isinitial)
+               , srcuser(user)
        {
        }
 };