Anope IRC Services  Version 1.8
hybrid.c
Go to the documentation of this file.
1 /* ircd-hybrid-8 protocol module
2  *
3  * (C) 2003-2014 Anope Team
4  * (C) 2012-2013 by the Hybrid Development Team
5  *
6  * Please read COPYING and README for further details.
7  *
8  * Based on the original code of Epona by Lara.
9  * Based on the original code of Services by Andy Church.
10  *
11  *
12  */
13 
14 #include "services.h"
15 #include "pseudo.h"
16 #include "hybrid.h"
17 #include "version.h"
18 
20  {"Hybrid 8.1.*", /* ircd name */
21  "+o", /* nickserv mode */
22  "+o", /* chanserv mode */
23  "+o", /* memoserv mode */
24  "+", /* hostserv mode */
25  "+io", /* operserv mode */
26  "+o", /* botserv mode */
27  "+i", /* helpserv mode */
28  "+i", /* Dev/Null mode */
29  "+io", /* Global mode */
30  "+o", /* nickserv alias mode */
31  "+o", /* chanserv alias mode */
32  "+o", /* memoserv alias mode */
33  "+", /* hostserv alias mode */
34  "+io", /* operserv alias mode */
35  "+o", /* botserv alias mode */
36  "+i", /* helpserv alias mode */
37  "+i", /* Dev/Null alias mode */
38  "+io", /* Global alias mode */
39  "+", /* Used by BotServ Bots */
40  3, /* Chan Max Symbols */
41  "-cilmnpstMORS", /* Modes to Remove */
42  "+o", /* Channel Umode used by Botserv bots */
43  1, /* SVSNICK */
44  1, /* Vhost */
45  0, /* Has Owner */
46  NULL, /* Mode to set for an owner */
47  NULL, /* Mode to unset for an owner */
48  NULL, /* Mode to set for admin */
49  NULL, /* Mode to unset for admin */
50  "+rd", /* Mode On Reg */
51  NULL, /* Mode on ID for Roots */
52  NULL, /* Mode on ID for Admins */
53  NULL, /* Mode on ID for Opers */
54  "-r+d", /* Mode on UnReg */
55  "+d", /* Mode on Nick Change */
56  1, /* Supports SGlines */
57  1, /* Supports SQlines */
58  1, /* Supports SZlines */
59  1, /* Supports Halfop +h */
60  3, /* Number of server args */
61  1, /* Join 2 Set */
62  1, /* Join 2 Message */
63  1, /* Has exceptions +e */
64  0, /* TS Topic Forward */
65  0, /* TS Topic Backward */
66  0, /* Protected Umode */
67  0, /* Has Admin */
68  1, /* Chan SQlines */
69  0, /* Quit on Kill */
70  0, /* SVSMODE unban */
71  0, /* Has Protect */
72  0, /* Reverse */
73  1, /* Chan Reg */
74  CMODE_r, /* Channel Mode */
75  0, /* vidents */
76  0, /* svshold */
77  1, /* time stamp on mode */
78  0, /* NICKIP */
79  0, /* UMODE */
80  0, /* O:LINE */
81  0, /* VHOST ON NICK */
82  0, /* Change RealName */
83  CMODE_p, /* No Knock */
84  0, /* Admin Only */
85  DEFAULT_MLOCK, /* Default MLOCK */
86  UMODE_x, /* Vhost Mode */
87  0, /* +f */
88  0, /* +L */
89  0, /* +f Mode */
90  0, /* +L Mode */
91  1, /* On nick change check if they could be identified */
92  0, /* No Knock requires +i */
93  NULL, /* CAPAB Chan Modes */
94  0, /* We support TOKENS */
95  1, /* TOKENS are CASE inSensitive */
96  0, /* TIME STAMPS are BASE64 */
97  1, /* +I support */
98  0, /* SJOIN ban char */
99  0, /* SJOIN except char */
100  0, /* SJOIN invite char */
101  0, /* Can remove User Channel Modes with SVSMODE */
102  0, /* Sglines are not enforced until user reconnects */
103  "x", /* vhost char */
104  0, /* ts6 */
105  0, /* support helper umode */
106  0, /* p10 */
107  NULL, /* character set */
108  1, /* reports sync state */
109  1, /* CIDR channelbans */
110  0, /* +j */
111  0, /* +j mode */
112  0, /* Use delayed client introduction. */
113  }
114  ,
115  {NULL}
116 };
117 
119  {
120  CAPAB_NOQUIT, /* NOQUIT */
121  0, /* TSMODE */
122  0, /* UNCONNECT */
123  0, /* NICKIP */
124  0, /* SJOIN */
125  0, /* ZIP */
126  0, /* BURST */
127  CAPAB_TS5, /* TS5 */
128  0, /* TS3 */
129  0, /* DKEY */
130  0, /* PT4 */
131  0, /* SCS */
132  CAPAB_QS, /* QS */
133  0, /* UID */
134  CAPAB_KNOCK, /* KNOCK */
135  0, /* CLIENT */
136  0, /* IPV6 */
137  0, /* SSJ5 */
138  0, /* SN2 */
139  0, /* TOKEN */
140  0, /* VHOST */
141  0, /* SSJ3 */
142  0, /* NICK2 */
143  0, /* UMODE2 */
144  0, /* VL */
145  0, /* TLKEXT */
146  0, /* DODKEY */
147  0, /* DOZIP */
148  0, 0, 0}
149 };
150 
151 
152 
153 void hybrid_set_umode(User *user, int ac, char **av)
154 {
155  int add = 1; /* 1 if adding modes, 0 if deleting */
156  char *modes = av[0];
157 
158  ac--;
159 
160  if (debug)
161  alog("debug: Changing mode for %s to %s", user->nick, modes);
162 
163  while (*modes) {
164  uint32 backup = user->mode;
165 
166  /* This looks better, much better than "add ? (do_add) : (do_remove)".
167  * At least this is readable without paying much attention :) -GD
168  */
169  if (add)
170  user->mode |= umodes[(int) *modes];
171  else
172  user->mode &= ~umodes[(int) *modes];
173 
174  switch (*modes++) {
175  case '+':
176  add = 1;
177  break;
178  case '-':
179  add = 0;
180  break;
181  case 'd':
182  user->mode = backup;
183 
184  if (ac == 0) {
185  alog("user: umode +d with no parameter (?) for user %s",
186  user->nick);
187  break;
188  }
189 
190  ac--;
191  av++;
192  user->svid = strtoul(*av, NULL, 0);
193  break;
194  case 'o':
195  if (add) {
196  opcnt++;
197 
198  if (WallOper)
200  "\2%s\2 is now an IRC operator.",
201  user->nick);
202  display_news(user, NEWS_OPER);
203 
204  } else {
205  opcnt--;
206  }
207  break;
208  case 'r':
209  if (add && !nick_identified(user)) {
210  common_svsmode(user, "-r", NULL);
211  user->mode &= ~UMODE_r;
212  }
213  break;
214  case 'x':
215  if (!add) {
216  if (user->vhost) {
217  free(user->vhost);
218  user->vhost = NULL;
219  }
220  }
221 
222  update_host(user);
223  break;
224  }
225  }
226 }
227 
228 unsigned long umodes[128] = {
229  0, 0, 0, /* Unused */
230  0, 0, 0, /* Unused */
231  0, 0, 0, /* Unused, Unused, Horzontal Tab */
232  0, 0, 0, /* Line Feed, Unused, Unused */
233  0, 0, 0, /* Carriage Return, Unused, Unused */
234  0, 0, 0, /* Unused */
235  0, 0, 0, /* Unused */
236  0, 0, 0, /* Unused */
237  0, 0, 0, /* Unused */
238  0, 0, 0, /* Unused */
239  0, 0, 0, /* Unused, Unused, Space */
240  0, 0, 0, /* ! " # */
241  0, 0, 0, /* $ % & */
242  0, 0, 0, /* ! ( ) */
243  0, 0, 0, /* * + , */
244  0, 0, 0, /* - . / */
245  0, 0, /* 0 1 */
246  0, 0, /* 2 3 */
247  0, 0, /* 4 5 */
248  0, 0, /* 6 7 */
249  0, 0, /* 8 9 */
250  0, 0, /* : ; */
251  0, 0, 0, /* < = > */
252  0, 0, /* ? @ */
253  0, 0, 0, /* A B C */
254  0, 0, 0, /* D E F */
255  0, 0, 0, /* G H I */
256  0, 0, 0, /* J K L */
257  0, 0, 0, /* M N O */
258  0, 0, UMODE_R, /* P Q R */
259  0, 0, 0, /* S T U */
260  0, 0, 0, /* V W X */
261  0, /* Y */
262  0, /* Z */
263  0, 0, 0, /* [ \ ] */
264  0, 0, 0, /* ^ _ ` */
265  UMODE_a, UMODE_b, UMODE_c, /* a b c */
266  UMODE_d, 0, UMODE_f, /* d e f */
267  UMODE_g, 0, UMODE_i, /* g h i */
268  0, UMODE_k, UMODE_l, /* j k l */
269  0, UMODE_n, UMODE_o, /* m n o */
270  0, 0, UMODE_r, /* p q r */
271  UMODE_s, 0, UMODE_u, /* s t u */
272  0, UMODE_w, UMODE_x, /* v w x */
273  UMODE_y, /* y */
274  UMODE_z, /* z */
275  0, 0, 0, /* { | } */
276  0, 0 /* ~ � */
277 };
278 
279 
280 char myCsmodes[128] = {
281  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
282  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
283 
284  0,
285  0,
286  0, 0, 0,
287  'h',
288  0, 0, 0, 0,
289  0,
290 
291  'v', 0, 0, 0, 0,
292  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
293 
294  'o', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
295  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
296 
297  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
298  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
299 };
300 
302  {NULL}, {NULL}, {NULL},
303  {NULL}, {NULL}, {NULL},
304  {NULL}, {NULL}, {NULL},
305  {NULL}, {NULL}, {NULL},
306  {NULL}, {NULL}, {NULL},
307  {NULL}, {NULL}, {NULL},
308  {NULL}, {NULL}, {NULL},
309  {NULL}, {NULL}, {NULL},
310  {NULL}, {NULL}, {NULL},
311  {NULL}, {NULL}, {NULL},
312  {NULL}, {NULL}, {NULL},
313  {NULL}, {NULL}, {NULL},
314  {NULL}, {NULL}, {NULL},
315  {NULL}, {NULL}, {NULL},
316  {NULL}, {NULL}, {NULL},
317  {NULL}, {NULL}, {NULL},
318  {NULL}, {NULL}, {NULL},
319  {NULL}, {NULL}, {NULL},
320  {NULL}, {NULL}, {NULL},
321  {NULL}, {NULL}, {NULL},
322  {NULL}, {NULL}, {NULL},
323  {NULL}, {NULL}, {NULL},
324  {NULL}, {NULL}, {NULL}, /* BCD */
325  {NULL}, {NULL}, {NULL}, /* EFG */
326  {NULL}, /* H */
328  {NULL}, /* J */
329  {NULL}, {NULL}, {NULL}, /* KLM */
330  {NULL}, {NULL}, {NULL}, /* NOP */
331  {NULL}, {NULL}, {NULL}, /* QRS */
332  {NULL}, {NULL}, {NULL}, /* TUV */
333  {NULL}, {NULL}, {NULL}, /* WXY */
334  {NULL}, /* Z */
335  {NULL}, {NULL}, /* (char 91 - 92) */
336  {NULL}, {NULL}, {NULL}, /* (char 93 - 95) */
337  {NULL}, /* ` (char 96) */
338  {NULL}, /* a (char 97) */
339  {add_ban, del_ban},
340  {NULL},
341  {NULL},
343  {NULL},
344  {NULL},
345  {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL},
346  {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL},
347  {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}
348 };
349 
350 
352  {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0},
353  {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0},
354  {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0},
355  {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0},
356  {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0},
357  {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0},
358  {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0},
359  {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0},
360  {0},
361  {0}, /* A */
362  {0}, /* B */
363  {0}, /* C */
364  {0}, /* D */
365  {0}, /* E */
366  {0}, /* F */
367  {0}, /* G */
368  {0}, /* H */
369  {0}, /* I */
370  {0}, /* J */
371  {0}, /* K */
372  {0}, /* L */
373  {CMODE_M, 0, NULL, NULL}, /* M */
374  {0}, /* N */
375  {CMODE_O, CBM_NO_USER_MLOCK, NULL, NULL}, /* O */
376  {0}, /* P */
377  {0}, /* Q */
378  {CMODE_R, 0, NULL, NULL}, /* R */
379  {CMODE_S, 0, NULL, NULL}, /* S */
380  {0}, /* T */
381  {0}, /* U */
382  {0}, /* V */
383  {0}, /* W */
384  {0}, /* X */
385  {0}, /* Y */
386  {0}, /* Z */
387  {0}, {0}, {0}, {0}, {0}, {0},
388  {0}, /* a */
389  {0}, /* b */
390  {CMODE_c, 0, NULL, NULL}, /* c */
391  {0}, /* d */
392  {0}, /* e */
393  {0}, /* f */
394  {0}, /* g */
395  {0}, /* h */
396  {CMODE_i, 0, NULL, NULL},
397  {0}, /* j */
400  {CMODE_m, 0, NULL, NULL},
401  {CMODE_n, 0, NULL, NULL},
402  {0}, /* o */
403  {CMODE_p, 0, NULL, NULL},
404  {0}, /* q */
405  {CMODE_r, CBM_NO_MLOCK, NULL, NULL},
406  {CMODE_s, 0, NULL, NULL},
407  {CMODE_t, 0, NULL, NULL},
408  {0},
409  {0}, /* v */
410  {0}, /* w */
411  {0}, /* x */
412  {0}, /* y */
413  {0}, /* z */
414  {0}, {0}, {0}, {0}
415 };
416 
418  {'c', CMODE_c, 0, NULL, NULL},
419  {'i', CMODE_i, 0, NULL, NULL},
420  {'k', CMODE_k, 0, get_key, cs_get_key},
422  {'m', CMODE_m, 0, NULL, NULL},
423  {'n', CMODE_n, 0, NULL, NULL},
424  {'p', CMODE_p, 0, NULL, NULL},
425  {'r', CMODE_r, 0, NULL, NULL},
426  {'s', CMODE_s, 0, NULL, NULL},
427  {'t', CMODE_t, 0, NULL, NULL},
428  {'M', CMODE_M, 0, NULL, NULL},
429  {'O', CMODE_O, 0, NULL, NULL},
430  {'R', CMODE_R, 0, NULL, NULL},
431  {'S', CMODE_S, 0, NULL, NULL},
432  {0}
433 };
434 
436  {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0},
437  {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0},
438  {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0},
439  {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0},
440 
441  {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0},
442  {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0},
443  {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0},
444  {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0},
445 
446  {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0},
447  {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0},
448  {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0},
449  {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0},
450 
451  {0},
452 
453  {0}, /* a */
454  {0}, /* b */
455  {0}, /* c */
456  {0}, /* d */
457  {0}, /* e */
458  {0}, /* f */
459  {0}, /* g */
461  {0}, /* i */
462  {0}, /* j */
463  {0}, /* k */
464  {0}, /* l */
465  {0}, /* m */
466  {0}, /* n */
468  {0}, /* p */
469  {0}, /* q */
470  {0}, /* r */
471  {0}, /* s */
472  {0}, /* t */
473  {0}, /* u */
474  {CUS_VOICE, 0, NULL},
475  {0}, /* w */
476  {0}, /* x */
477  {0}, /* y */
478  {0}, /* z */
479  {0}, {0}, {0}, {0}, {0}
480 };
481 
482 
483 
484 void hybrid_cmd_notice(char *source, char *dest, char *buf)
485 {
486  if (!buf)
487  return;
488 
489  if (NSDefFlags & NI_MSG)
490  hybrid_cmd_privmsg2(source, dest, buf);
491  else
492  send_cmd(source, "NOTICE %s :%s", dest, buf);
493 }
494 
495 void hybrid_cmd_notice2(char *source, char *dest, char *msg)
496 {
497  send_cmd(source, "NOTICE %s :%s", dest, msg);
498 }
499 
500 void hybrid_cmd_privmsg(char *source, char *dest, char *buf)
501 {
502  if (!buf)
503  return;
504 
505  send_cmd(source, "PRIVMSG %s :%s", dest, buf);
506 }
507 
508 void hybrid_cmd_privmsg2(char *source, char *dest, char *msg)
509 {
510  send_cmd(source, "PRIVMSG %s :%s", dest, msg);
511 }
512 
513 void hybrid_cmd_serv_notice(char *source, char *dest, char *msg)
514 {
515  send_cmd(source, "NOTICE $$%s :%s", dest, msg);
516 }
517 
518 void hybrid_cmd_serv_privmsg(char *source, char *dest, char *msg)
519 {
520  send_cmd(source, "PRIVMSG $$%s :%s", dest, msg);
521 }
522 
523 void hybrid_cmd_global(char *source, char *buf)
524 {
525  if (!buf)
526  return;
527 
528  send_cmd(source ? source : ServerName, "GLOBOPS :%s", buf);
529 }
530 
531 /* GLOBOPS - to handle old WALLOPS */
532 void hybrid_cmd_global_legacy(char *source, char *fmt)
533 {
534  send_cmd(source ? source : ServerName, "GLOBOPS :%s", fmt);
535 }
536 
537 int anope_event_sjoin(char *source, int ac, char **av)
538 {
539  do_sjoin(source, ac, av);
540  return MOD_CONT;
541 }
542 
543 /*
544 ** NICK - new
545 ** source = NULL
546 ** parv[0] = nickname
547 ** parv[1] = hopcount
548 ** parv[2] = timestamp
549 ** parv[3] = modes
550 ** parv[4] = username
551 ** parv[5] = hostname
552 ** parv[6] = server
553 ** parv[7] = servicestamp
554 ** parv[8] = info
555 ** NICK - change
556 ** source = oldnick
557 ** parv[0] = new nickname
558 ** parv[1] = timestamp
559 */
560 int anope_event_nick(char *source, int ac, char **av)
561 {
562  if (ac != 2)
563  {
564  User *user = do_nick(source, av[0], av[4], av[5], av[6], av[8],
565  strtoul(av[2], NULL, 10),
566  strtoul(av[7], NULL, 0), 0, NULL, NULL);
567  if (user)
568  anope_set_umode(user, 1, &av[3]);
569  }
570  else
571  do_nick(source, av[0], NULL, NULL, NULL, NULL,
572  strtoul(av[1], NULL, 10),
573  0, 0, NULL, NULL);
574 
575  return MOD_CONT;
576 }
577 
578 int anope_event_topic(char *source, int ac, char **av)
579 {
580  if (ac == 4)
581  do_topic(source, ac, av);
582  else {
583  Channel *c = findchan(av[0]);
584  time_t topic_time = time(NULL);
585 
586  if (!c) {
587  if (debug)
588  alog("debug: TOPIC %s for nonexistent channel %s",
589  merge_args(ac - 1, av + 1), av[0]);
590 
591  return MOD_CONT;
592  }
593 
594  if (check_topiclock(c, topic_time))
595  return MOD_CONT;
596 
597  if (c->topic) {
598  free(c->topic);
599  c->topic = NULL;
600  }
601  if (ac > 1 && *av[1])
602  c->topic = sstrdup(av[1]);
603 
604  strscpy(c->topic_setter, source, sizeof(c->topic_setter));
605  c->topic_time = topic_time;
606 
607  record_topic(av[0]);
608 
609  if (ac > 1 && *av[1])
610  send_event(EVENT_TOPIC_UPDATED, 2, av[0], av[1]);
611  else
612  send_event(EVENT_TOPIC_UPDATED, 2, av[0], "");
613  }
614 
615  return MOD_CONT;
616 }
617 
618 int anope_event_tburst(char *source, int ac, char **av)
619 {
620  if (ac != 5)
621  return MOD_CONT;
622 
623  av[0] = av[1];
624  av[1] = av[3];
625  av[3] = av[4];
626 
627  do_topic(source, 4, av);
628  return MOD_CONT;
629 }
630 
631 int anope_event_436(char *source, int ac, char **av)
632 {
633  if (ac < 1)
634  return MOD_CONT;
635 
636  m_nickcoll(av[0]);
637  return MOD_CONT;
638 }
639 
640 
641 void hybrid_cmd_sqline(char *mask, char *reason)
642 {
643  if (!mask || !reason)
644  return;
645 
646  send_cmd(s_OperServ, "RESV * %s :%s", mask, reason);
647 }
648 
649 void hybrid_cmd_unsqline(char *user)
650 {
651  if (!user)
652  return;
653 
654  send_cmd(s_OperServ, "UNRESV * %s", user);
655 }
656 
657 void hybrid_cmd_sgline(char *mask, char *reason)
658 {
659  if (!mask || !reason)
660  return;
661 
662  send_cmd(s_OperServ, "XLINE * %s 0 :%s", mask, reason);
663 }
664 
665 void hybrid_cmd_unsgline(char *mask)
666 {
667  if (!mask)
668  return;
669 
670  send_cmd(s_OperServ, "UNXLINE * %s", mask);
671 }
672 
673 void hybrid_cmd_szline(char *mask, char *reason, char *whom)
674 {
675  if (!mask || !reason)
676  return;
677 
678  send_cmd(s_OperServ, "DLINE * 172800 %s :%s", mask, reason);
679 }
680 
681 void hybrid_cmd_unszline(char *mask)
682 {
683  if (!mask)
684  return;
685 
686  send_cmd(s_OperServ, "UNDLINE * %s", mask);
687 }
688 
689 /*
690 oper: the nick of the oper performing the kline
691 target.server: the server(s) this kline is destined for
692 duration: the duration if a tkline, 0 if permanent.
693 user: the 'user' portion of the kline
694 host: the 'host' portion of the kline
695 reason: the reason for the kline.
696 */
697 
698 void hybrid_cmd_akill(char *user, char *host, char *who, time_t when,
699  time_t expires, char *reason)
700 {
701  send_cmd(s_OperServ, "KLINE * %ld %s %s :%s",
702  (long int) (expires - (long) time(NULL)), user, host, reason);
703 }
704 
705 void hybrid_cmd_remove_akill(char *user, char *host)
706 {
707  send_cmd(s_OperServ, "UNKLINE * %s %s", user, host);
708 }
709 
710 void hybrid_cmd_svsnoop(char *server, int set)
711 {
712  /* does not support */
713 }
714 
715 void hybrid_cmd_svsadmin(char *server, int set)
716 {
717  hybrid_cmd_svsnoop(server, set);
718 }
719 
720 void hybrid_cmd_topic(char *whosets, char *chan, char *whosetit,
721  char *topic, time_t when)
722 {
723  send_cmd(whosets, "TOPIC %s :%s", chan, topic);
724 }
725 
727 {
728  common_svsmode(user, "-x", user->host);
729  notice_lang(s_HostServ, user, HOST_OFF);
730 }
731 
732 void hybrid_cmd_vhost_on(char *nick, char *vIdent, char *vhost)
733 {
734  User *user = finduser(nick);
735 
736  if (!user)
737  return;
738 
739  common_svsmode(user, "+x", vhost);
740 }
741 
742 void hybrid_cmd_join(char *user, char *channel, time_t chantime)
743 {
744  send_cmd(NULL, "SJOIN %ld %s + :%s", (long int) chantime, channel,
745  user);
746 }
747 
748 void hybrid_cmd_svskill(char *source, char *user, char *buf)
749 {
750  if (!buf || !source || !user)
751  return;
752 
753  send_cmd(source, "KILL %s :%s", user, buf);
754 }
755 
756 void hybrid_cmd_svsmode(User * u, int ac, char **av)
757 {
758  send_cmd(ServerName, "SVSMODE %s %ld %s%s%s", u->nick,
759  (long int)u->timestamp, av[0], (ac == 2 ? " " : ""),
760  (ac == 2 ? av[1] : ""));
761 }
762 
763 /*
764  * SVINFO
765  * parv[0] = sender prefix
766  * parv[1] = TS_CURRENT for the server
767  * parv[2] = TS_MIN for the server
768  * parv[3] = server is standalone or connected to non-TS only
769  * parv[4] = server's idea of UTC time
770  */
772 {
773  send_cmd(NULL, "SVINFO 5 5 0 :%ld", (long int) time(NULL));
774 }
775 
776 /* CAPAB */
777 /*
778  * As of December 21, 2012, ircd-hybrid-8 does support the following capabilities
779  * which are required to work with IRC-services:
780  *
781  * QS - Can handle quit storm removal
782  * EX - Can do channel +e exemptions
783  * CHW - Can do channel wall @#
784  * IE - Can do invite exceptions
785  * KNOCK - Supports KNOCK
786  * TBURST - Supports topic burst
787  * ENCAP - Supports ENCAP
788  * HOPS - Supports HalfOps
789  * SVS - Supports services
790  * EOB - Supports End Of Burst message
791  */
793 {
794  send_cmd(NULL, "CAPAB :QS EX CHW IE ENCAP TBURST SVS HOPS EOB");
795 }
796 
797 /* PASS */
798 void hybrid_cmd_pass(char *pass)
799 {
800  send_cmd(NULL, "PASS %s :TS", pass);
801 }
802 
803 /* SERVER name hop descript */
804 void hybrid_cmd_server(char *servname, int hop, char *descript)
805 {
806  send_cmd(NULL, "SERVER %s %d :%s", servname, hop, descript);
807 }
808 
810 {
811  me_server =
813 
814  if (servernum == 1)
816  else if (servernum == 2)
818  else if (servernum == 3)
820 
824 }
825 
827 {
828  /* Not used */
829 }
830 
832 {
833  /* not used */
834 }
835 
836 void hybrid_cmd_bot_nick(char *nick, char *user, char *host, char *real,
837  char *modes)
838 {
840  send_cmd(NULL, "NICK %s 1 %ld %s %s %s %s 0 :%s", nick,
841  (long int) time(NULL), modes, user, host, ServerName, real);
842 
843 }
844 
845 void hybrid_cmd_part(char *nick, char *chan, char *buf)
846 {
847  if (buf)
848  send_cmd(nick, "PART %s :%s", chan, buf);
849  else
850  send_cmd(nick, "PART %s", chan);
851 }
852 
853 int anope_event_ping(char *source, int ac, char **av)
854 {
855  if (ac < 1)
856  return MOD_CONT;
857 
858  hybrid_cmd_pong(ac > 1 ? av[1] : ServerName, av[0]);
859  return MOD_CONT;
860 }
861 
862 int anope_event_away(char *source, int ac, char **av)
863 {
864  if (!source)
865  return MOD_CONT;
866 
867  m_away(source, (ac ? av[0] : NULL));
868  return MOD_CONT;
869 }
870 
871 int anope_event_kill(char *source, int ac, char **av)
872 {
873  if (ac != 2)
874  return MOD_CONT;
875 
876  m_kill(av[0], av[1]);
877  return MOD_CONT;
878 }
879 
880 int anope_event_kick(char *source, int ac, char **av)
881 {
882  if (ac != 3)
883  return MOD_CONT;
884 
885  do_kick(source, ac, av);
886  return MOD_CONT;
887 }
888 
889 int anope_event_eob(char *source, int ac, char **av)
890 {
891  Server *s = findserver(servlist, source);
892 
893  /* If we found a server with the given source, that one just
894  * finished bursting. If there was no source, then our uplink
895  * server finished bursting. -GD
896  */
897  if (!s && serv_uplink)
898  s = serv_uplink;
899 
900  finish_sync(s, 1);
901  return MOD_CONT;
902 }
903 
905 {
906  send_cmd(ServerName, "EOB");
907 }
908 
909 int anope_event_join(char *source, int ac, char **av)
910 {
911  if (ac != 1)
912  return MOD_CONT;
913 
914  do_join(source, ac, av);
915  return MOD_CONT;
916 }
917 
918 int anope_event_motd(char *source, int ac, char **av)
919 {
920  if (!source)
921  return MOD_CONT;
922 
923  m_motd(source);
924  return MOD_CONT;
925 }
926 
927 int anope_event_privmsg(char *source, int ac, char **av)
928 {
929  if (ac != 2)
930  return MOD_CONT;
931 
932  m_privmsg(source, av[0], av[1]);
933  return MOD_CONT;
934 }
935 
936 int anope_event_part(char *source, int ac, char **av)
937 {
938  if (ac < 1 || ac > 2)
939  return MOD_CONT;
940 
941  do_part(source, ac, av);
942  return MOD_CONT;
943 }
944 
945 int anope_event_whois(char *source, int ac, char **av)
946 {
947  if (source && ac >= 1)
948  m_whois(source, av[0]);
949 
950  return MOD_CONT;
951 }
952 
953 /* EVENT: SERVER */
954 int anope_event_server(char *source, int ac, char **av)
955 {
956  if (!stricmp(av[1], "1"))
957  uplink = sstrdup(av[0]);
958 
959  do_server(source, av[0], av[1], av[2], NULL);
960  return MOD_CONT;
961 }
962 
963 int anope_event_squit(char *source, int ac, char **av)
964 {
965  if (ac != 2)
966  return MOD_CONT;
967 
968  do_squit(source, ac, av);
969  return MOD_CONT;
970 }
971 
972 int anope_event_quit(char *source, int ac, char **av)
973 {
974  if (ac != 1)
975  return MOD_CONT;
976 
977  do_quit(source, ac, av);
978  return MOD_CONT;
979 }
980 
981 void hybrid_cmd_372(char *source, char *msg)
982 {
983  send_cmd(ServerName, "372 %s :- %s", source, msg);
984 }
985 
986 void hybrid_cmd_372_error(char *source)
987 {
988  send_cmd(ServerName, "422 %s :- MOTD file not found! Please "
989  "contact your IRC administrator.", source);
990 }
991 
992 void hybrid_cmd_375(char *source)
993 {
994  send_cmd(ServerName, "375 %s :- %s Message of the Day",
995  source, ServerName);
996 }
997 
998 void hybrid_cmd_376(char *source)
999 {
1000  send_cmd(ServerName, "376 %s :End of /MOTD command.", source);
1001 }
1002 
1003 /* 391 */
1004 void hybrid_cmd_391(char *source, char *timestr)
1005 {
1006  if (!timestr)
1007  return;
1008 
1009  send_cmd(NULL, "391 :%s %s :%s", source, ServerName, timestr);
1010 }
1011 
1012 /* 250 */
1013 void hybrid_cmd_250(char *buf)
1014 {
1015  if (!buf)
1016  return;
1017 
1018  send_cmd(NULL, "250 %s", buf);
1019 }
1020 
1021 /* 307 */
1022 void hybrid_cmd_307(char *buf)
1023 {
1024  if (!buf)
1025  return;
1026 
1027  send_cmd(ServerName, "307 %s", buf);
1028 }
1029 
1030 /* 311 */
1031 void hybrid_cmd_311(char *buf)
1032 {
1033  if (!buf)
1034  return;
1035 
1036  send_cmd(ServerName, "311 %s", buf);
1037 }
1038 
1039 /* 312 */
1040 void hybrid_cmd_312(char *buf)
1041 {
1042  if (!buf)
1043  return;
1044 
1045  send_cmd(ServerName, "312 %s", buf);
1046 }
1047 
1048 /* 317 */
1049 void hybrid_cmd_317(char *buf)
1050 {
1051  if (!buf)
1052  return;
1053 
1054  send_cmd(ServerName, "317 %s", buf);
1055 }
1056 
1057 /* 219 */
1058 void hybrid_cmd_219(char *source, char *letter)
1059 {
1060  if (!source)
1061  return;
1062 
1063  if (letter)
1064  send_cmd(NULL, "219 %s %c :End of /STATS report.", source,
1065  *letter);
1066  else
1067  send_cmd(NULL, "219 %s l :End of /STATS report.", source);
1068 }
1069 
1070 /* 401 */
1071 void hybrid_cmd_401(char *source, char *who)
1072 {
1073  if (!source || !who)
1074  return;
1075 
1076  send_cmd(ServerName, "401 %s %s :No such service.", source, who);
1077 }
1078 
1079 /* 318 */
1080 void hybrid_cmd_318(char *source, char *who)
1081 {
1082  if (!source || !who)
1083  return;
1084 
1085  send_cmd(ServerName, "318 %s %s :End of /WHOIS list.", source, who);
1086 }
1087 
1088 /* 242 */
1089 void hybrid_cmd_242(char *buf)
1090 {
1091  if (!buf)
1092  return;
1093 
1094  send_cmd(NULL, "242 %s", buf);
1095 }
1096 
1097 /* 243 */
1098 void hybrid_cmd_243(char *buf)
1099 {
1100  if (!buf)
1101  return;
1102 
1103  send_cmd(NULL, "243 %s", buf);
1104 }
1105 
1106 /* 211 */
1107 void hybrid_cmd_211(char *buf)
1108 {
1109  if (!buf)
1110  return;
1111 
1112  send_cmd(NULL, "211 %s", buf);
1113 }
1114 
1115 void hybrid_cmd_mode(char *source, char *dest, char *buf)
1116 {
1117  if (!buf)
1118  return;
1119 
1120  send_cmd(source, "MODE %s %s", dest, buf);
1121 }
1122 
1123 void hybrid_cmd_nick(char *nick, char *name, char *mode)
1124 {
1125  EnforceQlinedNick(nick, NULL);
1126  send_cmd(NULL, "NICK %s 1 %ld %s %s %s %s 0 :%s", nick,
1127  (long int) time(NULL), mode, ServiceUser, ServiceHost,
1128  ServerName, (name));
1129 }
1130 
1131 void hybrid_cmd_kick(char *source, char *chan, char *user, char *buf)
1132 {
1133  if (buf)
1134  send_cmd(source, "KICK %s %s :%s", chan, user, buf);
1135  else
1136  send_cmd(source, "KICK %s %s", chan, user);
1137 }
1138 
1139 void hybrid_cmd_notice_ops(char *source, char *dest, char *buf)
1140 {
1141  if (!buf)
1142  return;
1143 
1144  send_cmd(NULL, "NOTICE @%s :%s", dest, buf);
1145 }
1146 
1147 void hybrid_cmd_bot_chan_mode(char *nick, char *chan)
1148 {
1149  anope_cmd_mode(nick, chan, "%s %s", ircd->botchanumode, nick);
1150 }
1151 
1152 /* QUIT */
1153 void hybrid_cmd_quit(char *source, char *buf)
1154 {
1155  if (buf)
1156  send_cmd(source, "QUIT :%s", buf);
1157  else
1158  send_cmd(source, "QUIT");
1159 }
1160 
1161 /* PONG */
1162 void hybrid_cmd_pong(char *servname, char *who)
1163 {
1164  send_cmd(servname, "PONG %s", who);
1165 }
1166 
1167 /* INVITE */
1168 void hybrid_cmd_invite(char *source, char *chan, char *nick)
1169 {
1170  if (!source || !chan || !nick)
1171  return;
1172 
1173  send_cmd(source, "INVITE %s %s", nick, chan);
1174 }
1175 
1176 /* SQUIT */
1177 void hybrid_cmd_squit(char *servname, char *message)
1178 {
1179  if (!servname || !message)
1180  return;
1181 
1182  send_cmd(NULL, "SQUIT %s :%s", servname, message);
1183 }
1184 
1185 int anope_event_mode(char *source, int ac, char **av)
1186 {
1187  if (ac < 2)
1188  return MOD_CONT;
1189 
1190  if (*av[0] == '#' || *av[0] == '&')
1191  do_cmode(source, ac, av);
1192  else
1193  do_umode(source, ac, av);
1194 
1195  return MOD_CONT;
1196 }
1197 
1198 void hybrid_cmd_351(char *source)
1199 {
1200  send_cmd(ServerName, "351 %s Anope-%s %s :%s - %s (%s) -- %s",
1203 }
1204 
1205 /* Event: PROTOCTL */
1206 int anope_event_capab(char *source, int ac, char **av)
1207 {
1208  int argvsize = 8;
1209  int argc;
1210  char **argv;
1211  char *str;
1212 
1213  if (ac < 1)
1214  return MOD_CONT;
1215 
1216  /* We get the params as one arg, we should split it for capab_parse */
1217  argv = scalloc(argvsize, sizeof(char *));
1218  argc = 0;
1219 
1220  while ((str = myStrGetToken(av[0], ' ', argc))) {
1221  if (argc == argvsize) {
1222  argvsize += 8;
1223  argv = srealloc(argv, argvsize * sizeof(char *));
1224  }
1225 
1226  argv[argc] = str;
1227  argc++;
1228  }
1229 
1230  capab_parse(argc, argv);
1231 
1232  /* Free our built ac/av */
1233  for (argvsize = 0; argvsize < argc; argvsize++)
1234  free(argv[argvsize]);
1235 
1236  free(argv);
1237 
1238  return MOD_CONT;
1239 }
1240 
1241 /* SVSHOLD - set */
1242 void hybrid_cmd_svshold(char *nick)
1243 {
1244  /* Not supported by this IRCD */
1245 }
1246 
1247 /* SVSHOLD - release */
1249 {
1250  /* Not Supported by this IRCD */
1251 }
1252 
1253 /* SVSNICK */
1254 /* parv[0] = sender
1255  * parv[1] = old nickname
1256  * parv[2] = new nickname
1257  * parv[3] = timestamp
1258  */
1259 void hybrid_cmd_svsnick(char *nick, char *newnick, time_t when)
1260 {
1261  send_cmd(NULL, "SVSNICK %s %s :%ld", nick, newnick, (long int) when);
1262 }
1263 
1264 void hybrid_cmd_guest_nick(char *nick, char *user, char *host, char *real,
1265  char *modes)
1266 {
1267  send_cmd(NULL, "NICK %s 1 %ld %s %s %s %s 0 :%s", nick,
1268  (long int) time(NULL), modes, user, host, ServerName, real);
1269 }
1270 
1271 void hybrid_cmd_svso(char *source, char *nick, char *flag)
1272 {
1273  /* Not Supported by this IRCD */
1274 }
1275 
1276 void hybrid_cmd_unban(char *name, char *nick)
1277 {
1278  /* Not Supported by this IRCD */
1279 }
1280 
1281 /* SVSMODE channel modes */
1282 
1283 void hybrid_cmd_svsmode_chan(char *name, char *mode, char *nick)
1284 {
1285  /* Not Supported by this IRCD */
1286 }
1287 
1288 /* SVSMODE +d */
1289 /* sent if svid is something weird */
1290 void hybrid_cmd_svid_umode(char *nick, time_t ts)
1291 {
1292  send_cmd(ServerName, "SVSMODE %s %lu +d 1", nick,
1293  (unsigned long int) ts);
1294 }
1295 
1296 /* SVSMODE +d */
1297 /* nc_change was = 1, and there is no na->status */
1299 {
1300  common_svsmode(u, "+d", "1");
1301 }
1302 
1303 /* SVSMODE +d */
1304 void hybrid_cmd_svid_umode2(User *u, char *ts)
1305 {
1306  /* not used */
1307 }
1308 
1309 void hybrid_cmd_svid_umode3(User *u, char *ts)
1310 {
1311  if (u->svid != u->timestamp)
1312  common_svsmode(u, "+rd", ts);
1313  else
1314  common_svsmode(u, "+r", NULL);
1315 }
1316 
1317 /* NICK <newnick> */
1318 void hybrid_cmd_chg_nick(char *oldnick, char *newnick)
1319 {
1320  if (!oldnick || !newnick)
1321  return;
1322 
1323  send_cmd(oldnick, "NICK %s", newnick);
1324 }
1325 
1326 /*
1327  * SVINFO
1328  * parv[0] = sender prefix
1329  * parv[1] = TS_CURRENT for the server
1330  * parv[2] = TS_MIN for the server
1331  * parv[3] = server is standalone or connected to non-TS only
1332  * parv[4] = server's idea of UTC time
1333  */
1334 int anope_event_svinfo(char *source, int ac, char **av)
1335 {
1336  /* currently not used but removes the message : unknown message from server */
1337  return MOD_CONT;
1338 }
1339 
1340 int anope_event_pass(char *source, int ac, char **av)
1341 {
1342  /* currently not used but removes the message : unknown message from server */
1343  return MOD_CONT;
1344 }
1345 
1346 void hybrid_cmd_svsjoin(char *source, char *nick, char *chan, char *param)
1347 {
1348  /* Not Supported by this IRCD */
1349 }
1350 
1351 void hybrid_cmd_svspart(char *source, char *nick, char *chan)
1352 {
1353  /* Not Supported by this IRCD */
1354 }
1355 
1356 void hybrid_cmd_swhois(char *source, char *who, char *mask)
1357 {
1358  /* not supported */
1359 }
1360 
1361 int anope_event_notice(char *source, int ac, char **av)
1362 {
1363  return hybrid_event_notice(source, ac, av);
1364 }
1365 
1366 int anope_event_admin(char *source, int ac, char **av)
1367 {
1368  return MOD_CONT;
1369 }
1370 
1371 int anope_event_invite(char *source, int ac, char **av)
1372 {
1373  return MOD_CONT;
1374 }
1375 
1376 int hybrid_flood_mode_check(char *value)
1377 {
1378  return 0;
1379 }
1380 
1381 int anope_event_error(char *source, int ac, char **av)
1382 {
1383  if (ac >= 1)
1384  if (debug)
1385  alog("debug: %s", av[0]);
1386 
1387  return MOD_CONT;
1388 }
1389 
1390 void hybrid_cmd_jupe(char *jserver, char *who, char *reason)
1391 {
1392  char rbuf[256];
1393 
1394  snprintf(rbuf, sizeof(rbuf), "Juped by %s%s%s", who,
1395  reason ? ": " : "", reason ? reason : "");
1396 
1397  if (findserver(servlist, jserver))
1398  hybrid_cmd_squit(jserver, rbuf);
1399 
1400  hybrid_cmd_server(jserver, 2, rbuf);
1401  new_server(me_server, jserver, rbuf, SERVER_JUPED, NULL);
1402 }
1403 
1404 /*
1405  1 = valid nick
1406  0 = nick is in valid
1407 */
1408 int hybrid_valid_nick(char *nick)
1409 {
1410  /* no hard coded invalid nicks */
1411  return 1;
1412 }
1413 
1414 /*
1415  1 = valid chan
1416  0 = chan is in valid
1417 */
1418 int hybrid_valid_chan(char *chan)
1419 {
1420  /* no hard coded invalid chans */
1421  return 1;
1422 }
1423 
1424 
1425 void hybrid_cmd_ctcp(char *source, char *dest, char *buf)
1426 {
1427  char *s = NULL;
1428 
1429  if (!buf)
1430  return;
1431 
1432  s = normalizeBuffer(buf);
1433 
1434  send_cmd(source, "NOTICE %s :\1%s \1", dest, s);
1435  free(s);
1436 }
1437 
1438 int hybrid_event_notice(char *source, int argc, char **argv)
1439 {
1440  return MOD_CONT;
1441 }
1442 
1443 /* *INDENT-OFF* */
1445 {
1446  Message *m;
1447 
1448  updateProtectDetails("PROTECT","PROTECTME","protect","deprotect","AUTOPROTECT","+","-");
1449 
1458  m = createMessage("GLOBOPS", anope_event_null); addCoreMessage(IRCD,m);
1477  m = createMessage("WALLOPS", anope_event_null); addCoreMessage(IRCD,m);
1479  m = createMessage("SVSMODE", anope_event_null); addCoreMessage(IRCD,m);
1480  m = createMessage("SVSNICK", anope_event_null); addCoreMessage(IRCD,m);
1483 }
1484 /* *INDENT-ON* */
1485 
1491 {
1567 }
1568 
1572 int AnopeInit(int argc, char **argv)
1573 {
1574  moduleAddAuthor("Anope");
1575  moduleAddVersion(VERSION_STRING);
1577 
1578  pmodule_ircd_version("Hybrid 8.1.*");
1579  pmodule_ircd_cap(myIrcdcap);
1580  pmodule_ircd_var(myIrcd);
1581  pmodule_ircd_cbmodeinfos(myCbmodeinfos);
1582  pmodule_ircd_cumodes(myCumodes);
1585  pmodule_ircd_cbmodes(myCbmodes);
1586  pmodule_ircd_cmmodes(myCmmodes);
1589 
1599 
1602 
1603  return MOD_CONT;
1604 }
void hybrid_cmd_svsnick(char *nick, char *newnick, time_t when)
Definition: hybrid.c:1259
E void pmodule_cmd_vhost_off(void(*func)(User *u))
Definition: ircd.c:713
E void pmodule_permchan_mode(int mode)
Definition: ircd.c:1206
void hybrid_cmd_372(char *source, char *msg)
Definition: hybrid.c:981
E int32 opcnt
Definition: extern.h:1140
E char * RemotePassword3
Definition: extern.h:270
E void pmodule_cmd_svspart(void(*func)(char *source, char *nick, char *chan))
Definition: ircd.c:1056
int anope_event_topic(char *source, int ac, char **av)
Definition: hybrid.c:578
void hybrid_cmd_privmsg(char *source, char *dest, char *buf)
Definition: hybrid.c:500
void hybrid_cmd_notice_ops(char *source, char *dest, char *buf)
Definition: hybrid.c:1139
void hybrid_cmd_svsnoop(char *server, int set)
Definition: hybrid.c:710
E void do_topic(const char *source, int ac, char **av)
Definition: channels.c:1249
E void do_server(const char *source, char *servername, char *hops, char *descript, char *numeric)
Definition: servers.c:360
E void pmodule_cmd_notice2(void(*func)(char *source, char *dest, char *msg))
Definition: ircd.c:798
E char * RemotePassword
Definition: extern.h:264
int anope_event_whois(char *source, int ac, char **av)
Definition: hybrid.c:945
void hybrid_cmd_global_legacy(char *source, char *fmt)
Definition: hybrid.c:532
void hybrid_cmd_250(char *buf)
Definition: hybrid.c:1013
E void pmodule_cmd_bot_chan_mode(void(*func)(char *nick, char *chan))
Definition: ircd.c:827
void hybrid_cmd_312(char *buf)
Definition: hybrid.c:1040
#define UMODE_c
Definition: bahamut.h:30
#define UMODE_R
Definition: bahamut.h:42
char nick[NICKMAX]
Definition: services.h:875
E void do_squit(const char *source, int ac, char **av)
Definition: servers.c:398
E int snprintf(char *buf, size_t size, const char *fmt,...)
Definition: compat.c:37
int anope_event_join(char *source, int ac, char **av)
Definition: hybrid.c:909
void hybrid_cmd_307(char *buf)
Definition: hybrid.c:1022
void hybrid_cmd_351(char *source)
Definition: hybrid.c:1198
#define UMODE_y
Definition: bahamut.h:33
E int anope_event_null(char *source, int ac, char **av)
Definition: messages.c:441
E void pmodule_cmd_351(void(*func)(char *source))
Definition: ircd.c:832
void hybrid_cmd_376(char *source)
Definition: hybrid.c:998
MDE void updateProtectDetails(char *level_info_protect_word, char *level_info_protectme_word, char *fant_protect_add, char *fant_protect_del, char *level_protect_word, char *protect_set_mode, char *protect_unset_mode)
Definition: modules.c:2512
void hybrid_cmd_vhost_on(char *nick, char *vIdent, char *vhost)
Definition: hybrid.c:732
#define UMODE_w
Definition: bahamut.h:21
#define CBM_MINUS_NO_ARG
Definition: services.h:928
E char * s_BotServ
Definition: extern.h:287
E IRCDVar * ircd
Definition: extern.h:39
#define UMODE_k
Definition: bahamut.h:31
E void pmodule_cmd_nick(void(*func)(char *nick, char *name, char *modes))
Definition: ircd.c:756
E void chan_set_key(Channel *chan, char *value)
Definition: channels.c:1998
E void pmodule_ircd_cmmodes(CMMode modes[128])
Definition: ircd.c:1143
E void do_kick(const char *source, int ac, char **av)
Definition: channels.c:638
E void pmodule_cmd_372_error(void(*func)(char *source))
Definition: ircd.c:741
#define CMODE_p
Definition: bahamut.h:47
MDE int addCoreMessage(MessageHash *msgTable[], Message *m)
Definition: modules.c:1597
E void pmodule_valid_nick(int(*func)(char *nick))
Definition: ircd.c:1082
#define CAPAB_NOQUIT
Definition: services.h:1366
E void cs_set_limit(ChannelInfo *ci, char *value)
Definition: chanserv.c:2558
void hybrid_cmd_remove_akill(char *user, char *host)
Definition: hybrid.c:705
void hybrid_cmd_pass(char *pass)
Definition: hybrid.c:798
int anope_event_invite(char *source, int ac, char **av)
Definition: hybrid.c:1371
E int nick_identified(User *u)
Definition: nickserv.c:1111
int anope_event_server(char *source, int ac, char **av)
Definition: hybrid.c:954
E void pmodule_cmd_kick(void(*func)(char *source, char *chan, char *user, char *buf))
Definition: ircd.c:780
void hybrid_cmd_sqline(char *mask, char *reason)
Definition: hybrid.c:641
E void send_cmd(const char *source, const char *fmt,...) FORMAT(printf
E void send_event(const char *name, int argc,...)
Definition: events.c:37
char * vhost
Definition: services.h:880
E void pmodule_cmd_vhost_on(void(*func)(char *nick, char *vIdent, char *vhost))
Definition: ircd.c:966
E void pmodule_cmd_svsjoin(void(*func)(char *source, char *nick, char *chan, char *param))
Definition: ircd.c:1048
#define CBM_NO_MLOCK
Definition: services.h:929
void hybrid_cmd_unszline(char *mask)
Definition: hybrid.c:681
E void pmodule_cmd_swhois(void(*func)(char *source, char *who, char *mask))
Definition: ircd.c:1061
E void pmodule_cmd_pong(void(*func)(char *servname, char *who))
Definition: ircd.c:842
E void pmodule_cmd_307(void(*func)(char *buf))
Definition: ircd.c:879
E char * get_limit(Channel *chan)
Definition: channels.c:1881
void hybrid_cmd_svso(char *source, char *nick, char *flag)
Definition: hybrid.c:1271
E void pmodule_cmd_211(void(*func)(char *buf))
Definition: ircd.c:924
void hybrid_cmd_svsmode_chan(char *name, char *mode, char *nick)
Definition: hybrid.c:1283
E void pmodule_cmd_unsqline(void(*func)(char *user))
Definition: ircd.c:853
E void pmodule_cmd_sgline(void(*func)(char *mask, char *reason))
Definition: ircd.c:1007
IRCDCAPAB myIrcdcap[]
Definition: hybrid.c:118
E int stricmp(const char *s1, const char *s2)
Definition: compat.c:58
E void pmodule_set_umode(void(*func)(User *user, int ac, char **av))
Definition: ircd.c:1077
E void pmodule_ircd_cap(IRCDCAPAB *cap)
Definition: ircd.c:1102
void hybrid_cmd_serv_notice(char *source, char *dest, char *msg)
Definition: hybrid.c:513
#define CMODE_l
Definition: bahamut.h:51
char * name
Definition: services.h:277
E void pmodule_cmd_nc_change(void(*func)(User *u))
Definition: ircd.c:1028
E void pmodule_cmd_372(void(*func)(char *source, char *msg))
Definition: ircd.c:736
void hybrid_cmd_akill(char *user, char *host, char *who, time_t when, time_t expires, char *reason)
Definition: hybrid.c:698
void hybrid_cmd_318(char *source, char *who)
Definition: hybrid.c:1080
E char * ServerDesc
Definition: extern.h:275
E void pmodule_cmd_bob(void(*func)())
Definition: ircd.c:976
E void pmodule_ircd_flood_mode_char_remove(char *mode)
Definition: ircd.c:1130
E void del_invite(Channel *chan, char *mask)
Definition: channels.c:1833
uint32 svid
Definition: services.h:888
E void pmodule_cmd_ctcp(void(*func)(char *source, char *dest, char *buf))
Definition: ircd.c:1043
char topic_setter[NICKMAX]
Definition: services.h:1004
E void pmodule_cmd_invite(void(*func)(char *source, char *chan, char *nick))
Definition: ircd.c:859
int anope_event_motd(char *source, int ac, char **av)
Definition: hybrid.c:918
#define CMODE_M
Definition: bahamut.h:55
char * host
Definition: services.h:878
void hybrid_cmd_pong(char *servname, char *who)
Definition: hybrid.c:1162
E void pmodule_ircd_var(IRCDVar *ircdvar)
Definition: ircd.c:1097
E void do_umode(const char *source, int ac, char **av)
Definition: users.c:816
#define UMODE_l
Definition: charybdis.h:24
int anope_event_notice(char *source, int ac, char **av)
Definition: hybrid.c:1361
MDE Message * createMessage(const char *name, int(*func)(char *source, int ac, char **av))
Definition: modules.c:1470
int hybrid_valid_nick(char *nick)
Definition: hybrid.c:1408
E void add_invite(Channel *chan, char *mask)
Definition: channels.c:1402
#define CUS_VOICE
Definition: services.h:1342
#define IRCD
Definition: modules.h:63
#define UMODE_g
Definition: bahamut.h:35
void hybrid_cmd_chg_nick(char *oldnick, char *newnick)
Definition: hybrid.c:1318
void hybrid_cmd_guest_nick(char *nick, char *user, char *host, char *real, char *modes)
Definition: hybrid.c:1264
int anope_event_kill(char *source, int ac, char **av)
Definition: hybrid.c:871
#define UMODE_i
Definition: bahamut.h:18
E void pmodule_cmd_svsnoop(void(*func)(char *server, int set))
Definition: ircd.c:696
void hybrid_cmd_311(char *buf)
Definition: hybrid.c:1031
E void pmodule_cmd_squit(void(*func)(char *servname, char *message))
Definition: ircd.c:944
#define CMODE_n
Definition: bahamut.h:46
int anope_event_ping(char *source, int ac, char **av)
Definition: hybrid.c:853
#define CMODE_R
Definition: bahamut.h:52
E char * strscpy(char *d, const char *s, size_t len)
Definition: db-merger.c:1886
E void pmodule_cmd_unsgline(void(*func)(char *mask))
Definition: ircd.c:991
#define UMODE_s
Definition: bahamut.h:29
MDE void moduleAddAuthor(const char *author)
Definition: modules.c:1772
void hybrid_cmd_svid_umode3(User *u, char *ts)
Definition: hybrid.c:1309
E void EnforceQlinedNick(char *nick, char *killer)
Definition: misc.c:837
#define CMODE_t
Definition: bahamut.h:49
E void notice_lang(char *source, User *dest, int message,...)
Definition: send.c:169
E char * cs_get_key(ChannelInfo *ci)
Definition: chanserv.c:2447
char myCsmodes[128]
Definition: hybrid.c:280
MDE void moduleSetType(MODType type)
Definition: modules.c:818
void hybrid_cmd_unsgline(char *mask)
Definition: hybrid.c:665
E void pmodule_cmd_jupe(void(*func)(char *jserver, char *who, char *reason))
Definition: ircd.c:1072
char * botchanumode
Definition: services.h:299
E void update_host(User *user)
Definition: users.c:104
E void pmodule_cmd_243(void(*func)(char *buf))
Definition: ircd.c:919
E Channel * findchan(const char *chan)
Definition: channels.c:394
E void do_sjoin(const char *source, int ac, char **av)
Definition: channels.c:803
E void anope_set_umode(User *user, int ac, char **av)
Definition: ircd.c:130
E char * sstrdup(const char *s)
Definition: memory.c:105
void hybrid_cmd_join(char *user, char *channel, time_t chantime)
Definition: hybrid.c:742
E void do_join(const char *source, int ac, char **av)
Definition: channels.c:556
E void * scalloc(long elsize, long els)
Definition: memory.c:55
CBMode myCbmodes[128]
Definition: hybrid.c:351
void hybrid_cmd_svid_umode(char *nick, time_t ts)
Definition: hybrid.c:1290
void hybrid_cmd_mode(char *source, char *dest, char *buf)
Definition: hybrid.c:1115
void hybrid_cmd_sgline(char *mask, char *reason)
Definition: hybrid.c:657
void hybrid_cmd_global(char *source, char *buf)
Definition: hybrid.c:523
E int m_nickcoll(char *user)
Definition: messages.c:20
E void pmodule_cmd_375(void(*func)(char *source))
Definition: ircd.c:746
E void pmodule_key_mode(int mode)
Definition: ircd.c:1196
E void pmodule_cmd_svsnick(void(*func)(char *source, char *guest, time_t when))
Definition: ircd.c:960
unsigned long umodes[128]
Definition: hybrid.c:228
E char * s_OperServ
Definition: extern.h:289
E void pmodule_invis_umode(int mode)
Definition: ircd.c:1171
#define UMODE_f
Definition: bahamut.h:32
E void pmodule_cmd_svid_umode2(void(*func)(User *u, char *ts))
Definition: ircd.c:1033
E void pmodule_cmd_chg_nick(void(*func)(char *oldnick, char *newnick))
Definition: ircd.c:954
E char * ServiceHost
Definition: extern.h:277
#define UMODE_x
Definition: bahamut.h:23
#define UMODE_b
Definition: bahamut.h:36
E void record_topic(const char *chan)
Definition: chanserv.c:1645
E char * EncModule
Definition: extern.h:580
IRCDVar myIrcd[]
Definition: hybrid.c:19
E void pmodule_invite_cmode(int mode)
Definition: ircd.c:1181
int anope_event_quit(char *source, int ac, char **av)
Definition: hybrid.c:972
#define CMODE_r
Definition: bahamut.h:53
E void pmodule_cmd_eob(void(*func)())
Definition: ircd.c:1066
#define CMODE_O
Definition: bahamut.h:57
E void pmodule_cmd_svid_umode3(void(*func)(User *u, char *ts))
Definition: ircd.c:1038
E void pmodule_cmd_376(void(*func)(char *source))
Definition: ircd.c:751
int hybrid_valid_chan(char *chan)
Definition: hybrid.c:1418
int anope_event_capab(char *source, int ac, char **av)
Definition: hybrid.c:1206
E char * uplink
Definition: extern.h:35
E User * finduser(const char *nick)
Definition: users.c:323
E int m_kill(char *nick, char *msg)
Definition: messages.c:49
E void pmodule_cmd_part(void(*func)(char *nick, char *chan, char *buf))
Definition: ircd.c:864
void hybrid_cmd_372_error(char *source)
Definition: hybrid.c:986
E int m_away(char *source, char *msg)
Definition: messages.c:29
void hybrid_cmd_squit(char *servname, char *message)
Definition: hybrid.c:1177
MDE void moduleAddVersion(const char *version)
Definition: modules.c:1760
void hybrid_cmd_privmsg2(char *source, char *dest, char *msg)
Definition: hybrid.c:508
void hybrid_cmd_211(char *buf)
Definition: hybrid.c:1107
#define UMODE_a
Definition: bahamut.h:16
E void add_ban(Channel *chan, char *mask)
Definition: channels.c:1338
E void do_part(const char *source, int ac, char **av)
Definition: channels.c:710
#define CUS_HALFOP
Definition: services.h:1343
void hybrid_cmd_capab()
Definition: hybrid.c:792
E void del_ban(Channel *chan, char *mask)
Definition: channels.c:1779
int anope_event_eob(char *source, int ac, char **av)
Definition: hybrid.c:889
int hybrid_flood_mode_check(char *value)
Definition: hybrid.c:1376
E char * merge_args(int argc, char **argv)
Definition: misc.c:180
#define CAPAB_QS
Definition: services.h:1378
E void pmodule_ircd_cumodes(CUMode modes[128])
Definition: ircd.c:1117
E const char version_flags[]
Definition: extern.h:771
Command * c
Definition: ns_recover.c:17
int anope_event_pass(char *source, int ac, char **av)
Definition: hybrid.c:1340
int AnopeInit(int argc, char **argv)
Definition: hybrid.c:1572
u_int32_t uint32
Definition: db-merger.c:123
void hybrid_cmd_svsadmin(char *server, int set)
Definition: hybrid.c:715
E void alog(const char *fmt,...) FORMAT(printf
E int servernum
Definition: extern.h:615
#define UMODE_u
Definition: hybrid.h:27
void hybrid_cmd_317(char *buf)
Definition: hybrid.c:1049
void hybrid_cmd_quit(char *source, char *buf)
Definition: hybrid.c:1153
#define MOD_CONT
Definition: modules.h:54
E int m_motd(char *source)
Definition: messages.c:97
E void pmodule_cmd_svsmode(void(*func)(User *u, int ac, char **av))
Definition: ircd.c:731
E void do_quit(const char *source, int ac, char **av)
Definition: users.c:854
E void pmodule_cmd_bot_nick(void(*func)(char *nick, char *user, char *host, char *real, char *modes))
Definition: ircd.c:773
E void pmodule_private_cmode(int mode)
Definition: ircd.c:1191
E void display_news(User *u, int16 type)
Definition: news.c:269
int anope_event_svinfo(char *source, int ac, char **av)
Definition: hybrid.c:1334
void hybrid_cmd_notice(char *source, char *dest, char *buf)
Definition: hybrid.c:484
E Server * findserver(Server *s, const char *name)
Definition: servers.c:261
#define UMODE_z
Definition: charybdis.h:18
E void pmodule_cmd_svid_umode(void(*func)(char *nick, time_t ts))
Definition: ircd.c:1023
E int m_privmsg(char *source, char *receiver, char *msg)
Definition: messages.c:130
int anope_event_squit(char *source, int ac, char **av)
Definition: hybrid.c:963
E void pmodule_ircd_csmodes(char mode[128])
Definition: ircd.c:1151
int anope_event_error(char *source, int ac, char **av)
Definition: hybrid.c:1381
E void pmodule_cmd_242(void(*func)(char *buf))
Definition: ircd.c:914
#define NI_MSG
Definition: services.h:1292
E int debug
Definition: extern.h:775
#define EVENT_TOPIC_UPDATED
Definition: events.h:30
E void set_limit(Channel *chan, char *value)
Definition: channels.c:2011
E void finish_sync(Server *serv, int sync_links)
Definition: servers.c:531
void hybrid_cmd_server(char *servname, int hop, char *descript)
Definition: hybrid.c:804
void hybrid_cmd_swhois(char *source, char *who, char *mask)
Definition: hybrid.c:1356
E void pmodule_cmd_311(void(*func)(char *buf))
Definition: ircd.c:884
E void pmodule_cmd_join(void(*func)(char *user, char *channel, time_t chantime))
Definition: ircd.c:848
E int NSDefFlags
Definition: extern.h:377
int anope_event_sjoin(char *source, int ac, char **av)
Definition: hybrid.c:537
void hybrid_cmd_notice2(char *source, char *dest, char *msg)
Definition: hybrid.c:495
E void del_exception(Channel *chan, char *mask)
Definition: channels.c:1808
E void pmodule_cmd_318(void(*func)(char *source, char *who))
Definition: ircd.c:909
E char * s_HostServ
Definition: extern.h:303
E void pmodule_cmd_250(void(*func)(char *buf))
Definition: ircd.c:874
void hybrid_cmd_nick(char *nick, char *name, char *mode)
Definition: hybrid.c:1123
void hybrid_cmd_connect(int servernum)
Definition: hybrid.c:809
char * topic
Definition: services.h:1003
int anope_event_kick(char *source, int ac, char **av)
Definition: hybrid.c:880
E void pmodule_ircd_version(char *version)
Definition: ircd.c:1107
E const char version_number[]
Definition: extern.h:767
int anope_event_privmsg(char *source, int ac, char **av)
Definition: hybrid.c:927
void hybrid_cmd_szline(char *mask, char *reason, char *whom)
Definition: hybrid.c:673
int anope_event_436(char *source, int ac, char **av)
Definition: hybrid.c:631
#define CMODE_m
Definition: bahamut.h:45
E void pmodule_cmd_unszline(void(*func)(char *mask))
Definition: ircd.c:996
E int check_topiclock(Channel *c, time_t topic_time)
Definition: chanserv.c:1721
E void cs_set_key(ChannelInfo *ci, char *value)
Definition: chanserv.c:2538
E void anope_cmd_mode(char *source, char *dest, const char *fmt,...)
Definition: ircd.c:211
void hybrid_cmd_svskill(char *source, char *user, char *buf)
Definition: hybrid.c:748
int anope_event_part(char *source, int ac, char **av)
Definition: hybrid.c:936
E void pmodule_cmd_401(void(*func)(char *source, char *who))
Definition: ircd.c:904
E Server * serv_uplink
Definition: extern.h:1053
E int WallOper
Definition: extern.h:448
E void pmodule_cmd_svso(void(*func)(char *source, char *nick, char *flag))
Definition: ircd.c:949
E void pmodule_cmd_serv_privmsg(void(*func)(char *source, char *dest, char *msg))
Definition: ircd.c:821
E void pmodule_cmd_317(void(*func)(char *buf))
Definition: ircd.c:894
int anope_event_mode(char *source, int ac, char **av)
Definition: hybrid.c:1185
E void do_cmode(const char *source, int ac, char **av)
Definition: channels.c:1183
E void pmodule_secret_cmode(int mode)
Definition: ircd.c:1186
E void pmodule_cmd_391(void(*func)(char *source, char *timestr))
Definition: ircd.c:869
E void pmodule_cmd_remove_akill(void(*func)(char *user, char *host))
Definition: ircd.c:701
void hybrid_cmd_jupe(char *jserver, char *who, char *reason)
Definition: hybrid.c:1390
E void pmodule_ircd_cbmodes(CBMode modes[128])
Definition: ircd.c:1135
#define SERVER_JUPED
Definition: services.h:866
time_t topic_time
Definition: services.h:1005
CMMode myCmmodes[128]
Definition: hybrid.c:301
void hybrid_cmd_401(char *source, char *who)
Definition: hybrid.c:1071
E void pmodule_cmd_szline(void(*func)(char *mask, char *reason, char *whom))
Definition: ircd.c:1002
E char * myStrGetToken(const char *str, const char dilim, int token_number)
Definition: misc.c:654
#define UMODE_r
Definition: bahamut.h:20
void hybrid_cmd_unsqline(char *user)
Definition: hybrid.c:649
void hybrid_cmd_part(char *nick, char *chan, char *buf)
Definition: hybrid.c:845
E void pmodule_cmd_notice_ops(void(*func)(char *source, char *dest, char *buf))
Definition: ircd.c:787
E void pmodule_cmd_release_svshold(void(*func)(char *nick))
Definition: ircd.c:986
void hybrid_cmd_219(char *source, char *letter)
Definition: hybrid.c:1058
E void add_exception(Channel *chan, char *mask)
Definition: channels.c:1377
#define CAPAB_TS5
Definition: services.h:1374
void hybrid_cmd_vhost_off(User *user)
Definition: hybrid.c:726
#define CBM_NO_USER_MLOCK
Definition: services.h:930
#define CMODE_k
Definition: bahamut.h:50
E void * srealloc(void *oldptr, long newsize)
Definition: memory.c:80
E void pmodule_cmd_unban(void(*func)(char *name, char *nick))
Definition: ircd.c:1012
E void pmodule_cmd_notice(void(*func)(char *source, char *dest, char *buf))
Definition: ircd.c:792
E Server * servlist
Definition: extern.h:1051
void hybrid_cmd_243(char *buf)
Definition: hybrid.c:1098
int anope_event_admin(char *source, int ac, char **av)
Definition: hybrid.c:1366
#define DEFAULT_MLOCK
Definition: bahamut.h:59
E void pmodule_cmd_akill(void(*func)(char *user, char *host, char *who, time_t when, time_t expires, char *reason))
Definition: ircd.c:718
E void capab_parse(int ac, char **av)
Definition: servers.c:451
E int check_valid_op(User *user, Channel *chan, int servermode)
Definition: chanserv.c:1290
void hybrid_cmd_bob()
Definition: hybrid.c:826
E char * cs_get_limit(ChannelInfo *ci)
Definition: chanserv.c:2458
#define UMODE_n
Definition: bahamut.h:37
uint32 mode
Definition: services.h:889
E void pmodule_cmd_guest_nick(void(*func)(char *nick, char *user, char *host, char *real, char *modes))
Definition: ircd.c:761
void hybrid_cmd_nc_change(User *u)
Definition: hybrid.c:1298
E void common_svsmode(User *u, char *modes, char *arg)
Definition: actions.c:228
E char * ServerName
Definition: extern.h:274
#define CMODE_c
Definition: bahamut.h:54
void hybrid_cmd_svsmode(User *u, int ac, char **av)
Definition: hybrid.c:756
E void pmodule_valid_chan(int(*func)(char *chan))
Definition: ircd.c:1087
E void pmodule_cmd_privmsg(void(*func)(char *source, char *dest, char *buf))
Definition: ircd.c:804
void hybrid_cmd_release_svshold(char *nick)
Definition: hybrid.c:1248
E void pmodule_cmd_svshold(void(*func)(char *nick))
Definition: ircd.c:981
#define SERVER_ISME
Definition: services.h:865
void hybrid_cmd_serv_privmsg(char *source, char *dest, char *msg)
Definition: hybrid.c:518
void hybrid_cmd_391(char *source, char *timestr)
Definition: hybrid.c:1004
void hybrid_cmd_bot_chan_mode(char *nick, char *chan)
Definition: hybrid.c:1147
int anope_event_nick(char *source, int ac, char **av)
Definition: hybrid.c:560
E void pmodule_cmd_serv_notice(void(*func)(char *source, char *dest, char *msg))
Definition: ircd.c:816
E char * get_key(Channel *chan)
Definition: channels.c:1874
E int m_whois(char *source, char *who)
Definition: messages.c:366
E char * RemotePassword2
Definition: extern.h:267
E void pmodule_cmd_topic(void(*func)(char *whosets, char *chan, char *whosetit, char *topic, time_t when))
Definition: ircd.c:706
E void pmodule_cmd_quit(void(*func)(char *source, char *buf))
Definition: ircd.c:837
E char * ServiceUser
Definition: extern.h:276
E Server * me_server
Definition: extern.h:1052
int hybrid_event_notice(char *source, int argc, char **argv)
Definition: hybrid.c:1438
void hybrid_set_umode(User *user, int ac, char **av)
Definition: hybrid.c:153
time_t timestamp
Definition: services.h:886
E void pmodule_ircd_useTSMode(int use)
Definition: ircd.c:1164
void hybrid_cmd_bot_nick(char *nick, char *user, char *host, char *real, char *modes)
Definition: hybrid.c:836
E void pmodule_oper_umode(int mode)
Definition: ircd.c:1176
E Server * new_server(Server *uplink, const char *name, const char *desc, uint16 flags, char *suid)
Definition: servers.c:119
E void pmodule_flood_mode_check(int(*func)(char *value))
Definition: ircd.c:1092
#define NEWS_OPER
Definition: services.h:1050
E void pmodule_ircd_cbmodeinfos(CBModeInfo *modeinfos)
Definition: ircd.c:1112
void hybrid_cmd_svspart(char *source, char *nick, char *chan)
Definition: hybrid.c:1351
E void pmodule_cmd_sqline(void(*func)(char *mask, char *reason))
Definition: ircd.c:939
E void pmodule_cmd_privmsg2(void(*func)(char *source, char *dest, char *msg))
Definition: ircd.c:810
E User * do_nick(const char *source, char *nick, char *username, char *host, char *server, char *realname, time_t ts, uint32 svid, uint32 ip, char *vhost, char *uid)
Definition: users.c:500
E void pmodule_cmd_connect(void(*func)(int servernum))
Definition: ircd.c:971
E void pmodule_cmd_global_legacy(void(*func)(char *source, char *fmt))
Definition: ircd.c:934
void hybrid_cmd_kick(char *source, char *chan, char *user, char *buf)
Definition: hybrid.c:1131
void moduleAddIRCDMsgs(void)
Definition: hybrid.c:1444
int anope_event_tburst(char *source, int ac, char **av)
Definition: hybrid.c:618
E void pmodule_cmd_mode(void(*func)(char *source, char *dest, char *buf))
Definition: ircd.c:768
E void pmodule_limit_mode(int mode)
Definition: ircd.c:1201
void hybrid_cmd_svshold(char *nick)
Definition: hybrid.c:1242
#define CMODE_i
Definition: bahamut.h:44
#define CMODE_S
Definition: hybrid.h:46
E void pmodule_cmd_svskill(void(*func)(char *source, char *user, char *buf))
Definition: ircd.c:726
E void pmodule_cmd_svsmode_chan(void(*func)(char *name, char *mode, char *nick))
Definition: ircd.c:1018
void hybrid_cmd_invite(char *source, char *chan, char *nick)
Definition: hybrid.c:1168
E void pmodule_ircd_flood_mode_char_set(char *mode)
Definition: ircd.c:1125
int anope_event_away(char *source, int ac, char **av)
Definition: hybrid.c:862
void hybrid_cmd_ctcp(char *source, char *dest, char *buf)
Definition: hybrid.c:1425
void hybrid_cmd_topic(char *whosets, char *chan, char *whosetit, char *topic, time_t when)
Definition: hybrid.c:720
E void pmodule_cmd_312(void(*func)(char *buf))
Definition: ircd.c:889
E const char version_build[]
Definition: extern.h:769
void hybrid_cmd_svid_umode2(User *u, char *ts)
Definition: hybrid.c:1304
void hybrid_cmd_svsjoin(char *source, char *nick, char *chan, char *param)
Definition: hybrid.c:1346
#define CMODE_s
Definition: bahamut.h:48
#define CUS_OP
Definition: services.h:1341
E char * normalizeBuffer(char *)
Definition: botserv.c:1101
void hybrid_cmd_svinfo()
Definition: hybrid.c:771
void hybrid_cmd_242(char *buf)
Definition: hybrid.c:1089
void hybrid_cmd_eob()
Definition: hybrid.c:904
E void anope_cmd_global(char *source, const char *fmt,...)
Definition: ircd.c:506
E void pmodule_cmd_global(void(*func)(char *source, char *buf))
Definition: ircd.c:929
#define UMODE_d
Definition: bahamut.h:34
CBModeInfo myCbmodeinfos[]
Definition: hybrid.c:417
#define CUF_PROTECT_BOTSERV
Definition: services.h:956
void hybrid_cmd_unban(char *name, char *nick)
Definition: hybrid.c:1276
CUMode myCumodes[128]
Definition: hybrid.c:435
void hybrid_cmd_375(char *source)
Definition: hybrid.c:992
void hybrid_cmd_svsinfo()
Definition: hybrid.c:831
#define UMODE_o
Definition: bahamut.h:19
E void pmodule_cmd_219(void(*func)(char *source, char *letter))
Definition: ircd.c:899
#define CAPAB_KNOCK
Definition: services.h:1382
void moduleAddAnopeCmds()
Definition: hybrid.c:1490