X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Finspircd.h;h=9568750c2db84513ec26b1b736460d82e45cfd31;hb=511c11b8da024363fe2711a5ea9d600326073c8c;hp=89f0a08ee42fad27a8e29581791f056a6985be6d;hpb=7e46119759b7099c38f543bd38d0186b9806542f;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/inspircd.h b/include/inspircd.h index 89f0a08ee..9568750c2 100644 --- a/include/inspircd.h +++ b/include/inspircd.h @@ -77,7 +77,6 @@ CoreExport extern InspIRCd* ServerInstance; #include "socketengine.h" #include "snomasks.h" #include "filelogger.h" -#include "caller.h" #include "modules.h" #include "threadengine.h" #include "configreader.h" @@ -214,10 +213,10 @@ class serverstats unsigned long statsConnects; /** Total bytes of data transmitted */ - double statsSent; + unsigned long statsSent; /** Total bytes of data received */ - double statsRecv; + unsigned long statsRecv; /** Cpu usage at last sample */ timeval LastCPU; @@ -228,17 +227,19 @@ class serverstats */ serverstats() : statsAccept(0), statsRefused(0), statsUnknown(0), statsCollisions(0), statsDns(0), - statsDnsGood(0), statsDnsBad(0), statsConnects(0), statsSent(0.0), statsRecv(0.0) + statsDnsGood(0), statsDnsBad(0), statsConnects(0), statsSent(0), statsRecv(0) { } }; DEFINE_HANDLER2(IsNickHandler, bool, const char*, size_t); +DEFINE_HANDLER2(GenRandomHandler, void, char*, size_t); DEFINE_HANDLER1(IsIdentHandler, bool, const char*); DEFINE_HANDLER1(FloodQuitUserHandler, void, User*); DEFINE_HANDLER2(IsChannelHandler, bool, const char*, size_t); DEFINE_HANDLER1(IsSIDHandler, bool, const std::string&); DEFINE_HANDLER1(RehashHandler, void, const std::string&); +DEFINE_HANDLER3(OnCheckExemptionHandler, ModResult, User*, Channel*, const std::string&); /** The main class of the irc server. * This class contains instances of all the other classes in this software. @@ -307,9 +308,11 @@ class CoreExport InspIRCd IsNickHandler HandleIsNick; IsIdentHandler HandleIsIdent; FloodQuitUserHandler HandleFloodQuitUser; + OnCheckExemptionHandler HandleOnCheckExemption; IsChannelHandler HandleIsChannel; IsSIDHandler HandleIsSID; RehashHandler HandleRehash; + GenRandomHandler HandleGenRandom; /** Globally accessible fake user record. This is used to force mode changes etc across s2s, etc.. bit ugly, but.. better than how this was done in 1.1 * Reason for it: @@ -325,6 +328,8 @@ class CoreExport InspIRCd */ std::string GetUID(); + static const char LogHeader[]; + /** Find a user in the UUID hash * @param nick The nickname to find * @return A pointer to the user, or NULL if the user does not exist @@ -449,6 +454,20 @@ class CoreExport InspIRCd /** Update the current time. Don't call this unless you have reason to do so. */ void UpdateTime(); + /** Generate a random string with the given length + * @param length The length in bytes + * @param printable if false, the string will use characters 0-255; otherwise, + * it will be limited to 0x30-0x7E ('0'-'~', nonspace printable characters) + */ + std::string GenRandomStr(int length, bool printable = true); + /** Generate a random integer. + * This is generally more secure than rand() + */ + unsigned long GenRandomInt(unsigned long max); + + /** Fill a buffer with random bits */ + caller2 GenRandom; + /** Bind all ports specified in the configuration file. * @return The number of ports bound without error */ @@ -612,6 +631,14 @@ class CoreExport InspIRCd */ 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 @@ -710,7 +737,7 @@ class CoreExport InspIRCd /** Returns the full version string of this ircd * @return The version string */ - std::string GetVersionString(); + std::string GetVersionString(bool rawversion = false); /** Attempt to write the process id to a given file * @param filename The PID file to attempt to write to @@ -758,6 +785,13 @@ class CoreExport InspIRCd */ caller1 FloodQuitUser; + /** Called to check whether a channel restriction mode applies to a user + * @param User that is attempting some action + * @param Channel that the action is being performed on + * @param Action name + */ + caller3 OnCheckExemption; + /** Restart the server. * This function will not return. If an error occurs, * it will throw an instance of CoreException. @@ -813,7 +847,11 @@ class CommandModule : public Module public: CommandModule() : cmd(this) { - ServerInstance->AddCommand(&cmd); + } + + void init() + { + ServerInstance->Modules->AddService(cmd); } Version GetVersion()