X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Finspircd.h;h=aa6be2deeb3c3cd25f60137603999828ed89fc90;hb=3624c137a6db85eaab0372550c9dca79d6d21e55;hp=bc0b9cd1ba263e2dd18be86dad6d6a2a3edb4545;hpb=8790551dc182cd8804ee7d8ef89ccb31067cc2a4;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/inspircd.h b/include/inspircd.h index bc0b9cd1b..aa6be2dee 100644 --- a/include/inspircd.h +++ b/include/inspircd.h @@ -25,69 +25,31 @@ #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 -#if defined _LIBCPP_VERSION || defined _WIN32 -# define TR1NS std -# include -#else -# define TR1NS std::tr1 -# 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" @@ -112,16 +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. - */ -#define MAXPARAMETERS 127 - /** Returned by some functions to indicate failure. */ #define ERROR -1 @@ -130,20 +82,19 @@ CoreExport extern InspIRCd* ServerInstance; */ template inline std::string ConvNumeric(const T &in) { - if (in == 0) return "0"; - char res[MAXBUF]; - char* out = res; + if (in == 0) + return "0"; T quotient = in; - while (quotient) { - *out = "0123456789"[ std::abs( (long)quotient % 10 ) ]; - ++out; + std::string out; + while (quotient) + { + out += "0123456789"[ std::abs( (long)quotient % 10 ) ]; quotient /= 10; } if (in < 0) - *out++ = '-'; - *out = 0; - std::reverse(res,out); - return res; + out += '-'; + std::reverse(out.begin(), out.end()); + return out; } /** Template function to convert any input type to std::string @@ -289,10 +240,10 @@ 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&); @@ -319,16 +270,6 @@ class CoreExport InspIRCd */ void DoSocketTimeouts(time_t TIME); - /** Perform background user events such as PING checks - */ - void DoBackgroundUserStuff(); - - /** Returns true when all modules have done pre-registration checks on a user - * @param user The user to verify - * @return True if all modules have finished checking this user - */ - bool AllModulesReportReady(LocalUser* user); - /** The current time, updated in the mainloop */ struct timespec TIME; @@ -367,8 +308,6 @@ class CoreExport InspIRCd */ FakeUser* FakeClient; - 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 @@ -454,16 +393,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; @@ -541,18 +476,11 @@ class CoreExport InspIRCd */ 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 @@ -584,12 +512,21 @@ 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, ...) CUSTOM_PRINTF(1, 2); + static const char* Format(va_list &vaList, const char* formatString) CUSTOM_PRINTF(2, 0); + static void QuickExit(int status); /** Return a count of channels on the network * @return The number of channels */ - long ChannelCount(); + long ChannelCount() const { return chanlist->size(); } /** Send an error notice to all local users, opered and unopered * @param s The error string to send @@ -600,7 +537,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 @@ -617,22 +554,6 @@ class CoreExport InspIRCd Modules->AddService(*f); } - /** Send a modechange. - * The parameters provided are identical to that sent to the - * handler for class cmd_mode. - * @param parameters The mode parameters - * @param user The user to send error messages to - */ - void SendMode(const std::vector& parameters, User *user); - - /** Send a modechange and route it to the network. - * The parameters provided are identical to that sent to the - * handler for class cmd_mode. - * @param parameters The mode parameters - * @param user The user to send error messages to - */ - void SendGlobalMode(const std::vector& parameters, User *user); - /** 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. * @param str The literal string to match against @@ -640,7 +561,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. @@ -650,7 +571,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 @@ -726,7 +654,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