]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/inspircd.h
Improve X-line text consistency.
[user/henk/code/inspircd.git] / include / inspircd.h
index a7f19f483171123635956686847ece1f1b70363d..f5c7dbafba02ca2f31981aa9e40b4111a583b1bf 100644 (file)
@@ -50,6 +50,7 @@
 #include "compat.h"
 #include "aligned_storage.h"
 #include "typedefs.h"
+#include "convto.h"
 #include "stdalgo.h"
 
 CoreExport extern InspIRCd* ServerInstance;
@@ -66,12 +67,12 @@ struct fakederef
 };
 
 #include "config.h"
-#include "convto.h"
 #include "dynref.h"
 #include "consolecolors.h"
 #include "cull_list.h"
 #include "extensible.h"
 #include "fileutils.h"
+#include "ctables.h"
 #include "numerics.h"
 #include "numeric.h"
 #include "uid.h"
@@ -83,7 +84,6 @@ struct fakederef
 #include "logger.h"
 #include "usermanager.h"
 #include "socket.h"
-#include "ctables.h"
 #include "command_parse.h"
 #include "mode.h"
 #include "socketengine.h"
@@ -91,6 +91,7 @@ struct fakederef
 #include "filelogger.h"
 #include "message.h"
 #include "modules.h"
+#include "clientprotocol.h"
 #include "threadengine.h"
 #include "configreader.h"
 #include "inspstring.h"
@@ -193,6 +194,8 @@ class CoreExport InspIRCd
         */
        char ReadBuffer[65535];
 
+       ClientProtocol::RFCEvents rfcevents;
+
        /** Check we aren't running as root, and exit if we are
         * with exit code EXIT_STATUS_ROOT.
         */
@@ -281,7 +284,7 @@ class CoreExport InspIRCd
         */
        TimerManager Timers;
 
-       /** X-Line manager. Handles G/K/Q/E line setting, removal and matching
+       /** X-line manager. Handles G/K/Q/E-line setting, removal and matching
         */
        XLineManager* XLines;
 
@@ -344,6 +347,13 @@ class CoreExport InspIRCd
         */
        static void DefaultGenRandom(char* output, size_t max);
 
+       /** Bind to a specific port from a config tag.
+        * @param tag the tag that contains bind information.
+        * @param sa The endpoint to listen on.
+        * @param old_ports Previously listening ports that may be on the same endpoint.
+        */
+       bool BindPort(ConfigTag* tag, const irc::sockets::sockaddrs& sa, std::vector<ListenSocket*>& old_ports);
+
        /** Bind all ports specified in the configuration file.
         * @return The number of ports bound without error
         */
@@ -381,6 +391,12 @@ class CoreExport InspIRCd
        */
        static bool DefaultIsChannel(const std::string& channel);
 
+       /** Determines whether a hostname is valid according to RFC 5891 rules.
+        * @param host The hostname to validate.
+        * @return True if the hostname is valid; otherwise, false.
+        */
+       static bool IsHost(const std::string& host);
+
        /** Return true if str looks like a server ID
         * @param sid string to check against
         */
@@ -486,6 +502,20 @@ class CoreExport InspIRCd
         */
        static unsigned long Duration(const std::string& str);
 
+       /** Calculate a duration in seconds from a string in the form 1y2w3d4h6m5s
+        * @param str A string containing a time in the form 1y2w3d4h6m5s
+        * (one year, two weeks, three days, four hours, six minutes and five seconds)
+        * @param duration The location to place the parsed duration valur
+        * @return Whether the duration was a valid format or not
+        */
+       static bool Duration(const std::string& str, unsigned long& duration);
+
+       /** Determines whether a string contains a valid duration.
+        * @param str A string containing a time in the form 1y2w3d4h6m5s
+        * @return True if the string is a valid duration; otherwise, false.
+        */
+       static bool IsValidDuration(const std::string& str);
+
        /** Attempt to compare a password to a string from the config file.
         * This will be passed to handling modules which will compare the data
         * against possible hashed equivalents in the input string.
@@ -552,29 +582,30 @@ class CoreExport InspIRCd
        {
                return this->ReadBuffer;
        }
+
+       ClientProtocol::RFCEvents& GetRFCEvents() { return rfcevents; }
 };
 
 ENTRYPOINT;
 
-template<class Cmd>
-class CommandModule : public Module
-{
-       Cmd cmd;
- public:
-       CommandModule() : cmd(this)
-       {
-       }
-
-       Version GetVersion() CXX11_OVERRIDE
-       {
-               return Version(cmd.name, VF_VENDOR|VF_CORE);
-       }
-};
-
 inline void stdalgo::culldeleter::operator()(classbase* item)
 {
        if (item)
                ServerInstance->GlobalCulls.AddItem(item);
 }
 
+inline void Channel::Write(ClientProtocol::EventProvider& protoevprov, ClientProtocol::Message& msg, char status, const CUList& except_list)
+{
+       ClientProtocol::Event event(protoevprov, msg);
+       Write(event, status, except_list);
+}
+
+inline void LocalUser::Send(ClientProtocol::EventProvider& protoevprov, ClientProtocol::Message& msg)
+{
+       ClientProtocol::Event event(protoevprov, msg);
+       Send(event);
+}
+
 #include "numericbuilder.h"
+#include "clientprotocolmsg.h"
+#include "clientprotocolevent.h"