summaryrefslogtreecommitdiff
path: root/src/protocol
diff options
context:
space:
mode:
Diffstat (limited to 'src/protocol')
-rw-r--r--src/protocol/bahamut.cpp149
-rw-r--r--src/protocol/inspircd11.cpp328
-rw-r--r--src/protocol/inspircd12.cpp299
-rw-r--r--src/protocol/inspircd20.cpp246
-rw-r--r--src/protocol/ratbox.cpp216
-rw-r--r--src/protocol/unreal32.cpp293
6 files changed, 718 insertions, 813 deletions
diff --git a/src/protocol/bahamut.cpp b/src/protocol/bahamut.cpp
index 685dd52cd..5b84deb73 100644
--- a/src/protocol/bahamut.cpp
+++ b/src/protocol/bahamut.cpp
@@ -17,41 +17,41 @@
#include "modules.h"
IRCDVar myIrcd[] = {
- {"Bahamut 1.8.x", /* ircd name */
- "+", /* Modes used by pseudoclients */
- 2, /* Chan Max Symbols */
- "+o", /* Channel Umode used by Botserv bots */
- 1, /* SVSNICK */
- 0, /* Vhost */
- 1, /* Supports SNlines */
- 1, /* Supports SQlines */
- 1, /* Supports SZlines */
- 3, /* Number of server args */
- 0, /* Join 2 Set */
- 0, /* Join 2 Message */
- 0, /* TS Topic Forward */
- 0, /* TS Topci Backward */
- 1, /* Chan SQlines */
- 1, /* Quit on Kill */
- 1, /* SVSMODE unban */
- 0, /* Reverse */
- 0, /* vidents */
- 1, /* svshold */
- 1, /* time stamp on mode */
- 1, /* NICKIP */
- 0, /* O:LINE */
- 1, /* UMODE */
- 0, /* VHOST ON NICK */
- 0, /* Change RealName */
- 1, /* No Knock requires +i */
- 0, /* We support TOKENS */
- 0, /* TIME STAMPS are BASE64 */
- 0, /* Can remove User Channel Modes with SVSMODE */
- 0, /* Sglines are not enforced until user reconnects */
- 0, /* ts6 */
- 0, /* p10 */
- 0, /* CIDR channelbans */
- "$", /* TLD Prefix for Global */
+ {"Bahamut 1.8.x", /* ircd name */
+ "+", /* Modes used by pseudoclients */
+ 2, /* Chan Max Symbols */
+ "+o", /* Channel Umode used by Botserv bots */
+ 1, /* SVSNICK */
+ 0, /* Vhost */
+ 1, /* Supports SNlines */
+ 1, /* Supports SQlines */
+ 1, /* Supports SZlines */
+ 3, /* Number of server args */
+ 0, /* Join 2 Set */
+ 0, /* Join 2 Message */
+ 0, /* TS Topic Forward */
+ 0, /* TS Topci Backward */
+ 1, /* Chan SQlines */
+ 1, /* Quit on Kill */
+ 1, /* SVSMODE unban */
+ 0, /* Reverse */
+ 0, /* vidents */
+ 1, /* svshold */
+ 1, /* time stamp on mode */
+ 1, /* NICKIP */
+ 0, /* O:LINE */
+ 1, /* UMODE */
+ 0, /* VHOST ON NICK */
+ 0, /* Change RealName */
+ 1, /* No Knock requires +i */
+ 0, /* We support TOKENS */
+ 0, /* TIME STAMPS are BASE64 */
+ 0, /* Can remove User Channel Modes with SVSMODE */
+ 0, /* Sglines are not enforced until user reconnects */
+ 0, /* ts6 */
+ 0, /* p10 */
+ 0, /* CIDR channelbans */
+ "$", /* TLD Prefix for Global */
6, /* Max number of modes we can send per line */
}
,
@@ -85,24 +85,22 @@ void bahamut_cmd_pass(const char *pass)
/* CAPAB */
void bahamut_cmd_capab()
{
- send_cmd(NULL,
- "CAPAB SSJOIN NOQUIT BURST UNCONNECT NICKIP TSMODE TS3");
+ send_cmd(NULL, "CAPAB SSJOIN NOQUIT BURST UNCONNECT NICKIP TSMODE TS3");
}
/* 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)
{
- Alog(LOG_DEBUG) << "This IRCD does not support vhosting";
+ Alog(LOG_DEBUG) << "This IRCD does not support vhosting";
}
-
-
class BahamutIRCdProto : public IRCDProto
{
void SendModeInternal(BotInfo *source, Channel *dest, const char *buf)
{
- if (!buf) return;
+ if (!buf)
+ return;
if (Capab.HasFlag(CAPAB_TSMODE))
send_cmd(source->nick, "MODE %s 0 %s", dest->name.c_str(), buf);
else
@@ -111,7 +109,8 @@ class BahamutIRCdProto : public IRCDProto
void SendModeInternal(BotInfo *bi, User *u, const char *buf)
{
- if (!buf) return;
+ if (!buf)
+ return;
send_cmd(bi ? bi->nick : Config.ServerName, "SVSMODE %s %ld %s", u->nick.c_str(), static_cast<long>(u->timestamp), buf);
}
@@ -136,8 +135,10 @@ class BahamutIRCdProto : public IRCDProto
/* SVSMODE channel modes */
void SendSVSModeChan(Channel *c, const char *mode, const char *nick)
{
- if (nick) send_cmd(Config.ServerName, "SVSMODE %s %s %s", c->name.c_str(), mode, nick);
- else send_cmd(Config.ServerName, "SVSMODE %s %s", c->name.c_str(), mode);
+ if (nick)
+ send_cmd(Config.ServerName, "SVSMODE %s %s %s", c->name.c_str(), mode, nick);
+ else
+ send_cmd(Config.ServerName, "SVSMODE %s %s", c->name.c_str(), mode);
}
/* SQLINE */
@@ -210,7 +211,8 @@ class BahamutIRCdProto : public IRCDProto
{
// Calculate the time left before this would expire, capping it at 2 days
time_t timeleft = x->Expires - time(NULL);
- if (timeleft > 172800) timeleft = 172800;
+ if (timeleft > 172800)
+ timeleft = 172800;
send_cmd(NULL, "AKILL %s %s %d %s %ld :%s", x->GetHost().c_str(), x->GetUser().c_str(), static_cast<int>(timeleft), x->By.c_str(), static_cast<long>(time(NULL)), x->Reason.c_str());
}
@@ -241,14 +243,17 @@ class BahamutIRCdProto : public IRCDProto
void SendNoticeChanopsInternal(BotInfo *source, Channel *dest, const char *buf)
{
- if (!buf) return;
+ if (!buf)
+ return;
send_cmd(NULL, "NOTICE @%s :%s", dest->name.c_str(), buf);
}
void SendKickInternal(BotInfo *source, Channel *chan, User *user, const char *buf)
{
- if (buf) send_cmd(source->nick, "KICK %s %s :%s", chan->name.c_str(), user->nick.c_str(), buf);
- else send_cmd(source->nick, "KICK %s %s", chan->name.c_str(), user->nick.c_str());
+ if (buf)
+ send_cmd(source->nick, "KICK %s %s :%s", chan->name.c_str(), user->nick.c_str(), buf);
+ else
+ send_cmd(source->nick, "KICK %s %s", chan->name.c_str(), user->nick.c_str());
}
void SendClientIntroduction(const std::string &nick, const std::string &user, const std::string &host, const std::string &real, const char *modes, const std::string &uid)
@@ -299,10 +304,8 @@ class BahamutIRCdProto : public IRCDProto
u->SetMode(bi, UMODE_REGISTERED);
ircdproto->SendMode(bi, u, "+d %s", svidbuf);
}
-
} ircd_proto;
-
/* EVENT: SJOIN */
int anope_event_sjoin(const char *source, int ac, const char **av)
{
@@ -353,11 +356,11 @@ int anope_event_sjoin(const char *source, int ac, const char **av)
/* Their TS is newer than ours, our modes > theirs, unset their modes if need be */
else
keep_their_modes = false;
-
+
/* Mark the channel as syncing */
if (was_created)
c->SetFlag(CH_SYNCING);
-
+
/* If we need to keep their modes, and this SJOIN string contains modes */
if (keep_their_modes && ac >= 4)
{
@@ -372,9 +375,7 @@ int anope_event_sjoin(const char *source, int ac, const char **av)
{
User *u = finduser(source);
if (!u)
- {
Alog(LOG_DEBUG) << "SJOIN for nonexistant user " << source << " on " << c->name;
- }
else
{
EventReturn MOD_RESULT;
@@ -436,10 +437,8 @@ int anope_event_sjoin(const char *source, int ac, const char **av)
/* Update their status internally on the channel
* This will enforce secureops etc on the user
*/
- for (std::list<ChannelMode *>::iterator it = Status.begin(); it != Status.end(); ++it)
- {
+ for (std::list<ChannelMode *>::iterator it = Status.begin(), it_end = Status.end(); it != it_end; ++it)
c->SetModeInternal(*it, buf);
- }
/* Now set whatever modes this user is allowed to have on the channel */
chan_set_correct_modes(u, c, 1);
@@ -494,11 +493,11 @@ int anope_event_nick(const char *source, int ac, const char **av)
{
User *user;
- if (ac != 2) {
- user = do_nick(source, av[0], av[4], av[5], av[6], av[9],
- strtoul(av[2], NULL, 10), strtoul(av[8], NULL, 0),
- NULL, NULL);
- if (user) {
+ if (ac != 2)
+ {
+ user = do_nick(source, av[0], av[4], av[5], av[6], av[9], strtoul(av[2], NULL, 10), strtoul(av[8], NULL, 0), NULL, NULL);
+ if (user)
+ {
/* Check to see if the user should be identified because their
* services id matches the one in their nickcore
*/
@@ -506,10 +505,9 @@ int anope_event_nick(const char *source, int ac, const char **av)
UserSetInternalModes(user, 1, &av[3]);
}
- } else {
- do_nick(source, av[0], NULL, NULL, NULL, NULL,
- strtoul(av[1], NULL, 10), 0, NULL, NULL);
}
+ else
+ do_nick(source, av[0], NULL, NULL, NULL, NULL, strtoul(av[1], NULL, 10), 0, NULL, NULL);
return MOD_CONT;
}
@@ -600,9 +598,8 @@ int anope_event_part(const char *source, int ac, const char **av)
int anope_event_whois(const char *source, int ac, const char **av)
{
- if (source && ac >= 1) {
+ if (source && ac >= 1)
m_whois(source, av[0]);
- }
return MOD_CONT;
}
@@ -636,11 +633,10 @@ int anope_event_mode(const char *source, int ac, const char **av)
if (ac < 2)
return MOD_CONT;
- if (*av[0] == '#' || *av[0] == '&') {
+ if (*av[0] == '#' || *av[0] == '&')
do_cmode(source, ac, av);
- } else {
+ else
do_umode(source, ac, av);
- }
return MOD_CONT;
}
@@ -675,9 +671,8 @@ int anope_event_join(const char *source, int ac, const char **av)
/* EVENT: MOTD */
int anope_event_motd(const char *source, int ac, const char **av)
{
- if (!source) {
+ if (!source)
return MOD_CONT;
- }
m_motd(source);
return MOD_CONT;
@@ -685,9 +680,8 @@ int anope_event_motd(const char *source, int ac, const char **av)
int anope_event_away(const char *source, int ac, const char **av)
{
- if (!source) {
+ if (!source)
return MOD_CONT;
- }
m_away(source, (ac ? av[0] : NULL));
return MOD_CONT;
}
@@ -711,9 +705,12 @@ int anope_event_burst(const char *source, int ac, const char **av)
{
Server *s = Server::Find(source ? source : "");
- if (!ac) {
+ if (!ac)
+ {
/* for future use - start burst */
- } else {
+ }
+ else
+ {
/* If we found a server with the given source, that one just
* finished bursting. If there was no source, then our uplink
* server finished bursting. -GD
diff --git a/src/protocol/inspircd11.cpp b/src/protocol/inspircd11.cpp
index 1b822bbf8..89b2daa32 100644
--- a/src/protocol/inspircd11.cpp
+++ b/src/protocol/inspircd11.cpp
@@ -7,8 +7,6 @@
*
* Based on the original code of Epona by Lara.
* Based on the original code of Services by Andy Church.
- *
- *
*/
/*************************************************************************/
@@ -18,13 +16,13 @@
#include "hashcomp.h"
#ifndef _WIN32
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
+# include <sys/socket.h>
+# include <netinet/in.h>
+# include <arpa/inet.h>
#endif
#ifdef _WIN32
-#include <winsock.h>
+# include <winsock.h>
int inet_aton(const char *name, struct in_addr *addr)
{
uint32 a = inet_addr(name);
@@ -34,63 +32,58 @@ int inet_aton(const char *name, struct in_addr *addr)
#endif
IRCDVar myIrcd[] = {
- {"InspIRCd 1.1", /* ircd name */
- "+I", /* Modes used by pseudoclients */
- 5, /* Chan Max Symbols */
- "+ao", /* Channel Umode used by Botserv bots */
- 1, /* SVSNICK */
- 1, /* Vhost */
- 1, /* Supports SNlines */
- 1, /* Supports SQlines */
- 1, /* Supports SZlines */
- 4, /* Number of server args */
- 0, /* Join 2 Set */
- 1, /* Join 2 Message */
- 1, /* TS Topic Forward */
- 0, /* TS Topci Backward */
- 0, /* Chan SQlines */
- 0, /* Quit on Kill */
- 0, /* SVSMODE unban */
- 1, /* Reverse */
- 1, /* vidents */
- 1, /* svshold */
- 0, /* time stamp on mode */
- 0, /* NICKIP */
- 1, /* O:LINE */
- 1, /* UMODE */
- 1, /* VHOST ON NICK */
- 0, /* Change RealName */
- 1, /* No Knock requires +i */
- 0, /* We support inspircd TOKENS */
- 0, /* TIME STAMPS are BASE64 */
- 0, /* Can remove User Channel Modes with SVSMODE */
- 0, /* Sglines are not enforced until user reconnects */
- 0, /* ts6 */
- 0, /* p10 */
- 1, /* CIDR channelbans */
- "$", /* TLD Prefix for Global */
- 20, /* Max number of modes we can send per line */
+ {"InspIRCd 1.1", /* ircd name */
+ "+I", /* Modes used by pseudoclients */
+ 5, /* Chan Max Symbols */
+ "+ao", /* Channel Umode used by Botserv bots */
+ 1, /* SVSNICK */
+ 1, /* Vhost */
+ 1, /* Supports SNlines */
+ 1, /* Supports SQlines */
+ 1, /* Supports SZlines */
+ 4, /* Number of server args */
+ 0, /* Join 2 Set */
+ 1, /* Join 2 Message */
+ 1, /* TS Topic Forward */
+ 0, /* TS Topci Backward */
+ 0, /* Chan SQlines */
+ 0, /* Quit on Kill */
+ 0, /* SVSMODE unban */
+ 1, /* Reverse */
+ 1, /* vidents */
+ 1, /* svshold */
+ 0, /* time stamp on mode */
+ 0, /* NICKIP */
+ 1, /* O:LINE */
+ 1, /* UMODE */
+ 1, /* VHOST ON NICK */
+ 0, /* Change RealName */
+ 1, /* No Knock requires +i */
+ 0, /* We support inspircd TOKENS */
+ 0, /* TIME STAMPS are BASE64 */
+ 0, /* Can remove User Channel Modes with SVSMODE */
+ 0, /* Sglines are not enforced until user reconnects */
+ 0, /* ts6 */
+ 0, /* p10 */
+ 1, /* CIDR channelbans */
+ "$", /* TLD Prefix for Global */
+ 20, /* Max number of modes we can send per line */
}
,
{NULL}
};
-
-static int has_servicesmod = 0;
-static int has_globopsmod = 0;
-static int has_svsholdmod = 0;
-static int has_chghostmod = 0;
-static int has_chgidentmod = 0;
-static int has_messagefloodmod = 0;
-static int has_banexceptionmod = 0;
-static int has_inviteexceptionmod = 0;
-static int has_hidechansmod = 0;
-
+static bool has_servicesmod = false;
+static bool has_globopsmod = false;
+static bool has_svsholdmod = false;
+static bool has_chghostmod = false;
+static bool has_chgidentmod = false;
+static bool has_hidechansmod = false;
/* CHGHOST */
void inspircd_cmd_chghost(const char *nick, const char *vhost)
{
- if (has_chghostmod == 1)
+ if (has_chghostmod)
{
if (!nick || !vhost)
return;
@@ -102,9 +95,8 @@ void inspircd_cmd_chghost(const char *nick, const char *vhost)
int anope_event_idle(const char *source, int ac, const char **av)
{
- if (ac == 1) {
+ if (ac == 1)
send_cmd(av[0], "IDLE %s %ld 0", source, static_cast<long>(time(NULL)));
- }
return MOD_CONT;
}
@@ -116,7 +108,6 @@ void inspircd_cmd_pass(const char *pass)
strlcpy(currentpass, pass, sizeof(currentpass));
}
-
class InspIRCdProto : public IRCDProto
{
void SendAkillDel(XLine *x)
@@ -137,9 +128,7 @@ class InspIRCdProto : public IRCDProto
inspircd_cmd_chghost(u->nick.c_str(), u->host);
if (has_chgidentmod && u->GetIdent() != u->GetVIdent())
- {
inspircd_cmd_chgident(u->nick.c_str(), u->GetIdent().c_str());
- }
}
void SendAkill(XLine *x)
@@ -173,13 +162,15 @@ class InspIRCdProto : public IRCDProto
void SendModeInternal(BotInfo *source, Channel *dest, const char *buf)
{
- if (!buf) return;
+ if (!buf)
+ return;
send_cmd(source ? source->nick : Config.s_OperServ, "FMODE %s %u %s", dest->name.c_str(), static_cast<unsigned>(dest->creation_time), buf);
}
void SendModeInternal(BotInfo *bi, User *u, const char *buf)
{
- if (!buf) return;
+ if (!buf)
+ return;
send_cmd(bi ? bi->nick : Config.ServerName, "MODE %s %s", u->nick.c_str(), buf);
}
@@ -191,13 +182,16 @@ class InspIRCdProto : public IRCDProto
void SendKickInternal(BotInfo *source, Channel *chan, User *user, const char *buf)
{
- if (buf) send_cmd(source->nick, "KICK %s %s :%s", chan->name.c_str(), user->nick.c_str(), buf);
- else send_cmd(source->nick, "KICK %s %s :%s", chan->name.c_str(), user->nick.c_str(), user->nick.c_str());
+ if (buf)
+ send_cmd(source->nick, "KICK %s %s :%s", chan->name.c_str(), user->nick.c_str(), buf);
+ else
+ send_cmd(source->nick, "KICK %s %s :%s", chan->name.c_str(), user->nick.c_str(), user->nick.c_str());
}
void SendNoticeChanopsInternal(BotInfo *source, Channel *dest, const char *buf)
{
- if (!buf) return;
+ if (!buf)
+ return;
send_cmd(Config.ServerName, "NOTICE @%s :%s", dest->name.c_str(), buf);
}
@@ -228,7 +222,8 @@ class InspIRCdProto : public IRCDProto
/* SQUIT */
void SendSquit(const char *servname, const char *message)
{
- if (!servname || !message) return;
+ if (!servname || !message)
+ return;
send_cmd(Config.ServerName, "SQUIT %s :%s", servname, message);
}
@@ -254,14 +249,14 @@ class InspIRCdProto : public IRCDProto
/* CHGIDENT */
void inspircd_cmd_chgident(const char *nick, const char *vIdent)
{
- if (has_chgidentmod == 1) {
- if (!nick || !vIdent || !*vIdent) {
+ if (has_chgidentmod)
+ {
+ if (!nick || !vIdent || !*vIdent)
return;
- }
send_cmd(Config.s_OperServ, "CHGIDENT %s %s", nick, vIdent);
- } else {
- ircdproto->SendGlobops(OperServ, "CHGIDENT not loaded!");
}
+ else
+ ircdproto->SendGlobops(OperServ, "CHGIDENT not loaded!");
}
/* SVSHOLD - set */
@@ -323,23 +318,17 @@ class InspIRCdProto : public IRCDProto
u->SetMode(NickServ, UMODE_REGISTERED);
}
-
} ircd_proto;
-
-
-
-
-
int anope_event_ftopic(const char *source, int ac, const char **av)
{
/* :source FTOPIC channel ts setby :topic */
const char *temp;
if (ac < 4)
return MOD_CONT;
- temp = av[1]; /* temp now holds ts */
- av[1] = av[2]; /* av[1] now holds set by */
- av[2] = temp; /* av[2] now holds ts */
+ temp = av[1]; /* temp now holds ts */
+ av[1] = av[2]; /* av[1] now holds set by */
+ av[2] = temp; /* av[2] now holds ts */
do_topic(source, ac, av);
return MOD_CONT;
}
@@ -349,18 +338,18 @@ int anope_event_mode(const char *source, int ac, const char **av)
if (ac < 2)
return MOD_CONT;
- if (*av[0] == '#' || *av[0] == '&') {
+ if (*av[0] == '#' || *av[0] == '&')
do_cmode(source, ac, av);
- } else {
+ else
+ {
/* InspIRCd lets opers change another
users modes, we have to kludge this
as it slightly breaks RFC1459
*/
- if (!strcasecmp(source, av[0])) {
+ if (!strcasecmp(source, av[0]))
do_umode(source, ac, av);
- } else {
+ else
do_umode(av[0], ac, av);
- }
}
return MOD_CONT;
}
@@ -371,12 +360,14 @@ int anope_event_opertype(const char *source, int ac, const char **av)
dont do this directly */
User *u;
u = finduser(source);
- if (u && !is_oper(u)) {
+ if (u && !is_oper(u))
+ {
const char *newav[2];
newav[0] = source;
newav[1] = "+o";
return anope_event_mode(source, 2, newav);
- } else
+ }
+ else
return MOD_CONT;
}
@@ -391,28 +382,30 @@ int anope_event_fmode(const char *source, int ac, const char **av)
return MOD_CONT;
/* Checking the TS for validity to avoid desyncs */
- if ((c = findchan(av[0]))) {
- if (c->creation_time > strtol(av[1], NULL, 10)) {
+ if ((c = findchan(av[0])))
+ {
+ if (c->creation_time > strtol(av[1], NULL, 10))
/* Our TS is bigger, we should lower it */
c->creation_time = strtol(av[1], NULL, 10);
- } else if (c->creation_time < strtol(av[1], NULL, 10)) {
+ else if (c->creation_time < strtol(av[1], NULL, 10))
/* The TS we got is bigger, we should ignore this message. */
return MOD_CONT;
- }
- } else {
+ }
+ else
/* Got FMODE for a non-existing channel */
return MOD_CONT;
- }
/* TS's are equal now, so we can proceed with parsing */
n = o = 0;
- while (n < ac) {
- if (n != 1) {
+ while (n < ac)
+ {
+ if (n != 1)
+ {
newav[o] = av[n];
- o++;
+ ++o;
Alog(LOG_DEBUG) << "Param: " << newav[o - 1];
}
- n++;
+ ++n;
}
return anope_event_mode(source, ac - 1, newav);
@@ -467,7 +460,7 @@ int anope_event_fjoin(const char *source, int ac, const char **av)
/* Their TS is newer than ours, our modes > theirs, unset their modes if need be */
else
keep_their_modes = false;
-
+
/* Mark the channel as syncing */
if (was_created)
c->SetFlag(CH_SYNCING);
@@ -512,10 +505,8 @@ int anope_event_fjoin(const char *source, int ac, const char **av)
/* Update their status internally on the channel
* This will enforce secureops etc on the user
*/
- for (std::list<ChannelMode *>::iterator it = Status.begin(); it != Status.end(); ++it)
- {
+ for (std::list<ChannelMode *>::iterator it = Status.begin(), it_end = Status.end(); it != it_end; ++it)
c->SetModeInternal(*it, buf);
- }
/* Now set whatever modes this user is allowed to have on the channel */
chan_set_correct_modes(u, c, 1);
@@ -567,9 +558,8 @@ int anope_event_436(const char *source, int ac, const char **av)
int anope_event_away(const char *source, int ac, const char **av)
{
- if (!source) {
+ if (!source)
return MOD_CONT;
- }
m_away(source, (ac ? av[0] : NULL));
return MOD_CONT;
}
@@ -590,7 +580,8 @@ int anope_event_topic(const char *source, int ac, const char **av)
if (check_topiclock(c, topic_time))
return MOD_CONT;
- if (c->topic) {
+ if (c->topic)
+ {
delete [] c->topic;
c->topic = NULL;
}
@@ -602,10 +593,12 @@ int anope_event_topic(const char *source, int ac, const char **av)
record_topic(av[0]);
- if (ac > 1 && *av[1]) {
+ if (ac > 1 && *av[1])
+ {
FOREACH_MOD(I_OnTopicUpdated, OnTopicUpdated(c, av[1]));
}
- else {
+ else
+ {
FOREACH_MOD(I_OnTopicUpdated, OnTopicUpdated(c, ""));
}
@@ -626,7 +619,7 @@ int anope_event_rsquit(const char *source, int ac, const char **av)
return MOD_CONT;
/* Horrible workaround to an insp bug (#) in how RSQUITs are sent - mark */
- if (ac > 1 && strcmp(Config.ServerName, av[0]) == 0)
+ if (ac > 1 && !strcmp(Config.ServerName, av[0]))
do_squit(source, ac - 1, av + 1);
else
do_squit(source, ac, av);
@@ -642,7 +635,6 @@ int anope_event_quit(const char *source, int ac, const char **av)
return MOD_CONT;
}
-
int anope_event_kill(const char *source, int ac, const char **av)
{
if (ac != 2)
@@ -660,7 +652,6 @@ int anope_event_kick(const char *source, int ac, const char **av)
return MOD_CONT;
}
-
int anope_event_join(const char *source, int ac, const char **av)
{
if (ac != 2)
@@ -671,9 +662,8 @@ int anope_event_join(const char *source, int ac, const char **av)
int anope_event_motd(const char *source, int ac, const char **av)
{
- if (!source) {
+ if (!source)
return MOD_CONT;
- }
m_motd(source);
return MOD_CONT;
@@ -776,8 +766,10 @@ int anope_event_nick(const char *source, int ac, const char **av)
struct in_addr addy;
uint32 *ad = reinterpret_cast<uint32 *>(&addy);
- if (ac != 1) {
- if (ac == 8) {
+ if (ac != 1)
+ {
+ if (ac == 8)
+ {
int ts = strtoul(av[0], NULL, 10);
inet_aton(av[6], &addy);
@@ -787,7 +779,8 @@ int anope_event_nick(const char *source, int ac, const char **av)
source, /* server */
av[7], /* realname */
ts, htonl(*ad), av[3], NULL);
- if (user) {
+ if (user)
+ {
/* InspIRCd1.1 has no user mode +d so we
* use nick timestamp to check for auth - Adam
*/
@@ -797,9 +790,9 @@ int anope_event_nick(const char *source, int ac, const char **av)
user->SetCloakedHost(av[3]);
}
}
- } else {
- do_nick(source, av[0], NULL, NULL, NULL, NULL, 0, 0, NULL, NULL);
}
+ else
+ do_nick(source, av[0], NULL, NULL, NULL, NULL, 0, 0, NULL, NULL);
return MOD_CONT;
}
@@ -829,7 +822,6 @@ int anope_event_server(const char *source, int ac, const char **av)
return MOD_CONT;
}
-
int anope_event_privmsg(const char *source, int ac, const char **av)
{
if (ac != 2)
@@ -848,55 +840,40 @@ int anope_event_part(const char *source, int ac, const char **av)
int anope_event_whois(const char *source, int ac, const char **av)
{
- if (source && ac >= 1) {
+ if (source && ac >= 1)
m_whois(source, av[0]);
- }
return MOD_CONT;
}
int anope_event_capab(const char *source, int ac, const char **av)
{
- if (strcasecmp(av[0], "START") == 0) {
+ if (!strcasecmp(av[0], "START"))
+ {
/* reset CAPAB */
- has_servicesmod = 0;
- has_globopsmod = 0;
- has_svsholdmod = 0;
- has_chghostmod = 0;
- has_chgidentmod = 0;
- has_messagefloodmod = 0;
- has_banexceptionmod = 0;
- has_inviteexceptionmod = 0;
- has_hidechansmod = 0;
-
- } else if (strcasecmp(av[0], "MODULES") == 0) {
- if (strstr(av[1], "m_globops.so")) {
- has_globopsmod = 1;
- }
- if (strstr(av[1], "m_services.so")) {
- has_servicesmod = 1;
- }
- if (strstr(av[1], "m_svshold.so")) {
- has_svsholdmod = 1;
- }
- if (strstr(av[1], "m_chghost.so")) {
- has_chghostmod = 1;
- }
- if (strstr(av[1], "m_chgident.so")) {
- has_chgidentmod = 1;
- }
- if (strstr(av[1], "m_messageflood.so")) {
- has_messagefloodmod = 1;
- }
- if (strstr(av[1], "m_banexception.so")) {
- has_banexceptionmod = 1;
- }
- if (strstr(av[1], "m_inviteexception.so")) {
- has_inviteexceptionmod = 1;
- }
- if (strstr(av[1], "m_hidechans.so")) {
- has_hidechansmod = 1;
- }
- } else if (strcasecmp(av[0], "CAPABILITIES") == 0) {
+ has_servicesmod = false;
+ has_globopsmod = false;
+ has_svsholdmod = false;
+ has_chghostmod = false;
+ has_chgidentmod = false;
+ has_hidechansmod = false;
+ }
+ else if (!strcasecmp(av[0], "MODULES"))
+ {
+ if (strstr(av[1], "m_globops.so"))
+ has_globopsmod = true;
+ if (strstr(av[1], "m_services.so"))
+ has_servicesmod = true;
+ if (strstr(av[1], "m_svshold.so"))
+ has_svsholdmod = true;
+ if (strstr(av[1], "m_chghost.so"))
+ has_chghostmod = true;
+ if (strstr(av[1], "m_chgident.so"))
+ has_chgidentmod = true;
+ if (strstr(av[1], "m_hidechans.so"))
+ has_hidechansmod = true;
+ }
+ else if (!strcasecmp(av[0], "CAPABILITIES"))
+ {
spacesepstream ssep(av[1]);
std::string capab;
while (ssep.GetToken(capab))
@@ -908,7 +885,7 @@ int anope_event_capab(const char *source, int ac, const char **av)
std::string modebuf;
sep.GetToken(modebuf);
- for (size_t t = 0; t < modebuf.size(); ++t)
+ for (size_t t = 0, end = modebuf.size(); t < end; ++t)
{
switch (modebuf[t])
{
@@ -927,7 +904,7 @@ int anope_event_capab(const char *source, int ac, const char **av)
}
sep.GetToken(modebuf);
- for (size_t t = 0; t < modebuf.size(); ++t)
+ for (size_t t = 0, end = modebuf.size(); t < end; ++t)
{
switch (modebuf[t])
{
@@ -941,7 +918,7 @@ int anope_event_capab(const char *source, int ac, const char **av)
}
sep.GetToken(modebuf);
- for (size_t t = 0; t < modebuf.size(); ++t)
+ for (size_t t = 0, end = modebuf.size(); t < end; ++t)
{
switch (modebuf[t])
{
@@ -960,7 +937,7 @@ int anope_event_capab(const char *source, int ac, const char **av)
}
sep.GetToken(modebuf);
- for (size_t t = 0; t < modebuf.size(); ++t)
+ for (size_t t = 0, end = modebuf.size(); t < end; ++t)
{
switch (modebuf[t])
{
@@ -1034,7 +1011,7 @@ int anope_event_capab(const char *source, int ac, const char **av)
std::string modes(capab.begin() + 8, capab.begin() + capab.find(")"));
std::string chars(capab.begin() + capab.find(")") + 1, capab.end());
- for (size_t t = 0; t < modes.size(); ++t)
+ for (size_t t = 0, end = modes.size(); t < end; ++t)
{
switch (modes[t])
{
@@ -1062,37 +1039,39 @@ int anope_event_capab(const char *source, int ac, const char **av)
ircd->maxmodes = atoi(maxmodes.c_str());
}
}
- } else if (strcasecmp(av[0], "END") == 0) {
- if (!has_globopsmod) {
+ }
+ else if (!strcasecmp(av[0], "END"))
+ {
+ if (!has_globopsmod)
+ {
send_cmd(NULL, "ERROR :m_globops is not loaded. This is required by Anope");
quitmsg = "ERROR: Remote server does not have the m_globops module loaded, and this is required.";
quitting = 1;
return MOD_STOP;
}
- if (!has_servicesmod) {
+ if (!has_servicesmod)
+ {
send_cmd(NULL, "ERROR :m_services is not loaded. This is required by Anope");
quitmsg = "ERROR: Remote server does not have the m_services module loaded, and this is required.";
quitting = 1;
return MOD_STOP;
}
- if (!has_hidechansmod) {
+ if (!has_hidechansmod)
+ {
send_cmd(NULL, "ERROR :m_hidechans.so is not loaded. This is required by Anope");
quitmsg = "ERROR: Remote server deos not have the m_hidechans module loaded, and this is required.";
quitting = 1;
return MOD_STOP;
}
- if (!has_svsholdmod) {
+ if (!has_svsholdmod)
ircdproto->SendGlobops(OperServ, "SVSHOLD missing, Usage disabled until module is loaded.");
- }
- if (!has_chghostmod) {
+ if (!has_chghostmod)
ircdproto->SendGlobops(OperServ, "CHGHOST missing, Usage disabled until module is loaded.");
- }
- if (!has_chgidentmod) {
+ if (!has_chgidentmod)
ircdproto->SendGlobops(OperServ, "CHGIDENT missing, Usage disabled until module is loaded.");
- }
ircd->svshold = has_svsholdmod;
}
-
+
CapabParse(ac, av);
return MOD_CONT;
}
@@ -1103,7 +1082,6 @@ int anope_event_endburst(const char *source, int ac, const char **av)
return MOD_CONT;
}
-
void moduleAddIRCDMsgs()
{
Anope::AddMessage("ENDBURST", anope_event_endburst);
diff --git a/src/protocol/inspircd12.cpp b/src/protocol/inspircd12.cpp
index 504bdfc60..76105eba4 100644
--- a/src/protocol/inspircd12.cpp
+++ b/src/protocol/inspircd12.cpp
@@ -7,8 +7,6 @@
*
* Based on the original code of Epona by Lara.
* Based on the original code of Services by Andy Church.
- *
- *
*/
/*************************************************************************/
@@ -18,13 +16,13 @@
#include "hashcomp.h"
#ifndef _WIN32
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
+# include <sys/socket.h>
+# include <netinet/in.h>
+# include <arpa/inet.h>
#endif
#ifdef _WIN32
-#include <winsock.h>
+# include <winsock.h>
int inet_aton(const char *name, struct in_addr *addr)
{
uint32 a = inet_addr(name);
@@ -34,65 +32,61 @@ int inet_aton(const char *name, struct in_addr *addr)
#endif
IRCDVar myIrcd[] = {
- {"InspIRCd 1.2", /* ircd name */
- "+I", /* Modes used by pseudoclients */
- 5, /* Chan Max Symbols */
- "+ao", /* Channel Umode used by Botserv bots */
- 1, /* SVSNICK */
- 1, /* Vhost */
- 0, /* Supports SNlines */
- 1, /* Supports SQlines */
- 1, /* Supports SZlines */
- 4, /* Number of server args */
- 0, /* Join 2 Set */
- 0, /* Join 2 Message */
- 1, /* TS Topic Forward */
- 0, /* TS Topci Backward */
- 0, /* Chan SQlines */
- 0, /* Quit on Kill */
- 0, /* SVSMODE unban */
- 1, /* Reverse */
- 1, /* vidents */
- 1, /* svshold */
- 0, /* time stamp on mode */
- 0, /* NICKIP */
- 0, /* O:LINE */
- 1, /* UMODE */
- 1, /* VHOST ON NICK */
- 0, /* Change RealName */
- 1, /* No Knock requires +i */
- 0, /* We support inspircd TOKENS */
- 0, /* TIME STAMPS are BASE64 */
- 0, /* Can remove User Channel Modes with SVSMODE */
- 0, /* Sglines are not enforced until user reconnects */
- 1, /* ts6 */
- 0, /* p10 */
- 1, /* CIDR channelbans */
- "$", /* TLD Prefix for Global */
- 20, /* Max number of modes we can send per line */
+ {"InspIRCd 1.2", /* ircd name */
+ "+I", /* Modes used by pseudoclients */
+ 5, /* Chan Max Symbols */
+ "+ao", /* Channel Umode used by Botserv bots */
+ 1, /* SVSNICK */
+ 1, /* Vhost */
+ 0, /* Supports SNlines */
+ 1, /* Supports SQlines */
+ 1, /* Supports SZlines */
+ 4, /* Number of server args */
+ 0, /* Join 2 Set */
+ 0, /* Join 2 Message */
+ 1, /* TS Topic Forward */
+ 0, /* TS Topci Backward */
+ 0, /* Chan SQlines */
+ 0, /* Quit on Kill */
+ 0, /* SVSMODE unban */
+ 1, /* Reverse */
+ 1, /* vidents */
+ 1, /* svshold */
+ 0, /* time stamp on mode */
+ 0, /* NICKIP */
+ 0, /* O:LINE */
+ 1, /* UMODE */
+ 1, /* VHOST ON NICK */
+ 0, /* Change RealName */
+ 1, /* No Knock requires +i */
+ 0, /* We support inspircd TOKENS */
+ 0, /* TIME STAMPS are BASE64 */
+ 0, /* Can remove User Channel Modes with SVSMODE */
+ 0, /* Sglines are not enforced until user reconnects */
+ 1, /* ts6 */
+ 0, /* p10 */
+ 1, /* CIDR channelbans */
+ "$", /* TLD Prefix for Global */
+ 20, /* Max number of modes we can send per line */
}
,
{NULL}
};
-static int has_servicesmod = 0;
-static int has_globopsmod = 0;
-static int has_svsholdmod = 0;
-static int has_chghostmod = 0;
-static int has_chgidentmod = 0;
-static int has_messagefloodmod = 0;
-static int has_banexceptionmod = 0;
-static int has_inviteexceptionmod = 0;
-static int has_hidechansmod = 0;
+static bool has_servicesmod = false;
+static bool has_globopsmod = false;
+static bool has_svsholdmod = false;
+static bool has_chghostmod = false;
+static bool has_chgidentmod = false;
+static bool has_hidechansmod = false;
/* Previously introduced user during burst */
static User *prev_u_intro = NULL;