]> jfr.im git - irc/evilnet/x3.git/blobdiff - src/hash.h
Added new event hooks system and started migrating events to new system
[irc/evilnet/x3.git] / src / hash.h
index 513638a19198911fcc5f57c60bae3143c57d3451..3c36823367b9f7c7338dc3f59a7421bfe233dd0c 100644 (file)
@@ -23,7 +23,9 @@
 
 #include "common.h"
 #include "dict.h"
 
 #include "common.h"
 #include "dict.h"
+#include "eventhooks.h"
 #include "policer.h"
 #include "policer.h"
+#include "recdb.h"
 
 #define MODE_CHANOP            0x00000001 /* +o USER */
 #define MODE_VOICE             0x00000002 /* +v USER */
 
 #define MODE_CHANOP            0x00000001 /* +o USER */
 #define MODE_VOICE             0x00000002 /* +v USER */
@@ -186,6 +188,11 @@ enum Priv {
   PRIV_REMOVE,          /**< oper can force remove deactivated glines,
                              shuns and zlines. */
   PRIV_SPAMFILTER,      /**< oper can set spamfilters via SPAMFILTER */
   PRIV_REMOVE,          /**< oper can force remove deactivated glines,
                              shuns and zlines. */
   PRIV_SPAMFILTER,      /**< oper can set spamfilters via SPAMFILTER */
+  PRIV_ADMIN,           /**< oper is an IRC Admin */
+  PRIV_APASS_OPMODE,    /**< oper can use OPMODE to set/unset channel modes +A and +U */
+  PRIV_HIDE_OPER,       /**< oper can set/unset user mode +H */
+  PRIV_REMOTE,          /**< oper can use his/her operator block from a remote server */
+  PRIV_SERVICE,         /**< oper can set/unset user mode +k */
   PRIV_LAST_PRIV        /**< number of privileges */
 };
 
   PRIV_LAST_PRIV        /**< number of privileges */
 };
 
@@ -246,6 +253,8 @@ struct userNode {
     char *version_reply;          /* only filled in if a version query was triggered */
     char *sslfp;                  /* only filled in if a mark SSLCLIFP is received */
 
     char *version_reply;          /* only filled in if a version query was triggered */
     char *sslfp;                  /* only filled in if a mark SSLCLIFP is received */
 
+    struct string_list *marks;    /* list of user's marks */
+
     time_t timestamp;             /* Time of last nick change */
     time_t idle_since;
     struct server *uplink;        /* Server that user is connected to */
     time_t timestamp;             /* Time of last nick change */
     time_t idle_since;
     struct server *uplink;        /* Server that user is connected to */
@@ -375,6 +384,11 @@ struct route {
     struct routeList *servers;
 };
 
     struct routeList *servers;
 };
 
+/* generic hook function args */
+struct funcargs {
+    void *func;
+    void *extra;
+};
 
 extern struct server *self;
 extern dict_t channels;
 
 extern struct server *self;
 extern dict_t channels;
@@ -384,6 +398,8 @@ extern unsigned int max_clients, invis_clients;
 extern time_t max_clients_time;
 extern struct userList curr_opers, curr_helpers;
 
 extern time_t max_clients_time;
 extern struct userList curr_opers, curr_helpers;
 
+extern unsigned int count_opers;
+
 struct server* GetServerH(const char *name); /* using full name */
 struct userNode* GetUserH(const char *nick);   /* using nick */
 struct chanNode* GetChannel(const char *name);
 struct server* GetServerH(const char *name); /* using full name */
 struct userNode* GetUserH(const char *nick);   /* using nick */
 struct chanNode* GetChannel(const char *name);
@@ -395,8 +411,14 @@ typedef int (*server_link_func_t) (struct server *server, void *extra);
 void reg_server_link_func(server_link_func_t handler, void *extra);
 void call_server_link_funcs(struct server *server);
 
 void reg_server_link_func(server_link_func_t handler, void *extra);
 void call_server_link_funcs(struct server *server);
 
+typedef void (*sasl_input_func_t) (struct server* source ,const char *identifier, const char *subcmd, const char *data, const char *ext, void *extra);
+void reg_sasl_input_func(sasl_input_func_t handler, void *extra);
+void call_sasl_input_func(struct server* source ,const char *identifier, const char *subcmd, const char *data, const char *ext);
+void unreg_sasl_input_func(sasl_input_func_t handler, void *extra);
+
 typedef int (*new_user_func_t) (struct userNode *user, void *extra);
 void reg_new_user_func(new_user_func_t handler, void *extra);
 typedef int (*new_user_func_t) (struct userNode *user, void *extra);
 void reg_new_user_func(new_user_func_t handler, void *extra);
+void reg_new_user_func_pos(new_user_func_t handler, void *extra, int pos);
 void call_new_user_funcs(struct userNode *user);
 typedef void (*del_user_func_t) (struct userNode *user, struct userNode *killer, const char *why, void *extra);
 void reg_del_user_func(del_user_func_t handler, void *extra);
 void call_new_user_funcs(struct userNode *user);
 typedef void (*del_user_func_t) (struct userNode *user, struct userNode *killer, const char *why, void *extra);
 void reg_del_user_func(del_user_func_t handler, void *extra);
@@ -418,6 +440,7 @@ void set_geoip_info(struct userNode *user);
 typedef void (*new_channel_func_t) (struct chanNode *chan, void *extra);
 void reg_new_channel_func(new_channel_func_t handler, void *extra);
 typedef int (*join_func_t) (struct modeNode *mNode, void *extra);
 typedef void (*new_channel_func_t) (struct chanNode *chan, void *extra);
 void reg_new_channel_func(new_channel_func_t handler, void *extra);
 typedef int (*join_func_t) (struct modeNode *mNode, void *extra);
+void reg_join_func_pos(join_func_t handler, void *extra, int pos);
 void reg_join_func(join_func_t handler, void *extra);
 typedef void (*del_channel_func_t) (struct chanNode *chan, void *extra);
 void reg_del_channel_func(del_channel_func_t handler, void *extra);
 void reg_join_func(join_func_t handler, void *extra);
 typedef void (*del_channel_func_t) (struct chanNode *chan, void *extra);
 void reg_del_channel_func(del_channel_func_t handler, void *extra);