]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/modules.h
Use binary comparison of IP addresses when checking reverse/forward DNS match; fixes...
[user/henk/code/inspircd.git] / include / modules.h
index 536313d8fb5ccaf12f8f22aa41c0f99dffbc1b28..2f0f48b00cd09cae2c8afe58b93324b07583c075 100644 (file)
@@ -3,7 +3,7 @@
  *       +------------------------------------+
  *
  *  InspIRCd: (C) 2002-2009 InspIRCd Development Team
- * See: http://www.inspircd.org/wiki/index.php/Credits
+ * See: http://wiki.inspircd.org/Credits
  *
  * This program is free but copyrighted software; see
  *         the file COPYING for details.
@@ -223,6 +223,26 @@ do { \
        } \
 } while (0);
 
+#define FOREACH_RESULT_MAP(y,x,f) \
+do { \
+       EventHandlerIter safei; \
+       for (EventHandlerIter _i = ServerInstance->Modules->EventHandlers[y].begin(); _i != ServerInstance->Modules->EventHandlers[y].end(); ) \
+       { \
+               safei = _i; \
+               ++safei; \
+               try \
+               { \
+                       int MOD_RESULT = (*_i)->x ; \
+                       f; \
+               } \
+               catch (CoreException& modexcept) \
+               { \
+                       ServerInstance->Logs->Log("MODULE",DEFAULT,"Exception caught: %s",modexcept.GetReason()); \
+               } \
+               _i = safei; \
+       } \
+} while(0);
+
 /** Represents a non-local user.
  * (in fact, any FD less than -1 does)
  */
@@ -739,8 +759,9 @@ class CoreExport Module : public Extensible
         * @param dest The target of the modes (User* or Channel*)
         * @param target_type The type of target (TYPE_USER or TYPE_CHANNEL)
         * @param text The actual modes and their parameters if any
+        * @param translate The translation types of the mode parameters
         */
-       virtual void OnMode(User* user, void* dest, int target_type, const std::string &text);
+       virtual void OnMode(User* user, void* dest, int target_type, const std::deque<std::string> &text, const std::deque<TranslateType> &translate);
 
        /** Allows modules to alter or create server descriptions
         * Whenever a module requires a server description, for example for display in
@@ -847,8 +868,9 @@ class CoreExport Module : public Extensible
         * @param target_type The type of item to decode data for, TYPE_USER or TYPE_CHANNEL
         * @param target The Channel* or User* that modes should be sent for
         * @param modeline The modes and parameters to be sent
+        * @param translate The translation types of the mode parameters
         */
-       virtual void ProtoSendMode(void* opaque, TargetTypeFlags target_type, void* target, const std::string &modeline);
+       virtual void ProtoSendMode(void* opaque, TargetTypeFlags target_type, void* target, const std::deque<std::string> &modeline, const std::deque<TranslateType> &translate);
 
        /** Implemented by modules which provide the ability to link servers.
         * These modules will implement this method, which allows metadata (extra data added to
@@ -1137,11 +1159,13 @@ class CoreExport Module : public Extensible
         * @param u The user to check
         * @param c The channel the user is on
         * @param type The type of extended ban to check for.
+        * @returns 1 = exempt, 0 = no match, -1 = banned
         */
        virtual int OnCheckExtBan(User *u, Channel *c, char type);
 
        /** Called whenever checking whether or not a string is extbanned. NOTE: one OnCheckExtBan will also trigger a number of
         * OnCheckStringExtBan events for seperate host/IP comnbinations.
+        * @returns 1 = exempt, 0 = no match, -1 = banned
         */
        virtual int OnCheckStringExtBan(const std::string &s, Channel *c, char type);