]>
jfr.im git - irc/quakenet/newserv.git/blob - core/hooks.h
10 /* This is the authoritative registry of all known hook numbers */
12 #define HOOK_CORE_REHASH 0 /* Argument is an int */
13 #define HOOK_CORE_STATSREQUEST 1
14 #define HOOK_CORE_STATSREPLY 2
15 #define HOOK_CORE_ENDOFHOOKSQUEUE 3
16 #define HOOK_CORE_STOPERROR 4
17 #define HOOK_CORE_ERROR 5 /* Argument is a struct error_event * */
18 #define HOOK_CORE_SIGUSR1 6
19 #define HOOK_CORE_SIGINT 7
21 #define HOOK_IRC_CONNECTED 100 /* Located in server.c now to fix burst bug */
22 #define HOOK_IRC_DISCON 101
23 #define HOOK_IRC_SENDBURSTSERVERS 102 /* Located in server.c now to fix burst bug */
24 #define HOOK_IRC_SENDBURSTNICKS 103 /* Located in server.c now to fix burst bug */
25 #define HOOK_IRC_SENDBURSTBURSTS 104 /* Located in server.c now to fix burst bug */
26 #define HOOK_IRC_PRE_DISCON 105
28 #define HOOK_SERVER_NEWSERVER 200 /* Argument is number of new server */
29 #define HOOK_SERVER_LOSTSERVER 201 /* Argument is number of lost server */
30 #define HOOK_SERVER_END_OF_BURST 202
31 #define HOOK_SERVER_PRE_LOSTSERVER 203 /* Argument is number of lost server */
32 #define HOOK_SERVER_LINKED 204 /* Argument is number of server */
34 #define HOOK_NICK_NEWNICK 300 /* Argument is nick* */
35 #define HOOK_NICK_RENAME 301 /* Argument is void*[2] (nick *, oldnick) */
36 #define HOOK_NICK_LOSTNICK 302 /* Argument is nick* */
37 #define HOOK_NICK_WHOISCHANNELS 303 /* Argument is void*[3] (sender, target, sourcenum) */
38 #define HOOK_NICK_ACCOUNT 304 /* Argument is nick* */
39 #define HOOK_NICK_QUIT 305 /* Argument is void*[2] (nick, reason) */
40 #define HOOK_NICK_SETHOST 306 /* Argument is nick* */
41 #define HOOK_NICK_MODEOPER 307 /* Argument is void*[2] (nick, modes) */
42 #define HOOK_NICK_KILL 308 /* Argument is void*[2] (nick, reason) */
43 #define HOOK_NICK_MASKPRIVMSG 309 /* Argument is void*[3] (nick, target, message) ** NICK COULD BE NULL ** */
44 #define HOOK_NICK_MODECHANGE 310 /* Argument is void*[2] (nick *, oldmodes) */
45 #define HOOK_NICK_MESSAGE 311 /* Argument is void*[3] (nick *, message, isnotice) */
46 #define HOOK_NICK_PRE_LOSTNICK 312 /* Argument is nick* */
48 #define HOOK_CHANNEL_BURST 400 /* Argument is channel pointer */
49 #define HOOK_CHANNEL_CREATE 401 /* Argument is void*[2] (channel, nick) */
50 #define HOOK_CHANNEL_JOIN 402 /* Argument is void*[2] (channel, nick) */
51 #define HOOK_CHANNEL_PART 403 /* Argument is void*[3] (channel, nick, reason) */
52 #define HOOK_CHANNEL_KICK 404 /* Argument is void*[4] (channel, kicked, kicker, reason) ** KICKER COULD BE NULL ***/
53 #define HOOK_CHANNEL_TOPIC 405 /* Argument is void*[2] (channel, nick) ** NICK COULD BE NULL ** */
54 #define HOOK_CHANNEL_MODECHANGE 406 /* Argument is void*[3] (channel, nick, flags, oldchanmodes) ** NICK COULD BE NULL ** */
55 #define HOOK_CHANNEL_BANSET 407 /* Argument is void*[2] (channel, nick) ** NICK COULD BE NULL **, ban will be first ban on channel */
56 #define HOOK_CHANNEL_BANCLEAR 408 /* Argument is void*[2] (channel, nick) ** NICK COULD BE NULL **, ban will be gone. XXX - could we care what the ban was? */
57 #define HOOK_CHANNEL_OPPED 409 /* Argument is void*[3] (channel, nick, target) ** NICK COULD BE NULL ** */
58 #define HOOK_CHANNEL_DEOPPED 410 /* Argument is void*[3] (channel, nick, target) ** NICK COULD BE NULL ** */
59 #define HOOK_CHANNEL_VOICED 411 /* Argument is void*[3] (channel, nick, target) ** NICK COULD BE NULL ** */
60 #define HOOK_CHANNEL_DEVOICED 412 /* Argument is void*[3] (channel, nick, target) ** NICK COULD BE NULL ** */
62 #define HOOK_CHANNEL_NEWCHANNEL 413 /* Argument is channel pointer */
63 #define HOOK_CHANNEL_LOSTCHANNEL 414 /* Argument is channel pointer */
65 #define HOOK_CHANNEL_NEWNICK 415 /* Argument is void*[2] (channel, nick) */
66 #define HOOK_CHANNEL_LOSTNICK 416 /* Argument is void*[2] (channel, nick) */
68 #define HOOK_CHANSERV_DBLOADED 500 /* No arg */
69 /* 501 spare for now */
70 #define HOOK_CHANSERV_RUNNING 502 /* No arg */
72 #define HOOK_CHANSERV_AUTH 503 /* Argument is void*[2] (nick *, lastauth) */
73 #define HOOK_CHANSERV_PWCHANGE 504 /* Argument is nick * */
74 #define HOOK_CHANSERV_CHANLEVMOD 505 /* Argument is void*[3] (nick *, regchanuser *, oldflags) */
75 #define HOOK_CHANSERV_CHANLEVDUMP 506 /* Argument is nick * */
76 #define HOOK_CHANSERV_WHOIS 507 /* Argument is nick * */
77 #define HOOK_CHANSERV_WHOAMI 508 /* Argument is nick * */
78 #define HOOK_CHANSERV_CMD 509 /* Argument is nick * */
80 #define HOOK_CONTROL_REGISTERED 600 /* Argument is nick* */
81 #define HOOK_CONTROL_WHOISREQUEST 601 /* Argument is nick* */
82 #define HOOK_CONTROL_WHOISREPLY 602 /* Argument is char* */
84 #define HOOK_SHADOW_SERVER 701 /* Argument is char* */
86 #define HOOK_AUTH_FLAGSUPDATED 801 /* Argument is void*[2] (authname*, u_int64_t*) */
87 #define HOOK_AUTH_LOSTAUTHNAME 802 /* Argument is authname* */
89 #define HOOK_TRUSTS_DB_CLOSED 900 /* No arg */
90 #define HOOK_TRUSTS_DB_LOADED 901 /* No arg */
91 #define HOOK_TRUSTS_NEWNICK 902 /* Argument is void*[2] (nick*, long) */
92 #define HOOK_TRUSTS_LOSTNICK 903 /* Argument is void*[2] (nick*, long) */
93 #define HOOK_TRUSTS_NEWGROUP 904 /* Argument is trustgroup* */
94 #define HOOK_TRUSTS_LOSTGROUP 905 /* Argument is trustgroup* */
95 #define HOOK_TRUSTS_ADDGROUP 906 /* Argument is trustgroup* */
96 #define HOOK_TRUSTS_DELGROUP 907 /* Argument is trustgroup* */
97 #define HOOK_TRUSTS_ADDHOST 908 /* Argument is trusthost* */
98 #define HOOK_TRUSTS_DELHOST 909 /* Argument is trusthost* */
99 #define HOOK_TRUSTS_MODIFYGROUP 910 /* Argument is trustgroup* */
100 #define HOOK_TRUSTS_LOSTHOST 911 /* Argument is trusthost* */
101 #define HOOK_TRUSTS_MODIFYHOST 912 /* Argument is trusthost* */
103 #define HOOK_SIGNONTRACKER_HAVETIME 1100 /* Argument is nick* */
105 #define HOOK_WHOWAS_NEWRECORD 1200 /* Argument is void*[2] (whowas *, nick *) */
106 #define HOOK_WHOWAS_LOSTRECORD 1201 /* Argument is whowas * */
108 #define HOOK_LUA_LOADSCRIPT 1300 /* Argument is void*[2] (char *, lua_State *) */
110 #define PRIORITY_DEFAULT 0
112 #define PRIORITY_MAX LONG_MIN
113 #define PRIORITY_MIN LONG_MAX
115 typedef void (* HookCallback
)( int , void *);
117 extern unsigned int hookqueuelength
;
120 int registerhook ( int hooknum
, HookCallback callback
);
121 int deregisterhook ( int hooknum
, HookCallback callback
);
122 void triggerhook ( int hooknum
, void * arg
);
123 int registerpriorityhook ( int hooknum
, HookCallback callback
, long priority
);