summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/protocol/bahamut.c653
1 files changed, 348 insertions, 305 deletions
diff --git a/src/protocol/bahamut.c b/src/protocol/bahamut.c
index c82103cc8..3ff2e7b89 100644
--- a/src/protocol/bahamut.c
+++ b/src/protocol/bahamut.c
@@ -15,7 +15,52 @@
#include "services.h"
#include "pseudo.h"
-#include "bahamut.h"
+
+#define UMODE_a 0x00000001 /* umode +a - Services Admin */
+#define UMODE_h 0x00000002 /* umode +h - Helper */
+#define UMODE_i 0x00000004 /* umode +i - Invisible */
+#define UMODE_o 0x00000008 /* umode +o - Oper */
+#define UMODE_r 0x00000010 /* umode +r - registered nick */
+#define UMODE_w 0x00000020 /* umode +w - Get wallops */
+#define UMODE_A 0x00000040 /* umode +A - Server Admin */
+#define UMODE_x 0x00000080 /* umode +x - Squelch with notice */
+#define UMODE_X 0x00000100 /* umode +X - Squelch without notice */
+#define UMODE_F 0x00000200 /* umode +F - no cptr->since message rate throttle */
+#define UMODE_j 0x00000400 /* umode +j - client rejection notices */
+#define UMODE_K 0x00000800 /* umode +K - U: lined server kill messages */
+#define UMODE_O 0x00001000 /* umode +O - Local Oper */
+#define UMODE_s 0x00002000 /* umode +s - Server notices */
+#define UMODE_c 0x00004000 /* umode +c - Client connections/exits */
+#define UMODE_k 0x00008000 /* umode +k - Server kill messages */
+#define UMODE_f 0x00010000 /* umode +f - Server flood messages */
+#define UMODE_y 0x00020000 /* umode +y - Stats/links */
+#define UMODE_d 0x00040000 /* umode +d - Debug info */
+#define UMODE_g 0x00080000 /* umode +g - Globops */
+#define UMODE_b 0x00100000 /* umode +b - Chatops */
+#define UMODE_n 0x00200000 /* umode +n - Routing Notices */
+#define UMODE_m 0x00400000 /* umode +m - spambot notices */
+#define UMODE_e 0x00800000 /* umode +e - oper notices for the above +D */
+#define UMODE_D 0x01000000 /* umode +D - Hidden dccallow umode */
+#define UMODE_I 0x02000000 /* umode +I - invisible oper (masked) */
+#define UMODE_R 0x80000000 /* unmode +R - No non registered msgs */
+
+#define CMODE_i 0x00000001
+#define CMODE_m 0x00000002
+#define CMODE_n 0x00000004
+#define CMODE_p 0x00000008
+#define CMODE_s 0x00000010
+#define CMODE_t 0x00000020
+#define CMODE_k 0x00000040 /* These two used only by ChanServ */
+#define CMODE_l 0x00000080
+#define CMODE_R 0x00000100 /* Only identified users can join */
+#define CMODE_r 0x00000200 /* Set for all registered channels */
+#define CMODE_c 0x00000400 /* Colors can't be used */
+#define CMODE_M 0x00000800 /* Non-regged nicks can't send messages */
+#define CMODE_j 0x00001000 /* join throttle */
+#define CMODE_O 0x00008000 /* Only opers can join */
+
+#define DEFAULT_MLOCK CMODE_n | CMODE_t | CMODE_r
+
IRCDVar myIrcd[] = {
{"BahamutIRCd 1.4.*/1.8.*", /* ircd name */
@@ -148,58 +193,6 @@ IRCDCAPAB myIrcdcap[] = {
};
-void BahamutIRCdProto::ProcessUsermodes(User *user, int ac, const char **av)
-{
- int add = 1; /* 1 if adding modes, 0 if deleting */
- const char *modes = av[0];
- --ac;
- if (debug) alog("debug: Changing mode for %s to %s", user->nick, modes);
- while (*modes) {
- /* This looks better, much better than "add ? (do_add) : (do_remove)".
- * At least this is readable without paying much attention :) -GD */
- if (add) user->mode |= umodes[static_cast<int>(*modes)];
- else user->mode &= ~umodes[static_cast<int>(*modes)];
- switch (*modes++) {
- case '+':
- add = 1;
- break;
- case '-':
- add = 0;
- break;
- case 'a':
- if (UnRestrictSAdmin) break;
- if (add && !is_services_admin(user)) {
- common_svsmode(user, "-a", NULL);
- user->mode &= ~UMODE_a;
- }
- break;
- case 'd':
- if (!ac) {
- alog("user: umode +d with no parameter (?) for user %s", user->nick);
- break;
- }
- --ac;
- ++av;
- user->svid = strtoul(*av, NULL, 0);
- break;
- case 'o':
- if (add) {
- ++opcnt;
- if (WallOper) ircdproto->SendGlobops(s_OperServ, "\2%s\2 is now an IRC operator.", user->nick);
- display_news(user, NEWS_OPER);
- }
- else --opcnt;
- break;
- case 'r':
- if (add && !nick_identified(user)) {
- common_svsmode(user, "-r", NULL);
- user->mode &= ~UMODE_r;
- }
- }
- }
-}
-
-
unsigned long umodes[128] = {
0, 0, 0, /* Unused */
0, 0, 0, /* Unused */
@@ -452,44 +445,323 @@ CUMode myCumodes[128] = {
-void BahamutIRCdProto::SendModeInternal(BotInfo *source, const char *dest, const char *buf)
+void bahamut_cmd_burst()
{
- if (!buf) return;
- if (ircdcap->tsmode && (uplink_capab & ircdcap->tsmode)) send_cmd(source->nick, "MODE %s 0 %s", dest, buf);
- else send_cmd(source->nick, "MODE %s %s", dest, buf);
+ send_cmd(NULL, "BURST");
}
-/* SVSHOLD - set */
-void BahamutIRCdProto::SendSVSHold(const char *nick)
+/*
+ * SVINFO
+ * parv[0] = sender prefix
+ * parv[1] = TS_CURRENT for the server
+ * parv[2] = TS_MIN for the server
+ * parv[3] = server is standalone or connected to non-TS only
+ * parv[4] = server's idea of UTC time
+ */
+void bahamut_cmd_svinfo()
{
- send_cmd(ServerName, "SVSHOLD %s %d :%s", nick, NSReleaseTimeout, "Being held for registered user");
+ send_cmd(NULL, "SVINFO 3 1 0 :%ld", (long int) time(NULL));
}
-/* SVSHOLD - release */
-void BahamutIRCdProto::SendSVSHoldDel(const char *nick)
+/* PASS */
+void bahamut_cmd_pass(const char *pass)
{
- send_cmd(ServerName, "SVSHOLD %s 0", nick);
+ send_cmd(NULL, "PASS %s :TS", pass);
}
-/* SVSMODE -b */
-void BahamutIRCdProto::SendBanDel(const char *name, const char *nick)
+/* CAPAB */
+void bahamut_cmd_capab()
{
- SendSVSModeChan(name, "-b", nick);
+ send_cmd(NULL,
+ "CAPAB SSJOIN NOQUIT BURST UNCONNECT NICKIP TSMODE TS3");
}
-
-/* SVSMODE channel modes */
-
-void BahamutIRCdProto::SendSVSModeChan(const char *name, const char *mode, const char *nick)
+/* this avoids "undefined symbol" messages of those whom try to load mods that
+ call on this function */
+void bahamut_cmd_chghost(const char *nick, const char *vhost)
{
- if (nick) send_cmd(ServerName, "SVSMODE %s %s %s", name, mode, nick);
- else send_cmd(ServerName, "SVSMODE %s %s", name, mode);
+ if (debug) {
+ alog("debug: This IRCD does not support vhosting");
+ }
}
-void BahamutIRCdProto::SendBotOp(const char *nick, const char *chan)
+
+
+class BahamutIRCdProto : public IRCDProto
{
- SendMode(findbot(nick), chan, "%s %s", ircd->botchanumode, nick);
-}
+ void ProcessUsermodes(User *user, int ac, const char **av)
+ {
+ int add = 1; /* 1 if adding modes, 0 if deleting */
+ const char *modes = av[0];
+ --ac;
+ if (debug) alog("debug: Changing mode for %s to %s", user->nick, modes);
+ while (*modes) {
+ /* This looks better, much better than "add ? (do_add) : (do_remove)".
+ * At least this is readable without paying much attention :) -GD */
+ if (add) user->mode |= umodes[static_cast<int>(*modes)];
+ else user->mode &= ~umodes[static_cast<int>(*modes)];
+ switch (*modes++) {
+ case '+':
+ add = 1;
+ break;
+ case '-':
+ add = 0;
+ break;
+ case 'a':
+ if (UnRestrictSAdmin) break;
+ if (add && !is_services_admin(user)) {
+ common_svsmode(user, "-a", NULL);
+ user->mode &= ~UMODE_a;
+ }
+ break;
+ case 'd':
+ if (!ac) {
+ alog("user: umode +d with no parameter (?) for user %s", user->nick);
+ break;
+ }
+ --ac;
+ ++av;
+ user->svid = strtoul(*av, NULL, 0);
+ break;
+ case 'o':
+ if (add) {
+ ++opcnt;
+ if (WallOper) ircdproto->SendGlobops(s_OperServ, "\2%s\2 is now an IRC operator.", user->nick);
+ display_news(user, NEWS_OPER);
+ }
+ else --opcnt;
+ break;
+ case 'r':
+ if (add && !nick_identified(user)) {
+ common_svsmode(user, "-r", NULL);
+ user->mode &= ~UMODE_r;
+ }
+ }
+ }
+ }
+
+ void SendModeInternal(BotInfo *source, const char *dest, const char *buf)
+ {
+ if (!buf) return;
+ if (ircdcap->tsmode && (uplink_capab & ircdcap->tsmode)) send_cmd(source->nick, "MODE %s 0 %s", dest, buf);
+ else send_cmd(source->nick, "MODE %s %s", dest, buf);
+ }
+
+ /* SVSHOLD - set */
+ void SendSVSHold(const char *nick)
+ {
+ send_cmd(ServerName, "SVSHOLD %s %d :%s", nick, NSReleaseTimeout, "Being held for registered user");
+ }
+
+ /* SVSHOLD - release */
+ void SendSVSHoldDel(const char *nick)
+ {
+ send_cmd(ServerName, "SVSHOLD %s 0", nick);
+ }
+
+ /* SVSMODE -b */
+ void SendBanDel(const char *name, const char *nick)
+ {
+ SendSVSModeChan(name, "-b", nick);
+ }
+
+ /* SVSMODE channel modes */
+ void SendSVSModeChan(const char *name, const char *mode, const char *nick)
+ {
+ if (nick) send_cmd(ServerName, "SVSMODE %s %s %s", name, mode, nick);
+ else send_cmd(ServerName, "SVSMODE %s %s", name, mode);
+ }
+
+ void SendBotOp(const char *nick, const char *chan)
+ {
+ SendMode(findbot(nick), chan, "%s %s", ircd->botchanumode, nick);
+ }
+
+ /* SQLINE */
+ void SendSQLine(const char *mask, const char *reason)
+ {
+ if (!mask || !reason) return;
+ send_cmd(NULL, "SQLINE %s :%s", mask, reason);
+ }
+
+ /* UNSGLINE */
+ void SendSGLineDel(const char *mask)
+ {
+ send_cmd(NULL, "UNSGLINE 0 :%s", mask);
+ }
+
+ /* UNSZLINE */
+ void SendSZLineDel(const char *mask)
+ {
+ /* this will likely fail so its only here for legacy */
+ send_cmd(NULL, "UNSZLINE 0 %s", mask);
+ /* this is how we are supposed to deal with it */
+ send_cmd(NULL, "RAKILL %s *", mask);
+ }
+
+ /* SZLINE */
+ void SendSZLine(const char *mask, const char *reason, const char *whom)
+ {
+ /* this will likely fail so its only here for legacy */
+ send_cmd(NULL, "SZLINE %s :%s", mask, reason);
+ /* this is how we are supposed to deal with it */
+ send_cmd(NULL, "AKILL %s * %d %s %ld :%s", mask, 172800, whom, static_cast<long>(time(NULL)), reason);
+ }
+
+ /* SVSNOOP */
+ void SendSVSNOOP(const char *server, int set)
+ {
+ send_cmd(NULL, "SVSNOOP %s %s", server, set ? "+" : "-");
+ }
+
+ /* SGLINE */
+ void SendSGLine(const char *mask, const char *reason)
+ {
+ send_cmd(NULL, "SGLINE %d :%s:%s", static_cast<int>(strlen(mask)), mask, reason);
+ }
+
+ /* RAKILL */
+ void SendAkillDel(const char *user, const char *host)
+ {
+ send_cmd(NULL, "RAKILL %s %s", host, user);
+ }
+
+ /* TOPIC */
+ void SendTopic(BotInfo *whosets, const char *chan, const char *whosetit, const char *topic, time_t when)
+ {
+ send_cmd(whosets->nick, "TOPIC %s %s %lu :%s", chan, whosetit, static_cast<unsigned long>(when), topic);
+ }
+
+ /* UNSQLINE */
+ void SendSQLineDel(const char *user)
+ {
+ send_cmd(NULL, "UNSQLINE %s", user);
+ }
+
+ /* JOIN - SJOIN */
+ void SendJoin(BotInfo *user, const char *channel, time_t chantime)
+ {
+ send_cmd(user->nick, "SJOIN %ld %s", static_cast<long>(chantime), channel);
+ }
+
+ /* AKILL
+ * parv[1]=host
+ * parv[2]=user
+ * parv[3]=length
+ * parv[4]=akiller
+ * parv[5]=time set
+ * parv[6]=reason
+ */
+ void SendAkill(const char *user, const char *host, const char *who, time_t when, time_t expires, const char *reason)
+ {
+ // Calculate the time left before this would expire, capping it at 2 days
+ time_t timeleft = expires - time(NULL);
+ if (timeleft > 172800) timeleft = 172800;
+ send_cmd(NULL, "AKILL %s %s %d %s %ld :%s", host, user, timeleft, who, static_cast<long>(time(NULL)), reason);
+ }
+
+ /* SVSKILL */
+ /* parv[0] = servername
+ * parv[1] = client
+ * parv[2] = nick stamp
+ * parv[3] = kill message
+ */
+ /*
+ Note: if the stamp is null 0, the below usage is correct of Bahamut
+ */
+ void SendSVSKillInternal(const char *source, const char *user, const char *buf)
+ {
+ if (!source || !user || !buf) return;
+ send_cmd(source, "SVSKILL %s :%s", user, buf);
+ }
+
+ /* SVSMODE */
+ /* parv[0] - sender
+ * parv[1] - nick
+ * parv[2] - TS (or mode, depending on svs version)
+ * parv[3] - mode (or services id if old svs version)
+ * parv[4] - optional arguement (services id)
+ */
+ void SendSVSMode(User *u, int ac, const char **av)
+ {
+ send_cmd(ServerName, "SVSMODE %s %ld %s", u->nick, static_cast<long>(u->timestamp), merge_args(ac, av));
+ }
+
+ void SendEOB()
+ {
+ send_cmd(NULL, "BURST 0");
+ }
+
+ void SendNoticeChanopsInternal(BotInfo *source, const char *dest, const char *buf)
+ {
+ if (!buf) return;
+ send_cmd(NULL, "NOTICE @%s :%s", dest, buf);
+ }
+
+ void SendKickInternal(BotInfo *source, const char *chan, const char *user, const char *buf)
+ {
+ if (buf) send_cmd(source->nick, "KICK %s %s :%s", chan, user, buf);
+ else send_cmd(source->nick, "KICK %s %s", chan, user);
+ }
+
+ void SendClientIntroduction(const char *nick, const char *user, const char *host, const char *real, const char *modes)
+ {
+ EnforceQlinedNick(nick, s_BotServ);
+ send_cmd(NULL, "NICK %s 1 %ld %s %s %s %s 0 0 :%s", nick, static_cast<long>(time(NULL)), modes, user, host, ServerName, real);
+ SendSQLine(nick, "Reserved for services");
+ }
+
+ void SendGuestNick(const char *nick, const char *user, const char *host, const char *real, const char *modes)
+ {
+ send_cmd(NULL, "NICK %s 1 %ld %s %s %s %s 0 0 :%s", nick, static_cast<long>(time(NULL)), modes, user, host, ServerName, real);
+ }
+
+ /* SVSMODE +d */
+ /* sent if svid is something weird */
+ void SendSVID(const char *nick, time_t ts)
+ {
+ send_cmd(ServerName, "SVSMODE %s %lu +d 1", nick, static_cast<unsigned long>(ts));
+ }
+
+ /* SVSMODE +d */
+ /* nc_change was = 1, and there is no na->status */
+ void SendUnregisteredNick(User *u)
+ {
+ common_svsmode(u, "+d", "1");
+ }
+
+ void SendSVID3(User *u, const char *ts)
+ {
+ if (u->svid != u->timestamp) common_svsmode(u, "+rd", ts);
+ else common_svsmode(u, "+r", NULL);
+ }
+
+ int IsFloodModeParamValid(const char *value)
+ {
+ char *dp, *end;
+ if (value && *value != ':' && strtoul((*value == '*' ? value + 1 : value), &dp, 10) > 0 && *dp == ':' && *(++dp) && strtoul(dp, &end, 10) > 0 && !*end) return 1;
+ else return 0;
+ }
+
+ /* SERVER */
+ void SendServer(const char *servname, int hop, const char *descript)
+ {
+ send_cmd(NULL, "SERVER %s %d :%s", servname, hop, descript);
+ }
+
+ void SendConnect()
+ {
+ me_server = new_server(NULL, ServerName, ServerDesc, SERVER_ISME, NULL);
+ if (servernum == 1) bahamut_cmd_pass(RemotePassword);
+ else if (servernum == 2) bahamut_cmd_pass(RemotePassword2);
+ else if (servernum == 3) bahamut_cmd_pass(RemotePassword3);
+ bahamut_cmd_capab();
+ SendServer(ServerName, 1, ServerDesc);
+ bahamut_cmd_svinfo();
+ bahamut_cmd_burst();
+ }
+} ircd_proto;
+
/* EVENT: SJOIN */
int anope_event_sjoin(const char *source, int ac, const char **av)
@@ -595,170 +867,6 @@ int anope_event_436(const char *source, int ac, const char **av)
return MOD_CONT;
}
-
-/* SQLINE */
-void BahamutIRCdProto::SendSQLine(const char *mask, const char *reason)
-{
- if (!mask || !reason) return;
- send_cmd(NULL, "SQLINE %s :%s", mask, reason);
-}
-
-/* UNSGLINE */
-void BahamutIRCdProto::SendSGLineDel(const char *mask)
-{
- send_cmd(NULL, "UNSGLINE 0 :%s", mask);
-}
-
-/* UNSZLINE */
-void BahamutIRCdProto::SendSZLineDel(const char *mask)
-{
- /* this will likely fail so its only here for legacy */
- send_cmd(NULL, "UNSZLINE 0 %s", mask);
- /* this is how we are supposed to deal with it */
- send_cmd(NULL, "RAKILL %s *", mask);
-}
-
-/* SZLINE */
-void BahamutIRCdProto::SendSZLine(const char *mask, const char *reason, const char *whom)
-{
- /* this will likely fail so its only here for legacy */
- send_cmd(NULL, "SZLINE %s :%s", mask, reason);
- /* this is how we are supposed to deal with it */
- send_cmd(NULL, "AKILL %s * %d %s %ld :%s", mask, 172800, whom, static_cast<long>(time(NULL)), reason);
-}
-
-/* SVSNOOP */
-void BahamutIRCdProto::SendSVSNOOP(const char *server, int set)
-{
- send_cmd(NULL, "SVSNOOP %s %s", server, set ? "+" : "-");
-}
-
-/* SGLINE */
-void BahamutIRCdProto::SendSGLine(const char *mask, const char *reason)
-{
- send_cmd(NULL, "SGLINE %d :%s:%s", static_cast<int>(strlen(mask)), mask, reason);
-}
-
-/* RAKILL */
-void BahamutIRCdProto::SendAkillDel(const char *user, const char *host)
-{
- send_cmd(NULL, "RAKILL %s %s", host, user);
-}
-
-/* TOPIC */
-void BahamutIRCdProto::SendTopic(BotInfo *whosets, const char *chan, const char *whosetit, const char *topic, time_t when)
-{
- send_cmd(whosets->nick, "TOPIC %s %s %lu :%s", chan, whosetit, static_cast<unsigned long>(when), topic);
-}
-
-/* UNSQLINE */
-void BahamutIRCdProto::SendSQLineDel(const char *user)
-{
- send_cmd(NULL, "UNSQLINE %s", user);
-}
-
-/* JOIN - SJOIN */
-void BahamutIRCdProto::SendJoin(BotInfo *user, const char *channel, time_t chantime)
-{
- send_cmd(user->nick, "SJOIN %ld %s", static_cast<long>(chantime), channel);
-}
-
-void bahamut_cmd_burst()
-{
- send_cmd(NULL, "BURST");
-}
-
-/* AKILL */
-/* parv[1]=host
- * parv[2]=user
- * parv[3]=length
- * parv[4]=akiller
- * parv[5]=time set
- * parv[6]=reason
- */
-void BahamutIRCdProto::SendAkill(const char *user, const char *host, const char *who, time_t when, time_t expires, const char *reason)
-{
- // Calculate the time left before this would expire, capping it at 2 days
- time_t timeleft = expires - time(NULL);
- if (timeleft > 172800) timeleft = 172800;
- send_cmd(NULL, "AKILL %s %s %d %s %ld :%s", host, user, timeleft, who, static_cast<long>(time(NULL)), reason);
-}
-
-/* SVSKILL */
-/* parv[0] = servername
- * parv[1] = client
- * parv[2] = nick stamp
- * parv[3] = kill message
- */
-/*
- Note: if the stamp is null 0, the below usage is correct of Bahamut
-*/
-void BahamutIRCdProto::SendSVSKillInternal(const char *source, const char *user, const char *buf)
-{
- if (!source || !user || !buf) return;
- send_cmd(source, "SVSKILL %s :%s", user, buf);
-}
-
-/* SVSMODE */
-/* parv[0] - sender
- * parv[1] - nick
- * parv[2] - TS (or mode, depending on svs version)
- * parv[3] - mode (or services id if old svs version)
- * parv[4] - optional arguement (services id)
- */
-void BahamutIRCdProto::SendSVSMode(User *u, int ac, const char **av)
-{
- send_cmd(ServerName, "SVSMODE %s %ld %s", u->nick, static_cast<long>(u->timestamp), merge_args(ac, av));
-}
-
-/*
- * SVINFO
- * parv[0] = sender prefix
- * parv[1] = TS_CURRENT for the server
- * parv[2] = TS_MIN for the server
- * parv[3] = server is standalone or connected to non-TS only
- * parv[4] = server's idea of UTC time
- */
-void bahamut_cmd_svinfo()
-{
- send_cmd(NULL, "SVINFO 3 1 0 :%ld", (long int) time(NULL));
-}
-
-/* PASS */
-void bahamut_cmd_pass(const char *pass)
-{
- send_cmd(NULL, "PASS %s :TS", pass);
-}
-
-/* SERVER */
-void BahamutIRCdProto::SendServer(const char *servname, int hop, const char *descript)
-{
- send_cmd(NULL, "SERVER %s %d :%s", servname, hop, descript);
-}
-
-/* CAPAB */
-void bahamut_cmd_capab()
-{
- send_cmd(NULL,
- "CAPAB SSJOIN NOQUIT BURST UNCONNECT NICKIP TSMODE TS3");
-}
-
-void BahamutIRCdProto::SendConnect()
-{
- me_server = new_server(NULL, ServerName, ServerDesc, SERVER_ISME, NULL);
- if (servernum == 1) bahamut_cmd_pass(RemotePassword);
- else if (servernum == 2) bahamut_cmd_pass(RemotePassword2);
- else if (servernum == 3) bahamut_cmd_pass(RemotePassword3);
- bahamut_cmd_capab();
- SendServer(ServerName, 1, ServerDesc);
- bahamut_cmd_svinfo();
- bahamut_cmd_burst();
-}
-
-
-
-
-
/* EVENT : SERVER */
int anope_event_server(const char *source, int ac, const char **av)
{
@@ -872,18 +980,6 @@ int anope_event_motd(const char *source, int ac, const char **av)
return MOD_CONT;
}
-void BahamutIRCdProto::SendNoticeChanopsInternal(BotInfo *source, const char *dest, const char *buf)
-{
- if (!buf) return;
- send_cmd(NULL, "NOTICE @%s :%s", dest, buf);
-}
-
-void BahamutIRCdProto::SendKickInternal(BotInfo *source, const char *chan, const char *user, const char *buf)
-{
- if (buf) send_cmd(source->nick, "KICK %s %s :%s", chan, user, buf);
- else send_cmd(source->nick, "KICK %s %s", chan, user);
-}
-
int anope_event_away(const char *source, int ac, const char **av)
{
if (!source) {
@@ -897,43 +993,10 @@ int anope_event_ping(const char *source, int ac, const char **av)
{
if (ac < 1)
return MOD_CONT;
- ircd_proto.SendPong(ac > 1 ? av[1] : ServerName, av[0]);
+ ircdproto->SendPong(ac > 1 ? av[1] : ServerName, av[0]);
return MOD_CONT;
}
-void BahamutIRCdProto::SendClientIntroduction(const char *nick, const char *user, const char *host, const char *real, const char *modes)
-{
- EnforceQlinedNick(nick, s_BotServ);
- send_cmd(NULL, "NICK %s 1 %ld %s %s %s %s 0 0 :%s", nick, static_cast<long>(time(NULL)), modes, user, host, ServerName, real);
- SendSQLine(nick, "Reserved for services");
-}
-
-void BahamutIRCdProto::SendGuestNick(const char *nick, const char *user, const char *host, const char *real, const char *modes)
-{
- send_cmd(NULL, "NICK %s 1 %ld %s %s %s %s 0 0 :%s", nick, static_cast<long>(time(NULL)), modes, user, host, ServerName, real);
-}
-
-/* SVSMODE +d */
-/* sent if svid is something weird */
-void BahamutIRCdProto::SendSVID(const char *nick, time_t ts)
-{
- send_cmd(ServerName, "SVSMODE %s %lu +d 1", nick, static_cast<unsigned long>(ts));
-}
-
-
-/* SVSMODE +d */
-/* nc_change was = 1, and there is no na->status */
-void BahamutIRCdProto::SendUnregisteredNick(User *u)
-{
- common_svsmode(u, "+d", "1");
-}
-
-void BahamutIRCdProto::SendSVID3(User *u, const char *ts)
-{
- if (u->svid != u->timestamp) common_svsmode(u, "+rd", ts);
- else common_svsmode(u, "+r", NULL);
-}
-
int anope_event_error(const char *source, int ac, const char **av)
{
if (ac >= 1) {
@@ -944,11 +1007,6 @@ int anope_event_error(const char *source, int ac, const char **av)
return MOD_CONT;
}
-void BahamutIRCdProto::SendEOB()
-{
- send_cmd(NULL, "BURST 0");
-}
-
int anope_event_burst(const char *source, int ac, const char **av)
{
Server *s;
@@ -967,21 +1025,6 @@ int anope_event_burst(const char *source, int ac, const char **av)
return MOD_CONT;
}
-int BahamutIRCdProto::IsFloodModeParamValid(const char *value)
-{
- char *dp, *end;
- if (value && *value != ':' && strtoul((*value == '*' ? value + 1 : value), &dp, 10) > 0 && *dp == ':' && *(++dp) && strtoul(dp, &end, 10) > 0 && !*end) return 1;
- else return 0;
-}
-
-/* this avoids "undefined symbol" messages of those whom try to load mods that
- call on this function */
-void bahamut_cmd_chghost(const char *nick, const char *vhost)
-{
- if (debug) {
- alog("debug: This IRCD does not support vhosting");
- }
-}
/* *INDENT-OFF* */
void moduleAddIRCDMsgs(void) {