X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Finspircd.h;h=f3208dec23ee38976124b725d9b57ad74c4af369;hb=5ad9b97fcff193ebce91a923c5006632501abf97;hp=f61d48529d959f2a1da96331863c283aec4cbe2f;hpb=1858feabd342636df0b52780c978979b4e049fc3;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/inspircd.h b/include/inspircd.h index f61d48529..f3208dec2 100644 --- a/include/inspircd.h +++ b/include/inspircd.h @@ -23,70 +23,33 @@ */ -#ifndef INSPIRCD_H -#define INSPIRCD_H +#pragma once -#define _FILE_OFFSET_BITS 64 -#ifndef _LARGEFILE_SOURCE -#define _LARGEFILE_SOURCE -#endif - -#ifndef _WIN32 -#define DllExport -#define CoreExport -#else -#include "inspircd_win32wrapper.h" -/** Windows defines these already */ -#undef ERROR -#endif - -#ifdef __GNUC__ -#define CUSTOM_PRINTF(STRING, FIRST) __attribute__((format(printf, STRING, FIRST))) -#else -#define CUSTOM_PRINTF(STRING, FIRST) -#endif - -#if defined __clang__ || defined __GNUC__ -# define DEPRECATED_METHOD(function) function __attribute__((deprecated)) -#elif defined _MSC_VER -# define DEPRECATED_METHOD(function) __declspec(deprecated) function -#else -# pragma message ("Warning! DEPRECATED_METHOD() does not work on your compiler!") -# define DEPRECATED_METHOD(function) function -#endif - -// Required system headers. -#include -#include -#include -#include -#include #include +#include +#include +#include #include -#ifndef _WIN32 -#include -#endif +#include +#include -#ifdef _WIN32 -# include -#else -# include -#endif -#include -#include -#include -#include +#include +#include #include +#include #include -#include #include -#include -#include "config.h" +#include +#include +#include + +#include "compat.h" #include "typedefs.h" -#include "consolecolors.h" CoreExport extern InspIRCd* ServerInstance; +#include "config.h" +#include "consolecolors.h" #include "caller.h" #include "cull_list.h" #include "extensible.h" @@ -111,11 +74,6 @@ CoreExport extern InspIRCd* ServerInstance; #include "inspstring.h" #include "protocol.h" -#ifndef PATH_MAX -#warning Potentially broken system, PATH_MAX undefined -#define PATH_MAX 4096 -#endif - /** * Used to define the maximum number of parameters a command may have. */ @@ -288,15 +246,13 @@ public: void SendTo(LocalUser* user); }; -DEFINE_HANDLER2(IsNickHandler, bool, const std::string&, size_t); +DEFINE_HANDLER1(IsNickHandler, bool, const std::string&); DEFINE_HANDLER2(GenRandomHandler, void, char*, size_t); DEFINE_HANDLER1(IsIdentHandler, bool, const std::string&); -DEFINE_HANDLER2(IsChannelHandler, bool, const std::string&, size_t); +DEFINE_HANDLER1(IsChannelHandler, bool, const std::string&); DEFINE_HANDLER1(RehashHandler, void, const std::string&); DEFINE_HANDLER3(OnCheckExemptionHandler, ModResult, User*, Channel*, const std::string&); -class TestSuite; - /** The main class of the irc server. * This class contains instances of all the other classes in this software. * Amongst other things, it contains a ModeParser, a DNS object, a CommandParser @@ -306,10 +262,6 @@ class TestSuite; class CoreExport InspIRCd { private: - /** Holds the current UID. Used to generate the next one. - */ - char current_uid[UUID_LENGTH]; - /** Set up the signal handlers */ void SetSignals(); @@ -324,10 +276,6 @@ class CoreExport InspIRCd */ void DoSocketTimeouts(time_t TIME); - /** Increments the current UID by one. - */ - void IncrementUID(int pos); - /** Perform background user events such as PING checks */ void DoBackgroundUserStuff(); @@ -349,6 +297,8 @@ class CoreExport InspIRCd public: + UIDGenerator UIDGen; + /** Global cull list, will be processed on next iteration */ CullList GlobalCulls; @@ -374,24 +324,12 @@ class CoreExport InspIRCd */ FakeUser* FakeClient; - /** Returns the next available UID for this server. - */ - std::string GetUID(); - - static const char LogHeader[]; - /** Find a user in the UUID hash * @param uid The UUID to find * @return A pointer to the user, or NULL if the user does not exist */ User* FindUUID(const std::string &uid); - /** Find a user in the UUID hash - * @param uid The UUID to find - * @return A pointer to the user, or NULL if the user does not exist - */ - User* FindUUID(const char *uid); - /** Time this ircd was booted */ time_t startup_time; @@ -449,10 +387,6 @@ class CoreExport InspIRCd */ SnomaskManager* SNO; - /** DNS class, provides resolver facilities to the core and modules - */ - DNS* Res; - /** Timer manager class, triggers Timer timer events */ TimerManager* Timers; @@ -475,16 +409,12 @@ class CoreExport InspIRCd /** Set to the current signal recieved */ - int s_signal; + static sig_atomic_t s_signal; /** Protocol interface, overridden by server protocol modules */ ProtocolInterface* PI; - /** Holds extensible for user nickforced - */ - LocalIntExt NICKForced; - /** Holds extensible for user operquit */ LocalStringExt OperQuit; @@ -547,17 +477,6 @@ class CoreExport InspIRCd */ User* FindNick(const std::string &nick); - /** Find a user in the nick hash. - * If the user cant be found in the nick hash check the uuid hash - * @param nick The nickname to find - * @return A pointer to the user, or NULL if the user does not exist - */ - User* FindNick(const char* nick); - - /** Find a user in the nick hash ONLY - */ - User* FindNickOnly(const char* nick); - /** Find a user in the nick hash ONLY */ User* FindNickOnly(const std::string &nick); @@ -568,29 +487,16 @@ class CoreExport InspIRCd */ Channel* FindChan(const std::string &chan); - /** Find a channel in the channels hash - * @param chan The channel to find - * @return A pointer to the channel, or NULL if the channel does not exist - */ - Channel* FindChan(const char* chan); - /** Check we aren't running as root, and exit if we are * @return Depending on the configuration, this function may never return */ void CheckRoot(); - /** Determine the right path for, and open, the logfile - * @param argv The argv passed to main() initially, used to calculate program path - * @param argc The argc passed to main() initially, used to calculate program path - * @return True if the log could be opened, false if otherwise - */ - bool OpenLog(char** argv, int argc); - /** Return true if a channel name is valid * @param chname A channel name to verify * @return True if the name is valid */ - caller2 IsChannel; + caller1 IsChannel; /** Return true if str looks like a server ID * @param string to check against @@ -622,6 +528,14 @@ class CoreExport InspIRCd /** Causes the server to exit immediately with exit code 0. * The status code is required for signal handlers, and ignored. */ + + /** Printf-wrapper. + * @param How you want it formatted + * @param ... + * @return The formatted string + */ + static const char* Format(const char* formatString, ...); + static void QuickExit(int status); /** Return a count of channels on the network @@ -638,7 +552,7 @@ class CoreExport InspIRCd * @param n A nickname to verify * @return True if the nick is valid */ - caller2 IsNick; + caller1 IsNick; /** Return true if an ident is valid * @param An ident to verify @@ -646,24 +560,6 @@ class CoreExport InspIRCd */ caller1 IsIdent; - /** Add a dns Resolver class to this server's active set - * @param r The resolver to add - * @param cached If this value is true, then the cache will - * be searched for the DNS result, immediately. If the value is - * false, then a request will be sent to the nameserver, and the - * result will not be immediately available. You should usually - * use the boolean value which you passed to the Resolver - * constructor, which Resolver will set appropriately depending - * on if cached results are available and haven't expired. It is - * however safe to force this value to false, forcing a remote DNS - * lookup, but not an update of the cache. - * @return True if the operation completed successfully. Note that - * if this method returns true, you should not attempt to access - * the resolver class you pass it after this call, as depending upon - * the request given, the object may be deleted! - */ - bool AddResolver(Resolver* r, bool cached); - /** Add a command to this server's command parser * @param f A Command command handler object to add * @throw ModuleException Will throw ModuleExcption if the command already exists @@ -696,7 +592,7 @@ class CoreExport InspIRCd * @param map The character map to use when matching. */ static bool Match(const std::string &str, const std::string &mask, unsigned const char *map = NULL); - static bool Match(const char *str, const char *mask, unsigned const char *map = NULL); + static bool Match(const char *str, const char *mask, unsigned const char *map = NULL); /** Match two strings using pattern matching, optionally, with a map * to check case against (may be NULL). If map is null, match will be case insensitive. @@ -706,7 +602,14 @@ class CoreExport InspIRCd * @param map The character map to use when matching. */ static bool MatchCIDR(const std::string &str, const std::string &mask, unsigned const char *map = NULL); - static bool MatchCIDR(const char *str, const char *mask, unsigned const char *map = NULL); + static bool MatchCIDR(const char *str, const char *mask, unsigned const char *map = NULL); + + /** Matches a hostname and IP against a space delimited list of hostmasks. + * @param masks The space delimited masks to match against. + * @param hostname The hostname to try and match. + * @param ipaddr The IP address to try and match. + */ + static bool MatchMask(const std::string& masks, const std::string& hostname, const std::string& ipaddr); /** Return true if the given parameter is a valid nick!user\@host mask * @param mask A nick!user\@host masak to match against @@ -782,7 +685,7 @@ class CoreExport InspIRCd /** Returns the full version string of this ircd * @return The version string */ - std::string GetVersionString(bool rawversion = false); + std::string GetVersionString(bool getFullVersion = false); /** Attempt to write the process id to a given file * @param filename The PID file to attempt to write to @@ -852,8 +755,6 @@ class CoreExport InspIRCd { return this->ReadBuffer; } - - friend class TestSuite; }; ENTRYPOINT; @@ -877,6 +778,3 @@ class CommandModule : public Module return Version(cmd.name, VF_VENDOR|VF_CORE); } }; - -#endif -