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