X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fmodules.h;h=7ae620752abb1edebaf566f162bbd56386a8facb;hb=06a25cab68a58a4c9e985a394590b3288de33723;hp=ce6e3fa217714dbbb7d83f5687ddb5aad181a409;hpb=e2f4bf3a135e6b23fea21b2628c2c830de29cdec;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/modules.h b/include/modules.h index ce6e3fa21..7ae620752 100644 --- a/include/modules.h +++ b/include/modules.h @@ -230,21 +230,17 @@ do { \ #define FD_MAGIC_NUMBER -42 /* Useful macros */ -#ifdef WINDOWS + /** Is a local user */ #define IS_LOCAL(x) ((x->GetFd() > -1)) -#else -/** Is a local user */ -#define IS_LOCAL(x) ((x->GetFd() > -1) && (x->GetFd() <= MAX_DESCRIPTORS)) -#endif /** Is a remote user */ #define IS_REMOTE(x) (x->GetFd() < 0) /** Is a module created user */ #define IS_MODULE_CREATED(x) (x->GetFd() == FD_MAGIC_NUMBER) /** Is an oper */ -#define IS_OPER(x) (*x->oper) +#define IS_OPER(x) (!x->oper.empty()) /** Is away */ -#define IS_AWAY(x) (*x->awaymsg) +#define IS_AWAY(x) (!x->awaymsg.empty()) /** Holds a module's Version information. * The four members (set by the constructor only) indicate details as to the version number @@ -401,7 +397,7 @@ enum Implementation I_OnRawSocketAccept, I_OnRawSocketClose, I_OnRawSocketWrite, I_OnRawSocketRead, I_OnChangeLocalUserGECOS, I_OnUserRegister, I_OnChannelPreDelete, I_OnChannelDelete, I_OnPostOper, I_OnSyncOtherMetaData, I_OnSetAway, I_OnUserList, I_OnPostCommand, I_OnPostJoin, I_OnWhoisLine, I_OnBuildExemptList, I_OnRawSocketConnect, I_OnGarbageCollect, I_OnBufferFlushed, - I_OnText, I_OnReadConfig, I_OnDownloadFile, I_OnPassCompare, I_OnRunTestSuite, I_OnNamesListItem, I_OnNumeric, I_OnHookUserIO, + I_OnText, I_OnPassCompare, I_OnRunTestSuite, I_OnNamesListItem, I_OnNumeric, I_OnHookUserIO, I_END }; @@ -436,10 +432,6 @@ class CoreExport Module : public Extensible { } - virtual void OnReadConfig(ServerConfig* config, ConfigReader* coreconf); - - virtual int OnDownloadFile(const std::string &filename, std::istream* &filedata); - /** Returns the version number of a Module. * The method should return a Version object with its version information assigned via * Version::Version @@ -553,9 +545,10 @@ class CoreExport Module : public Extensible * @param cname The channel name being joined. For new channels this is valid where chan is not. * @param privs A string containing the users privilages when joining the channel. For new channels this will contain "@". * You may alter this string to alter the user's modes on the channel. + * @param keygiven The key given to join the channel, or an empty string if none was provided * @return 1 To prevent the join, 0 to allow it. */ - virtual int OnUserPreJoin(User* user, Channel* chan, const char* cname, std::string &privs); + virtual int OnUserPreJoin(User* user, Channel* chan, const char* cname, std::string &privs, const std::string &keygiven); /** Called whenever a user is about to be kicked. * Returning a value of 1 from this function stops the process immediately, causing no @@ -1041,10 +1034,11 @@ class CoreExport Module : public Extensible * @param pcnt The nuimber of parameters passed to the command * @param user the user issuing the command * @param validated True if the command has passed all checks, e.g. it is recognised, has enough parameters, the user has permission to execute it, etc. + * You should only change the parameter list and command string if validated == false (e.g. before the command lookup occurs). * @param original_line The entire original line as passed to the parser from the user * @return 1 to block the command, 0 to allow */ - virtual int OnPreCommand(const std::string &command, const char* const* parameters, int pcnt, User *user, bool validated, const std::string &original_line); + virtual int OnPreCommand(std::string &command, std::vector& parameters, User *user, bool validated, const std::string &original_line); /** Called after any command has been executed. * This event occurs for all registered commands, wether they are registered in the core, @@ -1058,7 +1052,7 @@ class CoreExport Module : public Extensible * @param result The return code given by the command handler, one of CMD_SUCCESS or CMD_FAILURE * @param original_line The entire original line as passed to the parser from the user */ - virtual void OnPostCommand(const std::string &command, const char* const* parameters, int pcnt, User *user, CmdResult result, const std::string &original_line); + virtual void OnPostCommand(const std::string &command, const std::vector& parameters, User *user, CmdResult result, const std::string &original_line); /** Called to check if a user who is connecting can now be allowed to register * If any modules return false for this function, the user is held in the waiting @@ -1134,7 +1128,8 @@ class CoreExport Module : public Extensible * return 1 to explicitly allow the join to go ahead or 0 to ignore the event. * @param user The user joining the channel * @param chan The channel being joined - * @return 1 to explicitly allow the join, 0 to proceed as normal + * @return 1 to explicitly allow the join, 0 to proceed as normal. Return -1 to explicitly deny the + * join to the channel. */ virtual int OnCheckBan(User* user, Channel* chan); @@ -1868,10 +1863,31 @@ class CoreExport ModuleManager : public classbase * and functions needed to make a module loadable by the OS. * It defines the class factory and external init_module function. */ +#ifdef WINDOWS + +#define MODULE_INIT(y) \ + extern "C" DllExport Module * init_module(InspIRCd* Me) \ + { \ + return new y(Me); \ + } \ + BOOLEAN WINAPI DllMain(HINSTANCE hDllHandle, DWORD nReason, LPVOID Reserved) \ + { \ + switch ( nReason ) \ + { \ + case DLL_PROCESS_ATTACH: \ + case DLL_PROCESS_DETACH: \ + break; \ + } \ + return TRUE; \ + } + +#else + #define MODULE_INIT(y) \ extern "C" DllExport Module * init_module(InspIRCd* Me) \ { \ return new y(Me); \ } +#endif #endif