00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include "services.h"
00016 #include "extern.h"
00017
00018 IRCDProto ircdproto;
00019 IRCDModes ircd_modes;
00020
00024 IRCDVar *ircd;
00025 IRCDCAPAB *ircdcap;
00026 char *version_protocol;
00027 CBModeInfo *cbmodeinfos;
00028 CUMode cumodes[128];
00029 char *flood_mode_char_set;
00030 char *flood_mode_char_remove;
00031 CBMode cbmodes[128];
00032 CMMode cmmodes[128];
00033 char csmodes[128];
00034 int UseTSMODE;
00035
00039 void initIrcdProto()
00040 {
00041 ircdproto.ircd_set_mod_current_buffer = NULL;
00042 ircdproto.ircd_set_umode = NULL;
00043 ircdproto.ircd_cmd_svsnoop = NULL;
00044 ircdproto.ircd_cmd_remove_akill = NULL;
00045 ircdproto.ircd_cmd_topic = NULL;
00046 ircdproto.ircd_cmd_vhost_off = NULL;
00047 ircdproto.ircd_cmd_akill = NULL;
00048 ircdproto.ircd_cmd_svskill = NULL;
00049 ircdproto.ircd_cmd_svsmode = NULL;
00050 ircdproto.ircd_cmd_372 = NULL;
00051 ircdproto.ircd_cmd_372_error = NULL;
00052 ircdproto.ircd_cmd_375 = NULL;
00053 ircdproto.ircd_cmd_376 = NULL;
00054 ircdproto.ircd_cmd_nick = NULL;
00055 ircdproto.ircd_cmd_guest_nick = NULL;
00056 ircdproto.ircd_cmd_mode = NULL;
00057 ircdproto.ircd_cmd_bot_nick = NULL;
00058 ircdproto.ircd_cmd_kick = NULL;
00059 ircdproto.ircd_cmd_notice_ops = NULL;
00060 ircdproto.ircd_cmd_notice = NULL;
00061 ircdproto.ircd_cmd_notice2 = NULL;
00062 ircdproto.ircd_cmd_privmsg = NULL;
00063 ircdproto.ircd_cmd_privmsg2 = NULL;
00064 ircdproto.ircd_cmd_serv_notice = NULL;
00065 ircdproto.ircd_cmd_serv_privmsg = NULL;
00066 ircdproto.ircd_cmd_bot_chan_mode = NULL;
00067 ircdproto.ircd_cmd_351 = NULL;
00068 ircdproto.ircd_cmd_quit = NULL;
00069 ircdproto.ircd_cmd_pong = NULL;
00070 ircdproto.ircd_cmd_join = NULL;
00071 ircdproto.ircd_cmd_unsqline = NULL;
00072 ircdproto.ircd_cmd_invite = NULL;
00073 ircdproto.ircd_cmd_part = NULL;
00074 ircdproto.ircd_cmd_391 = NULL;
00075 ircdproto.ircd_cmd_250 = NULL;
00076 ircdproto.ircd_cmd_307 = NULL;
00077 ircdproto.ircd_cmd_311 = NULL;
00078 ircdproto.ircd_cmd_312 = NULL;
00079 ircdproto.ircd_cmd_317 = NULL;
00080 ircdproto.ircd_cmd_219 = NULL;
00081 ircdproto.ircd_cmd_401 = NULL;
00082 ircdproto.ircd_cmd_318 = NULL;
00083 ircdproto.ircd_cmd_242 = NULL;
00084 ircdproto.ircd_cmd_243 = NULL;
00085 ircdproto.ircd_cmd_211 = NULL;
00086 ircdproto.ircd_cmd_global = NULL;
00087 ircdproto.ircd_cmd_global_legacy = NULL;
00088 ircdproto.ircd_cmd_sqline = NULL;
00089 ircdproto.ircd_cmd_squit = NULL;
00090 ircdproto.ircd_cmd_svso = NULL;
00091 ircdproto.ircd_cmd_chg_nick = NULL;
00092 ircdproto.ircd_cmd_svsnick = NULL;
00093 ircdproto.ircd_cmd_vhost_on = NULL;
00094 ircdproto.ircd_cmd_connect = NULL;
00095 ircdproto.ircd_cmd_svshold = NULL;
00096 ircdproto.ircd_cmd_release_svshold = NULL;
00097 ircdproto.ircd_cmd_unsgline = NULL;
00098 ircdproto.ircd_cmd_unszline = NULL;
00099 ircdproto.ircd_cmd_szline = NULL;
00100 ircdproto.ircd_cmd_sgline = NULL;
00101 ircdproto.ircd_cmd_unban = NULL;
00102 ircdproto.ircd_cmd_svsmode_chan = NULL;
00103 ircdproto.ircd_cmd_svid_umode = NULL;
00104 ircdproto.ircd_cmd_nc_change = NULL;
00105 ircdproto.ircd_cmd_svid_umode2 = NULL;
00106 ircdproto.ircd_cmd_svid_umode3 = NULL;
00107 ircdproto.ircd_cmd_svsjoin = NULL;
00108 ircdproto.ircd_cmd_svspart = NULL;
00109 ircdproto.ircd_cmd_swhois = NULL;
00110 ircdproto.ircd_cmd_eob = NULL;
00111 ircdproto.ircd_flood_mode_check = NULL;
00112 ircdproto.ircd_cmd_jupe = NULL;
00113 ircdproto.ircd_valid_nick = NULL;
00114 ircdproto.ircd_valid_chan = NULL;
00115 ircdproto.ircd_cmd_ctcp = NULL;
00116 }
00117
00118
00119 int anope_set_mod_current_buffer(int ac, char **av)
00120 {
00121 if (ircdproto.ircd_set_mod_current_buffer) {
00122 ircdproto.ircd_set_mod_current_buffer(ac, av);
00123 return 1;
00124 }
00125
00126 return 0;
00127 }
00128
00129 void anope_set_umode(User * user, int ac, char **av)
00130 {
00131 ircdproto.ircd_set_umode(user, ac, av);
00132 }
00133
00134 void anope_cmd_svsnoop(char *server, int set)
00135 {
00136 ircdproto.ircd_cmd_svsnoop(server, set);
00137 }
00138
00139 void anope_cmd_remove_akill(char *user, char *host)
00140 {
00141 ircdproto.ircd_cmd_remove_akill(user, host);
00142 }
00143
00144 void anope_cmd_topic(char *whosets, char *chan, char *whosetit,
00145 char *topic, time_t when)
00146 {
00147 ircdproto.ircd_cmd_topic(whosets, chan, whosetit, topic, when);
00148 }
00149
00150 void anope_cmd_vhost_off(User * u)
00151 {
00152 ircdproto.ircd_cmd_vhost_off(u);
00153 }
00154
00155 void anope_cmd_akill(char *user, char *host, char *who, time_t when,
00156 time_t expires, char *reason)
00157 {
00158 ircdproto.ircd_cmd_akill(user, host, who, when, expires, reason);
00159 }
00160
00161 void anope_cmd_svskill(char *source, char *user, const char *fmt, ...)
00162 {
00163 va_list args;
00164 char buf[BUFSIZE];
00165 *buf = '\0';
00166 if (fmt) {
00167 va_start(args, fmt);
00168 vsnprintf(buf, BUFSIZE - 1, fmt, args);
00169 va_end(args);
00170 }
00171 ircdproto.ircd_cmd_svskill(source, user, buf);
00172 }
00173
00174 void anope_cmd_svsmode(User * u, int ac, char **av)
00175 {
00176 ircdproto.ircd_cmd_svsmode(u, ac, av);
00177 }
00178
00179 void anope_cmd_372(char *source, char *msg)
00180 {
00181 ircdproto.ircd_cmd_372(source, msg);
00182 }
00183
00184 void anope_cmd_372_error(char *source)
00185 {
00186 ircdproto.ircd_cmd_372_error(source);
00187 }
00188
00189 void anope_cmd_375(char *source)
00190 {
00191 ircdproto.ircd_cmd_375(source);
00192 }
00193
00194 void anope_cmd_376(char *source)
00195 {
00196 ircdproto.ircd_cmd_376(source);
00197 }
00198
00199 void anope_cmd_nick(char *nick, char *name, char *modes)
00200 {
00201 ircdproto.ircd_cmd_nick(nick, name, modes);
00202 }
00203
00204 void anope_cmd_guest_nick(char *nick, char *user, char *host, char *real,
00205 char *modes)
00206 {
00207 ircdproto.ircd_cmd_guest_nick(nick, user, host, real, modes);
00208 }
00209
00210 void anope_cmd_mode(char *source, char *dest, const char *fmt, ...)
00211 {
00212 va_list args;
00213 char buf[BUFSIZE];
00214 *buf = '\0';
00215 if (fmt) {
00216 va_start(args, fmt);
00217 vsnprintf(buf, BUFSIZE - 1, fmt, args);
00218 va_end(args);
00219 }
00220 ircdproto.ircd_cmd_mode(source, dest, buf);
00221 }
00222
00223 void anope_cmd_bot_nick(char *nick, char *user, char *host, char *real,
00224 char *modes)
00225 {
00226 ircdproto.ircd_cmd_bot_nick(nick, user, host, real, modes);
00227 }
00228
00229 void anope_cmd_kick(char *source, char *chan, char *user, const char *fmt,
00230 ...)
00231 {
00232 va_list args;
00233 char buf[BUFSIZE];
00234 *buf = '\0';
00235 if (fmt) {
00236 va_start(args, fmt);
00237 vsnprintf(buf, BUFSIZE - 1, fmt, args);
00238 va_end(args);
00239 }
00240 ircdproto.ircd_cmd_kick(source, chan, user, buf);
00241 }
00242
00243 void anope_cmd_notice_ops(char *source, char *dest, const char *fmt, ...)
00244 {
00245 va_list args;
00246 char buf[BUFSIZE];
00247 *buf = '\0';
00248 if (fmt) {
00249 va_start(args, fmt);
00250 vsnprintf(buf, BUFSIZE - 1, fmt, args);
00251 va_end(args);
00252 }
00253 ircdproto.ircd_cmd_notice_ops(source, dest, buf);
00254 }
00255
00256 void anope_cmd_notice(char *source, char *dest, const char *fmt, ...)
00257 {
00258 va_list args;
00259 char buf[BUFSIZE];
00260 *buf = '\0';
00261 if (fmt) {
00262 va_start(args, fmt);
00263 vsnprintf(buf, BUFSIZE - 1, fmt, args);
00264 va_end(args);
00265 }
00266 ircdproto.ircd_cmd_notice(source, dest, buf);
00267 }
00268
00269 void anope_cmd_notice2(char *source, char *dest, char *msg)
00270 {
00271 ircdproto.ircd_cmd_notice2(source, dest, msg);
00272 }
00273
00274 void anope_cmd_action(char *source, char *dest, const char *fmt, ...)
00275 {
00276
00277 va_list args;
00278
00279 char buf[BUFSIZE];
00280
00281 char actionbuf[BUFSIZE];
00282
00283
00284 *buf = '\0';
00285
00286 *actionbuf = '\0';
00287
00288
00289 if (fmt) {
00290
00291 va_start(args, fmt);
00292
00293 vsnprintf(buf, BUFSIZE - 1, fmt, args);
00294
00295 va_end(args);
00296
00297 } else {
00298
00299 return;
00300
00301 }
00302
00303
00304 if (!buf) {
00305
00306 return;
00307
00308 }
00309
00310 snprintf(actionbuf, BUFSIZE - 1, "%cACTION %s %c", 1, buf, 1);
00311
00312 ircdproto.ircd_cmd_privmsg(source, dest, actionbuf);
00313
00314 }
00315
00316 void anope_cmd_privmsg(char *source, char *dest, const char *fmt, ...)
00317 {
00318 va_list args;
00319 char buf[BUFSIZE];
00320 *buf = '\0';
00321 if (fmt) {
00322 va_start(args, fmt);
00323 vsnprintf(buf, BUFSIZE - 1, fmt, args);
00324 va_end(args);
00325 }
00326 ircdproto.ircd_cmd_privmsg(source, dest, buf);
00327 }
00328
00329 void anope_cmd_privmsg2(char *source, char *dest, char *msg)
00330 {
00331 ircdproto.ircd_cmd_privmsg2(source, dest, msg);
00332 }
00333
00334 void anope_cmd_serv_notice(char *source, char *dest, char *msg)
00335 {
00336 ircdproto.ircd_cmd_serv_notice(source, dest, msg);
00337 }
00338
00339 void anope_cmd_serv_privmsg(char *source, char *dest, char *msg)
00340 {
00341 ircdproto.ircd_cmd_serv_privmsg(source, dest, msg);
00342 }
00343
00344 void anope_cmd_bot_chan_mode(char *nick, char *chan)
00345 {
00346 ircdproto.ircd_cmd_bot_chan_mode(nick, chan);
00347 }
00348
00349 void anope_cmd_351(char *source)
00350 {
00351 ircdproto.ircd_cmd_351(source);
00352 }
00353
00354 void anope_cmd_quit(char *source, const char *fmt, ...)
00355 {
00356 va_list args;
00357 char buf[BUFSIZE];
00358 *buf = '\0';
00359 if (fmt) {
00360 va_start(args, fmt);
00361 vsnprintf(buf, BUFSIZE - 1, fmt, args);
00362 va_end(args);
00363 }
00364 ircdproto.ircd_cmd_quit(source, buf);
00365 }
00366
00367 void anope_cmd_pong(char *servname, char *who)
00368 {
00369 ircdproto.ircd_cmd_pong(servname, who);
00370 }
00371
00372 void anope_cmd_join(char *user, char *channel, time_t chantime)
00373 {
00374 ircdproto.ircd_cmd_join(user, channel, chantime);
00375 }
00376
00377 void anope_cmd_unsqline(char *user)
00378 {
00379 ircdproto.ircd_cmd_unsqline(user);
00380 }
00381
00382 void anope_cmd_invite(char *source, char *chan, char *nick)
00383 {
00384 ircdproto.ircd_cmd_invite(source, chan, nick);
00385 }
00386
00387 void anope_cmd_part(char *nick, char *chan, const char *fmt, ...)
00388 {
00389 if (fmt) {
00390 va_list args;
00391 char buf[BUFSIZE];
00392 *buf = '\0';
00393 va_start(args, fmt);
00394 vsnprintf(buf, BUFSIZE - 1, fmt, args);
00395 va_end(args);
00396 ircdproto.ircd_cmd_part(nick, chan, buf);
00397 } else {
00398 ircdproto.ircd_cmd_part(nick, chan, NULL);
00399 }
00400 }
00401
00402 void anope_cmd_391(char *source, char *timestr)
00403 {
00404 ircdproto.ircd_cmd_391(source, timestr);
00405 }
00406
00407 void anope_cmd_250(const char *fmt, ...)
00408 {
00409 va_list args;
00410 char buf[BUFSIZE];
00411 *buf = '\0';
00412 if (fmt) {
00413 va_start(args, fmt);
00414 vsnprintf(buf, BUFSIZE - 1, fmt, args);
00415 va_end(args);
00416 }
00417 ircdproto.ircd_cmd_250(buf);
00418 }
00419
00420 void anope_cmd_307(const char *fmt, ...)
00421 {
00422 va_list args;
00423 char buf[BUFSIZE];
00424 *buf = '\0';
00425 if (fmt) {
00426 va_start(args, fmt);
00427 vsnprintf(buf, BUFSIZE - 1, fmt, args);
00428 va_end(args);
00429 }
00430 ircdproto.ircd_cmd_307(buf);
00431 }
00432
00433 void anope_cmd_311(const char *fmt, ...)
00434 {
00435 va_list args;
00436 char buf[BUFSIZE];
00437 *buf = '\0';
00438 if (fmt) {
00439 va_start(args, fmt);
00440 vsnprintf(buf, BUFSIZE - 1, fmt, args);
00441 va_end(args);
00442 }
00443 ircdproto.ircd_cmd_311(buf);
00444 }
00445
00446 void anope_cmd_312(const char *fmt, ...)
00447 {
00448 va_list args;
00449 char buf[BUFSIZE];
00450 *buf = '\0';
00451 if (fmt) {
00452 va_start(args, fmt);
00453 vsnprintf(buf, BUFSIZE - 1, fmt, args);
00454 va_end(args);
00455 }
00456 ircdproto.ircd_cmd_312(buf);
00457 }
00458
00459 void anope_cmd_317(const char *fmt, ...)
00460 {
00461 va_list args;
00462 char buf[BUFSIZE];
00463 *buf = '\0';
00464 if (fmt) {
00465 va_start(args, fmt);
00466 vsnprintf(buf, BUFSIZE - 1, fmt, args);
00467 va_end(args);
00468 }
00469 ircdproto.ircd_cmd_317(buf);
00470 }
00471
00472 void anope_cmd_219(char *source, char *letter)
00473 {
00474 ircdproto.ircd_cmd_219(source, letter);
00475 }
00476
00477 void anope_cmd_401(char *source, char *who)
00478 {
00479 ircdproto.ircd_cmd_401(source, who);
00480 }
00481
00482 void anope_cmd_318(char *source, char *who)
00483 {
00484 ircdproto.ircd_cmd_318(source, who);
00485 }
00486
00487 void anope_cmd_242(const char *fmt, ...)
00488 {
00489 va_list args;
00490 char buf[BUFSIZE];
00491 *buf = '\0';
00492 if (fmt) {
00493 va_start(args, fmt);
00494 vsnprintf(buf, BUFSIZE - 1, fmt, args);
00495 va_end(args);
00496 }
00497 ircdproto.ircd_cmd_242(buf);
00498 }
00499
00500 void anope_cmd_243(const char *fmt, ...)
00501 {
00502 va_list args;
00503 char buf[BUFSIZE];
00504 *buf = '\0';
00505 if (fmt) {
00506 va_start(args, fmt);
00507 vsnprintf(buf, BUFSIZE - 1, fmt, args);
00508 va_end(args);
00509 }
00510 ircdproto.ircd_cmd_243(buf);
00511 }
00512
00513 void anope_cmd_211(const char *fmt, ...)
00514 {
00515 va_list args;
00516 char buf[BUFSIZE];
00517 *buf = '\0';
00518 if (fmt) {
00519 va_start(args, fmt);
00520 vsnprintf(buf, BUFSIZE - 1, fmt, args);
00521 va_end(args);
00522 }
00523 ircdproto.ircd_cmd_211(buf);
00524 }
00525
00526 void anope_cmd_global(char *source, const char *fmt, ...)
00527 {
00528 va_list args;
00529 char buf[BUFSIZE];
00530 *buf = '\0';
00531 if (fmt) {
00532 va_start(args, fmt);
00533 vsnprintf(buf, BUFSIZE - 1, fmt, args);
00534 va_end(args);
00535 }
00536 ircdproto.ircd_cmd_global(source, buf);
00537 }
00538
00539 void anope_cmd_global_legacy(char *source, char *fmt)
00540 {
00541 ircdproto.ircd_cmd_global_legacy(source, fmt);
00542 }
00543
00544 void anope_cmd_sqline(char *mask, char *reason)
00545 {
00546 ircdproto.ircd_cmd_sqline(mask, reason);
00547 }
00548
00549 void anope_cmd_squit(char *servname, char *message)
00550 {
00551 ircdproto.ircd_cmd_squit(servname, message);
00552 }
00553
00554 void anope_cmd_svso(char *source, char *nick, char *flag)
00555 {
00556 ircdproto.ircd_cmd_svso(source, nick, flag);
00557 }
00558
00559 void anope_cmd_chg_nick(char *oldnick, char *newnick)
00560 {
00561 ircdproto.ircd_cmd_chg_nick(oldnick, newnick);
00562 }
00563
00564 void anope_cmd_svsnick(char *source, char *guest, time_t when)
00565 {
00566 ircdproto.ircd_cmd_svsnick(source, guest, when);
00567 }
00568
00569 void anope_cmd_vhost_on(char *nick, char *vIdent, char *vhost)
00570 {
00571 ircdproto.ircd_cmd_vhost_on(nick, vIdent, vhost);
00572 }
00573
00574 void anope_cmd_connect(int servernum)
00575 {
00576 ircdproto.ircd_cmd_connect(servernum);
00577 }
00578
00579 void anope_cmd_svshold(char *nick)
00580 {
00581 ircdproto.ircd_cmd_svshold(nick);
00582 }
00583
00584 void anope_cmd_release_svshold(char *nick)
00585 {
00586 ircdproto.ircd_cmd_release_svshold(nick);
00587 }
00588
00589 void anope_cmd_unsgline(char *mask)
00590 {
00591 ircdproto.ircd_cmd_unsgline(mask);
00592 }
00593
00594 void anope_cmd_unszline(char *mask)
00595 {
00596 ircdproto.ircd_cmd_unszline(mask);
00597 }
00598
00599 void anope_cmd_szline(char *mask, char *reason, char *whom)
00600 {
00601 ircdproto.ircd_cmd_szline(mask, reason, whom);
00602 }
00603
00604 void anope_cmd_sgline(char *mask, char *reason)
00605 {
00606 ircdproto.ircd_cmd_sgline(mask, reason);
00607 }
00608
00609 void anope_cmd_unban(char *name, char *nick)
00610 {
00611 ircdproto.ircd_cmd_unban(name, nick);
00612 }
00613
00614 void anope_cmd_svsmode_chan(char *name, char *mode, char *nick)
00615 {
00616 ircdproto.ircd_cmd_svsmode_chan(name, mode, nick);
00617 }
00618
00619 void anope_cmd_svid_umode(char *nick, time_t ts)
00620 {
00621 ircdproto.ircd_cmd_svid_umode(nick, ts);
00622 }
00623
00624 void anope_cmd_nc_change(User * u)
00625 {
00626 ircdproto.ircd_cmd_nc_change(u);
00627 }
00628
00629 void anope_cmd_svid_umode2(User * u, char *ts)
00630 {
00631 ircdproto.ircd_cmd_svid_umode2(u, ts);
00632 }
00633
00634 void anope_cmd_svid_umode3(User * u, char *ts)
00635 {
00636 ircdproto.ircd_cmd_svid_umode3(u, ts);
00637 }
00638
00639 void anope_cmd_svsjoin(char *source, char *nick, char *chan, char *param)
00640 {
00641 ircdproto.ircd_cmd_svsjoin(source, nick, chan, param);
00642 }
00643
00644 void anope_cmd_svspart(char *source, char *nick, char *chan)
00645 {
00646 ircdproto.ircd_cmd_svspart(source, nick, chan);
00647 }
00648
00649 void anope_cmd_swhois(char *source, char *who, char *mask)
00650 {
00651 ircdproto.ircd_cmd_swhois(source, who, mask);
00652 }
00653
00654 void anope_cmd_eob()
00655 {
00656 ircdproto.ircd_cmd_eob();
00657 }
00658
00659 int anope_flood_mode_check(char *value)
00660 {
00661 return ircdproto.ircd_flood_mode_check(value);
00662 }
00663
00664 void anope_cmd_jupe(char *jserver, char *who, char *reason)
00665 {
00666 ircdproto.ircd_cmd_jupe(jserver, who, reason);
00667 }
00668
00669 int anope_valid_nick(char *nick)
00670 {
00671 return ircdproto.ircd_valid_nick(nick);
00672 }
00673
00674 int anope_valid_chan(char *chan)
00675 {
00676 return ircdproto.ircd_valid_chan(chan);
00677 }
00678
00679
00680 void anope_cmd_ctcp(char *source, char *dest, const char *fmt, ...)
00681 {
00682 va_list args;
00683 char buf[BUFSIZE];
00684 *buf = '\0';
00685 if (fmt) {
00686 va_start(args, fmt);
00687 vsnprintf(buf, BUFSIZE - 1, fmt, args);
00688 va_end(args);
00689 }
00690 ircdproto.ircd_cmd_ctcp(source, dest, buf);
00691 }
00692
00693
00694
00699 void pmodule_set_mod_current_buffer(void (*func) (int ac, char **av))
00700 {
00701 ircdproto.ircd_set_mod_current_buffer = func;
00702 }
00703
00704 void pmodule_cmd_svsnoop(void (*func) (char *server, int set))
00705 {
00706 ircdproto.ircd_cmd_svsnoop = func;
00707 }
00708
00709 void pmodule_cmd_remove_akill(void (*func) (char *user, char *host))
00710 {
00711 ircdproto.ircd_cmd_remove_akill = func;
00712 }
00713
00714 void pmodule_cmd_topic(void (*func)
00715 (char *whosets, char *chan, char *whosetit,
00716 char *topic, time_t when))
00717 {
00718 ircdproto.ircd_cmd_topic = func;
00719 }
00720
00721 void pmodule_cmd_vhost_off(void (*func) (User * u))
00722 {
00723 ircdproto.ircd_cmd_vhost_off = func;
00724 }
00725
00726 void pmodule_cmd_akill(void (*func)
00727 (char *user, char *host, char *who, time_t when,
00728 time_t expires, char *reason))
00729 {
00730 ircdproto.ircd_cmd_akill = func;
00731 }
00732
00733 void
00734 pmodule_cmd_svskill(void (*func) (char *source, char *user, char *buf))
00735 {
00736 ircdproto.ircd_cmd_svskill = func;
00737 }
00738
00739 void pmodule_cmd_svsmode(void (*func) (User * u, int ac, char **av))
00740 {
00741 ircdproto.ircd_cmd_svsmode = func;
00742 }
00743
00744 void pmodule_cmd_372(void (*func) (char *source, char *msg))
00745 {
00746 ircdproto.ircd_cmd_372 = func;
00747 }
00748
00749 void pmodule_cmd_372_error(void (*func) (char *source))
00750 {
00751 ircdproto.ircd_cmd_372_error = func;
00752 }
00753
00754 void pmodule_cmd_375(void (*func) (char *source))
00755 {
00756 ircdproto.ircd_cmd_375 = func;
00757 }
00758
00759 void pmodule_cmd_376(void (*func) (char *source))
00760 {
00761 ircdproto.ircd_cmd_376 = func;
00762 }
00763
00764 void pmodule_cmd_nick(void (*func) (char *nick, char *name, char *modes))
00765 {
00766 ircdproto.ircd_cmd_nick = func;
00767 }
00768
00769 void pmodule_cmd_guest_nick(void (*func)
00770 (char *nick, char *user, char *host,
00771 char *real, char *modes))
00772 {
00773 ircdproto.ircd_cmd_guest_nick = func;
00774 }
00775
00776 void pmodule_cmd_mode(void (*func) (char *source, char *dest, char *buf))
00777 {
00778 ircdproto.ircd_cmd_mode = func;
00779 }
00780
00781 void pmodule_cmd_bot_nick(void (*func)
00782 (char *nick, char *user, char *host, char *real,
00783 char *modes))
00784 {
00785 ircdproto.ircd_cmd_bot_nick = func;
00786 }
00787
00788 void pmodule_cmd_kick(void (*func)
00789 (char *source, char *chan, char *user, char *buf))
00790 {
00791 ircdproto.ircd_cmd_kick = func;
00792 }
00793
00794 void
00795 pmodule_cmd_notice_ops(void (*func) (char *source, char *dest, char *buf))
00796 {
00797 ircdproto.ircd_cmd_notice_ops = func;
00798 }
00799
00800 void pmodule_cmd_notice(void (*func) (char *source, char *dest, char *buf))
00801 {
00802 ircdproto.ircd_cmd_notice = func;
00803 }
00804
00805 void
00806 pmodule_cmd_notice2(void (*func) (char *source, char *dest, char *msg))
00807 {
00808 ircdproto.ircd_cmd_notice2 = func;
00809 }
00810
00811 void
00812 pmodule_cmd_privmsg(void (*func) (char *source, char *dest, char *buf))
00813 {
00814 ircdproto.ircd_cmd_privmsg = func;
00815 }
00816
00817 void
00818 pmodule_cmd_privmsg2(void (*func) (char *source, char *dest, char *msg))
00819 {
00820 ircdproto.ircd_cmd_privmsg2 = func;
00821 }
00822
00823 void
00824 pmodule_cmd_serv_notice(void (*func) (char *source, char *dest, char *msg))
00825 {
00826 ircdproto.ircd_cmd_serv_notice = func;
00827 }
00828
00829 void pmodule_cmd_serv_privmsg(void (*func)
00830 (char *source, char *dest, char *msg))
00831 {
00832 ircdproto.ircd_cmd_serv_privmsg = func;
00833 }
00834
00835 void pmodule_cmd_bot_chan_mode(void (*func) (char *nick, char *chan))
00836 {
00837 ircdproto.ircd_cmd_bot_chan_mode = func;
00838 }
00839
00840 void pmodule_cmd_351(void (*func) (char *source))
00841 {
00842 ircdproto.ircd_cmd_351 = func;
00843 }
00844
00845 void pmodule_cmd_quit(void (*func) (char *source, char *buf))
00846 {
00847 ircdproto.ircd_cmd_quit = func;
00848 }
00849
00850 void pmodule_cmd_pong(void (*func) (char *servname, char *who))
00851 {
00852 ircdproto.ircd_cmd_pong = func;
00853 }
00854
00855 void
00856 pmodule_cmd_join(void (*func) (char *user, char *channel, time_t chantime))
00857 {
00858 ircdproto.ircd_cmd_join = func;
00859 }
00860
00861 void pmodule_cmd_unsqline(void (*func) (char *user))
00862 {
00863 ircdproto.ircd_cmd_unsqline = func;
00864 }
00865
00866 void
00867 pmodule_cmd_invite(void (*func) (char *source, char *chan, char *nick))
00868 {
00869 ircdproto.ircd_cmd_invite = func;
00870 }
00871
00872 void pmodule_cmd_part(void (*func) (char *nick, char *chan, char *buf))
00873 {
00874 ircdproto.ircd_cmd_part = func;
00875 }
00876
00877 void pmodule_cmd_391(void (*func) (char *source, char *timestr))
00878 {
00879 ircdproto.ircd_cmd_391 = func;
00880 }
00881
00882 void pmodule_cmd_250(void (*func) (char *buf))
00883 {
00884 ircdproto.ircd_cmd_250 = func;
00885 }
00886
00887 void pmodule_cmd_307(void (*func) (char *buf))
00888 {
00889 ircdproto.ircd_cmd_307 = func;
00890 }
00891
00892 void pmodule_cmd_311(void (*func) (char *buf))
00893 {
00894 ircdproto.ircd_cmd_311 = func;
00895 }
00896
00897 void pmodule_cmd_312(void (*func) (char *buf))
00898 {
00899 ircdproto.ircd_cmd_312 = func;
00900 }
00901
00902 void pmodule_cmd_317(void (*func) (char *buf))
00903 {
00904 ircdproto.ircd_cmd_317 = func;
00905 }
00906
00907 void pmodule_cmd_219(void (*func) (char *source, char *letter))
00908 {
00909 ircdproto.ircd_cmd_219 = func;
00910 }
00911
00912 void pmodule_cmd_401(void (*func) (char *source, char *who))
00913 {
00914 ircdproto.ircd_cmd_401 = func;
00915 }
00916
00917 void pmodule_cmd_318(void (*func) (char *source, char *who))
00918 {
00919 ircdproto.ircd_cmd_318 = func;
00920 }
00921
00922 void pmodule_cmd_242(void (*func) (char *buf))
00923 {
00924 ircdproto.ircd_cmd_242 = func;
00925 }
00926
00927 void pmodule_cmd_243(void (*func) (char *buf))
00928 {
00929 ircdproto.ircd_cmd_243 = func;
00930 }
00931
00932 void pmodule_cmd_211(void (*func) (char *buf))
00933 {
00934 ircdproto.ircd_cmd_211 = func;
00935 }
00936
00937 void pmodule_cmd_global(void (*func) (char *source, char *buf))
00938 {
00939 ircdproto.ircd_cmd_global = func;
00940 }
00941
00942 void pmodule_cmd_global_legacy(void (*func) (char *source, char *fmt))
00943 {
00944 ircdproto.ircd_cmd_global_legacy = func;
00945 }
00946
00947 void pmodule_cmd_sqline(void (*func) (char *mask, char *reason))
00948 {
00949 ircdproto.ircd_cmd_sqline = func;
00950 }
00951
00952 void pmodule_cmd_squit(void (*func) (char *servname, char *message))
00953 {
00954 ircdproto.ircd_cmd_squit = func;
00955 }
00956
00957 void pmodule_cmd_svso(void (*func) (char *source, char *nick, char *flag))
00958 {
00959 ircdproto.ircd_cmd_svso = func;
00960 }
00961
00962 void pmodule_cmd_chg_nick(void (*func) (char *oldnick, char *newnick))
00963 {
00964 ircdproto.ircd_cmd_chg_nick = func;
00965 }
00966
00967 void
00968 pmodule_cmd_svsnick(void (*func) (char *source, char *guest, time_t when))
00969 {
00970 ircdproto.ircd_cmd_svsnick = func;
00971 }
00972
00973 void
00974 pmodule_cmd_vhost_on(void (*func) (char *nick, char *vIdent, char *vhost))
00975 {
00976 ircdproto.ircd_cmd_vhost_on = func;
00977 }
00978
00979 void pmodule_cmd_connect(void (*func) (int servernum))
00980 {
00981 ircdproto.ircd_cmd_connect = func;
00982 }
00983
00984 void pmodule_cmd_svshold(void (*func) (char *nick))
00985 {
00986 ircdproto.ircd_cmd_svshold = func;
00987 }
00988
00989 void pmodule_cmd_release_svshold(void (*func) (char *nick))
00990 {
00991 ircdproto.ircd_cmd_release_svshold = func;
00992 }
00993
00994 void pmodule_cmd_unsgline(void (*func) (char *mask))
00995 {
00996 ircdproto.ircd_cmd_unsgline = func;
00997 }
00998
00999 void pmodule_cmd_unszline(void (*func) (char *mask))
01000 {
01001 ircdproto.ircd_cmd_unszline = func;
01002 }
01003
01004 void
01005 pmodule_cmd_szline(void (*func) (char *mask, char *reason, char *whom))
01006 {
01007 ircdproto.ircd_cmd_szline = func;
01008 }
01009
01010 void pmodule_cmd_sgline(void (*func) (char *mask, char *reason))
01011 {
01012 ircdproto.ircd_cmd_sgline = func;
01013 }
01014
01015 void pmodule_cmd_unban(void (*func) (char *name, char *nick))
01016 {
01017 ircdproto.ircd_cmd_unban = func;
01018 }
01019
01020 void
01021 pmodule_cmd_svsmode_chan(void (*func) (char *name, char *mode, char *nick))
01022 {
01023 ircdproto.ircd_cmd_svsmode_chan = func;
01024 }
01025
01026 void pmodule_cmd_svid_umode(void (*func) (char *nick, time_t ts))
01027 {
01028 ircdproto.ircd_cmd_svid_umode = func;
01029 }
01030
01031 void pmodule_cmd_nc_change(void (*func) (User * u))
01032 {
01033 ircdproto.ircd_cmd_nc_change = func;
01034 }
01035
01036 void pmodule_cmd_svid_umode2(void (*func) (User * u, char *ts))
01037 {
01038 ircdproto.ircd_cmd_svid_umode2 = func;
01039 }
01040
01041 void pmodule_cmd_svid_umode3(void (*func) (User * u, char *ts))
01042 {
01043 ircdproto.ircd_cmd_svid_umode3 = func;
01044 }
01045
01046 void pmodule_cmd_ctcp(void (*func) (char *source, char *dest, char *buf))
01047 {
01048 ircdproto.ircd_cmd_ctcp = func;
01049 }
01050
01051 void pmodule_cmd_svsjoin(void (*func)
01052 (char *source, char *nick, char *chan,
01053 char *param))
01054 {
01055 ircdproto.ircd_cmd_svsjoin = func;
01056 }
01057
01058 void
01059 pmodule_cmd_svspart(void (*func) (char *source, char *nick, char *chan))
01060 {
01061 ircdproto.ircd_cmd_svspart = func;
01062 }
01063
01064 void pmodule_cmd_swhois(void (*func) (char *source, char *who, char *mask))
01065 {
01066 ircdproto.ircd_cmd_swhois = func;
01067 }
01068
01069 void pmodule_cmd_eob(void (*func) ())
01070 {
01071 ircdproto.ircd_cmd_eob = func;
01072 }
01073
01074 void
01075 pmodule_cmd_jupe(void (*func) (char *jserver, char *who, char *reason))
01076 {
01077 ircdproto.ircd_cmd_jupe = func;
01078 }
01079
01080 void pmodule_set_umode(void (*func) (User * user, int ac, char **av))
01081 {
01082 ircdproto.ircd_set_umode = func;
01083 }
01084
01085 void pmodule_valid_nick(int (*func) (char *nick))
01086 {
01087 ircdproto.ircd_valid_nick = func;
01088 }
01089
01090 void pmodule_valid_chan(int (*func) (char *chan))
01091 {
01092 ircdproto.ircd_valid_chan = func;
01093 }
01094
01095 void pmodule_flood_mode_check(int (*func) (char *value))
01096 {
01097 ircdproto.ircd_flood_mode_check = func;
01098 }
01099
01100 void pmodule_ircd_var(IRCDVar * ircdvar)
01101 {
01102 ircd = ircdvar;
01103 }
01104
01105 void pmodule_ircd_cap(IRCDCAPAB * cap)
01106 {
01107 ircdcap = cap;
01108 }
01109
01110 void pmodule_ircd_version(char *version)
01111 {
01112 version_protocol = sstrdup(version);
01113 }
01114
01115 void pmodule_ircd_cbmodeinfos(CBModeInfo * modeinfos)
01116 {
01117 cbmodeinfos = modeinfos;
01118 }
01119
01120 void pmodule_ircd_cumodes(CUMode modes[128])
01121 {
01122 int i = 0;
01123 for (i = 0; i < 128; i++) {
01124 cumodes[i] = modes[i];
01125 }
01126 }
01127
01128 void pmodule_ircd_flood_mode_char_set(char *mode)
01129 {
01130 flood_mode_char_set = sstrdup(mode);
01131 }
01132
01133 void pmodule_ircd_flood_mode_char_remove(char *mode)
01134 {
01135 flood_mode_char_remove = sstrdup(mode);
01136 }
01137
01138 void pmodule_ircd_cbmodes(CBMode modes[128])
01139 {
01140 int i = 0;
01141 for (i = 0; i < 128; i++) {
01142 cbmodes[i] = modes[i];
01143 }
01144 }
01145
01146 void pmodule_ircd_cmmodes(CMMode modes[128])
01147 {
01148 int i = 0;
01149 for (i = 0; i < 128; i++) {
01150 cmmodes[i] = modes[i];
01151 }
01152 }
01153
01154 void pmodule_ircd_csmodes(char mode[128])