diff --git a/configure.ng b/configure.ng index 4f0a14e0..84e27508 100644 --- a/configure.ng +++ b/configure.ng @@ -604,7 +604,6 @@ test -n "$CFLAGS_END" && CFLAGS="$CFLAGS $CFLAGS_END" AC_CONFIG_FILES([ \ Makefile \ - contrib/Anope/Makefile \ contrib/Debian/Makefile \ contrib/MacOSX/Makefile \ contrib/MacOSX/ngIRCd.pmdoc/Makefile \ diff --git a/contrib/Anope/0001-Revert-Removed-ngircd.patch b/contrib/Anope/0001-Revert-Removed-ngircd.patch deleted file mode 100644 index efed0adb..00000000 --- a/contrib/Anope/0001-Revert-Removed-ngircd.patch +++ /dev/null @@ -1,496 +0,0 @@ -From bc5023fdba8091ab7eee29fe0deeca6843159743 Mon Sep 17 00:00:00 2001 -From: Alexander Barton -Date: Mon, 16 May 2011 18:23:01 +0200 -Subject: [PATCH 1/2] Revert "Removed ngircd as we've decided not to support it at this time" - -This reverts commit 605b5d57171d2f0fac56ee2ee3e1b1bbdadeb24f and re-enables -the ngIRCd protocol module for Anope. ---- - modules/protocol/ngircd.cpp | 475 +++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 475 insertions(+), 0 deletions(-) - create mode 100644 modules/protocol/ngircd.cpp - -diff --git a/modules/protocol/ngircd.cpp b/modules/protocol/ngircd.cpp -new file mode 100644 -index 0000000..6e1f21f ---- /dev/null -+++ b/modules/protocol/ngircd.cpp -@@ -0,0 +1,475 @@ -+/* ngIRCd IRCD functions -+ * -+ * (C) 2003-2011 Anope Team -+ * Contact us at team@anope.org -+ * -+ * Please read COPYING and README for further details. -+ * -+ * Based on the original code of Epona by Lara. -+ * Based on the original code of Services by Andy Church. -+ */ -+ -+#include "services.h" -+#include "modules.h" -+ -+IRCDVar myIrcd[] = { -+ {"ngIRCd", /* ircd name */ -+ "+oi", /* Modes used by pseudoclients */ -+ 0, /* SVSNICK */ -+ 0, /* Vhost */ -+ 0, /* Supports SNlines */ -+ 0, /* Supports SQlines */ -+ 0, /* Supports SZlines */ -+ 0, /* Join 2 Message */ -+ 0, /* Chan SQlines */ -+ 1, /* Quit on Kill */ -+ 0, /* vidents */ -+ 0, /* svshold */ -+ 0, /* time stamp on mode */ -+ 0, /* UMODE */ -+ 0, /* O:LINE */ -+ 0, /* No Knock requires +i */ -+ 0, /* Can remove User Channel Modes with SVSMODE */ -+ 0, /* Sglines are not enforced until user reconnects */ -+ 0, /* ts6 */ -+ "$", /* TLD Prefix for Global */ -+ 20, /* Max number of modes we can send per line */ -+ 0, /* IRCd sends a SSL users certificate fingerprint */ -+ } -+ , -+ {NULL} -+}; -+ -+/* PASS */ -+class ngIRCdProto : public IRCDProto -+{ -+ void SendAkill(User *u, const XLine *x) -+ { -+ if (SGLine && u == NULL) -+ for (Anope::insensitive_map::iterator it = UserListByNick.begin(); it != UserListByNick.end();) -+ { -+ u = it->second; -+ ++it; -+ if (SGLine->Check(u) != NULL) -+ break; -+ } -+ } -+ -+ void SendAkillDel(const XLine*) { } -+ -+ void SendGlobopsInternal(const BotInfo *source, const Anope::string &buf) -+ { -+ send_cmd(source ? source->nick : Config->ServerName, "WALLOPS :%s", buf.c_str()); -+ } -+ -+ void SendJoin(BotInfo *user, Channel *c, const ChannelStatus *status) -+ { -+ send_cmd(user->nick, "JOIN %s", c->name.c_str()); -+ if (status) -+ for (unsigned i = 0; i < ModeManager::ChannelModes.size(); ++i) -+ if (status->HasFlag(ModeManager::ChannelModes[i]->Name)) -+ c->SetMode(user, ModeManager::ChannelModes[i], user->nick, false); -+ } -+ -+ void SendSVSKillInternal(const BotInfo *source, const User *user, const Anope::string &buf) -+ { -+ send_cmd(source ? source->nick : Config->ServerName, "KILL %s :%s", user->nick.c_str(), buf.c_str()); -+ } -+ -+ /* SERVER name hop descript */ -+ void SendServer(const Server *server) -+ { -+ send_cmd("", "SERVER %s %d :%s", server->GetName().c_str(), server->GetHops(), server->GetDescription().c_str()); -+ } -+ -+ void SendConnect() -+ { -+ send_cmd("", "PASS %s 0210-IRC+ Anope|%s:CLHSo P", uplink_server->password.c_str(), Anope::VersionShort().c_str()); -+ /* Make myself known to myself in the serverlist */ -+ SendServer(Me); -+ /* finish the enhanced server handshake and register the connection */ -+ this->SendNumeric(Config->ServerName, 376, "*", ":End of MOTD command"); -+ } -+ -+ // Received: :dev.anope.de NICK DukeP 1 ~DukePyro p57ABF9C9.dip.t-dialin.net 1 +i :DukePyrolator -+ void SendClientIntroduction(const User *u, const Anope::string &modes) -+ { -+ EnforceQlinedNick(u->nick, ""); -+ send_cmd(Config->ServerName, "NICK %s 1 %s %s 1 %s :%s", u->nick.c_str(), u->GetIdent().c_str(), u->host.c_str(), modes.c_str(), u->realname.c_str()); -+ } -+ -+ void SendPartInternal(const BotInfo *bi, const Channel *chan, const Anope::string &buf) -+ { -+ if (!buf.empty()) -+ send_cmd(bi->nick, "PART %s :%s", chan->name.c_str(), buf.c_str()); -+ else -+ send_cmd(bi->nick, "PART %s", chan->name.c_str()); -+ } -+ -+ void SendModeInternal(const BotInfo *bi, const Channel *dest, const Anope::string &buf) -+ { -+ send_cmd(bi ? bi->nick : Config->ServerName, "MODE %s %s", dest->name.c_str(), buf.c_str()); -+ } -+ -+ void SendModeInternal(const BotInfo *bi, const User *u, const Anope::string &buf) -+ { -+ send_cmd(bi ? bi->nick : Config->ServerName, "MODE %s %s", u->nick.c_str(), buf.c_str()); -+ } -+ -+ void SendKickInternal(const BotInfo *bi, const Channel *chan, const User *user, const Anope::string &buf) -+ { -+ if (!buf.empty()) -+ send_cmd(bi->nick, "KICK %s %s :%s", chan->name.c_str(), user->nick.c_str(), buf.c_str()); -+ else -+ send_cmd(bi->nick, "KICK %s %s", chan->name.c_str(), user->nick.c_str()); -+ } -+ -+ void SendNoticeChanopsInternal(const BotInfo *source, const Channel *dest, const Anope::string &buf) -+ { -+ send_cmd(source ? source->nick : Config->s_ChanServ, "NOTICE @%s :%s", dest->name.c_str(), buf.c_str()); -+ } -+ -+ /* INVITE */ -+ void SendInvite(BotInfo *source, const Anope::string &chan, const Anope::string &nick) -+ { -+ send_cmd(source->nick, "INVITE %s %s", nick.c_str(), chan.c_str()); -+ } -+ -+ void SendChannel(Channel *c) -+ { -+ Anope::string mlock_modes = get_mlock_modes(c->ci, true); -+ if (mlock_modes.empty()) -+ mlock_modes = "+"; -+ send_cmd(Config->ServerName, "CHANINFO %s %s", c->name.c_str(), mlock_modes.c_str()); -+ } -+ void SendTopic(BotInfo *bi, Channel *c) -+ { -+ send_cmd(bi->nick, "TOPIC %s :%s", c->name.c_str(), c->topic.c_str()); -+ } -+}; -+ -+class ngIRCdIRCdMessage : public IRCdMessage -+{ -+ public: -+ bool OnSJoin(const Anope::string&, const std::vector&) { return false; } -+ -+ /* -+ * Received: :dev.anope.de MODE #anope +b *!*@*aol* -+ */ -+ bool OnMode(const Anope::string &source, const std::vector ¶ms) -+ { -+ if (params.size() < 2) -+ return true; -+ -+ Anope::string modes = params[1]; -+ for (unsigned i = 2; i < params.size(); ++i) -+ modes += " " + params[i]; -+ -+ if (params[0][0] == '#' || params[0][0] == '&') -+ do_cmode(source, params[0], modes, ""); -+ else -+ do_umode(params[0], params[1]); -+ -+ return true; -+ } -+ -+ /* -+ Received: :DukeP_ NICK :test2 -+ Received: :dev.anope.de NICK DukeP_ 1 ~DukePyro ip-2-201-236-154.web.vodafone.de 1 + :DukePyrolator -+ source = nickname on nickchange, servername on newuser -+ params[0] = nick -+ params[1] = -+ params[2] = username -+ params[3] = host -+ params[4] = -+ params[5] = modes -+ params[6] = info -+ */ -+ bool OnNick(const Anope::string &source, const std::vector ¶ms) -+ { -+ if (params.size() == 1) -+ { -+ // we have a nickchange -+ do_nick(source, params[0], "", "", "", "", Anope::CurTime, "", "", "", ""); -+ } -+ else if (params.size() == 7) -+ { -+ // a new user is connecting to the network -+ User *user = do_nick("", params[0], params[2], params[3], source, params[6], Anope::CurTime, "", "", "", params[5]); -+ if (user) -+ validate_user(user); -+ } -+ else -+ { -+ Log() << "Received NICK with invalid number of parameters. source = " << source << "param[0] = " << params[0] << "params.size() = " << params.size(); -+ } -+ return true; -+ } -+ -+ bool OnServer(const Anope::string &source, const std::vector ¶ms) -+ { -+ if (params.size() == 3) -+ do_server("", params[0], 0, params[2], params[1]); -+ else -+ do_server(source, params[0], params[1].is_pos_number_only() ? convertTo(params[1]) : 0, params[3], params[2]); -+ return true; -+ } -+ -+ bool OnTopic(const Anope::string &source, const std::vector ¶ms) -+ { -+ Channel *c = findchan(params[0]); -+ if (!c) -+ { -+ Log() << "TOPIC for nonexistant channel " << params[0]; -+ return true; -+ } -+ -+ c->ChangeTopicInternal(source, params[1]); -+ return true; -+ } -+ -+ /* -+ * <@po||ux> DukeP: RFC 2813, 4.2.1: the JOIN command on server-server links -+ * separates the modes ("o") with ASCII 7, not space. And you can't see ASCII 7. -+ * -+ * if a user joins a new channel, the ircd sends \7 -+ */ -+ bool OnJoin (const Anope::string &source, const std::vector ¶ms) -+ { -+ if (!params.empty()) -+ { -+ size_t pos = params[0].find('\7'); -+ if (pos != Anope::string::npos) -+ { -+ Anope::string channel = params[0].substr(0, pos); -+ Anope::string mode = '+' + params[0].substr(pos, params[0].length()) + " " + source; -+ do_join(source, channel, ""); -+ do_cmode(source, channel, mode, ""); -+ } -+ else -+ do_join(source, params[0], ""); -+ } -+ return true; -+ } -+}; -+ -+/* -+ * CHANINFO + -+ * CHANINFO + : -+ * CHANINFO + : -+ */ -+bool event_chaninfo(const Anope::string &source, const std::vector ¶ms) -+{ -+ -+ Channel *c = findchan(params[0]); -+ if (!c) -+ c = new Channel(params[0]); -+ -+ Anope::string modes = params[1]; -+ -+ if (params.size() == 3) -+ { -+ c->ChangeTopicInternal(source, params[2], Anope::CurTime); -+ } -+ else if (params.size() == 5) -+ { -+ for (size_t i = 0, end = params[1].length(); i < end; ++i) -+ { -+ switch(params[1][i]) -+ { -+ case 'k': -+ modes += " " + params[2]; -+ continue; -+ case 'l': -+ modes += " " + params[3]; -+ continue; -+ } -+ } -+ c->ChangeTopicInternal(source, params[4], Anope::CurTime); -+ } -+ -+ c->SetModesInternal(NULL, modes); -+ -+ return true; -+} -+ -+/* -+ * Received: :dev.anope.de NJOIN #test :DukeP2,@DukeP -+ */ -+bool event_njoin(const Anope::string &source, const std::vector ¶ms) -+{ -+ Channel *c = findchan(params[0]); -+ commasepstream sep(params[1]); -+ Anope::string buf; -+ -+ if (!c) -+ { -+ c = new Channel(params[0], Anope::CurTime); -+ c->SetFlag(CH_SYNCING); -+ } -+ -+ while (sep.GetToken(buf)) -+ { -+ std::list Status; -+ char ch; -+ -+ /* Get prefixes from the nick */ -+ while ((ch = ModeManager::GetStatusChar(buf[0]))) -+ { -+ buf.erase(buf.begin()); -+ ChannelMode *cm = ModeManager::FindChannelModeByChar(ch); -+ if (!cm) -+ { -+ Log() << "Received unknown mode prefix " << ch << " in NJOIN string."; -+ continue; -+ } -+ Status.push_back(cm); -+ } -+ User *u = finduser(buf); -+ if (!u) -+ { -+ Log(LOG_DEBUG) << "NJOIN for nonexistant user " << buf << " on " << c->name; -+ continue; -+ } -+ -+ EventReturn MOD_RESULT; -+ FOREACH_RESULT(I_OnPreJoinChannel, OnPreJoinChannel(u, c)); -+ -+ /* Add the user to the Channel */ -+ c->JoinUser(u); -+ -+ /* Update their status internally on the channel -+ * This will enforce secureops etc on the user -+ */ -+ for (std::list::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); -+ -+ /* Check to see if modules want the user to join, if they do -+ * check to see if they are allowed to join (CheckKick will kick/ban them) -+ * Don't trigger OnJoinChannel event then as the user will be destroyed -+ */ -+ if (MOD_RESULT != EVENT_STOP && c->ci && c->ci->CheckKick(u)) -+ continue; -+ -+ FOREACH_MOD(I_OnJoinChannel, OnJoinChannel(u, c)); -+ } /* while */ -+ -+ if (c->HasFlag(CH_SYNCING)) -+ { -+ c->UnsetFlag(CH_SYNCING); -+ c->Sync(); -+ } -+ -+ return true; -+} -+ -+bool event_kick(const Anope::string &source, const std::vector ¶ms) -+{ -+ if (params.size() > 2) -+ do_kick(source, params[0], params[1], params[2]); -+ return true; -+} -+ -+bool event_pass(const Anope::string &source, const std::vector ¶ms) -+{ -+ return true; -+} -+ -+bool event_005(const Anope::string &source, const std::vector ¶ms) -+{ -+ size_t pos; -+ Anope::string name, data; -+ for (unsigned i = 0, end = params.size(); i < end; ++i) -+ { -+ pos = params[i].find('='); -+ if (pos != Anope::string::npos) -+ { -+ name = params[i].substr(0, pos); -+ data = params[i].substr(pos+1, params[i].length()); -+ if (name == "NICKLEN") -+ { -+ unsigned newlen = convertTo(data); -+ if (Config->NickLen != newlen) -+ { -+ Log() << "Config->NickLen changed from " << Config->NickLen << " to " << newlen; -+ Config->NickLen = newlen; -+ } -+ } -+ } -+ } -+ return true; -+} -+ -+bool event_442(const Anope::string &source, const std::vector ¶ms) -+{ -+ return true; -+} -+ -+bool event_376(const Anope::string &source, const std::vector ¶ms) -+{ -+ return true; -+} -+ -+ -+class ProtongIRCd : public Module -+{ -+ Message message_kick, message_pass, message_njoin, message_chaninfo, message_005, -+ message_442, message_376; -+ -+ ngIRCdProto ircd_proto; -+ ngIRCdIRCdMessage ircd_message; -+ -+ void AddModes() -+ { -+ /* Add user modes */ -+ ModeManager::AddUserMode(new UserMode(UMODE_ADMIN, 'a')); -+ ModeManager::AddUserMode(new UserMode(UMODE_INVIS, 'i')); -+ ModeManager::AddUserMode(new UserMode(UMODE_OPER, 'o')); -+ ModeManager::AddUserMode(new UserMode(UMODE_RESTRICTED, 'r')); -+ ModeManager::AddUserMode(new UserMode(UMODE_SNOMASK, 's')); -+ ModeManager::AddUserMode(new UserMode(UMODE_WALLOPS, 'w')); -+ ModeManager::AddUserMode(new UserMode(UMODE_CLOAK, 'x')); -+ -+ /* b/e/I */ -+ ModeManager::AddChannelMode(new ChannelModeBan(CMODE_BAN, 'b')); -+ ModeManager::AddChannelMode(new ChannelModeList(CMODE_INVITEOVERRIDE, 'I')); -+ -+ /* v/h/o/a/q */ -+ ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_VOICE, 'v', '+')); -+ ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_OP, 'o', '@')); -+ -+ /* Add channel modes */ -+ // channel modes: biIklmnoPstvz -+ ModeManager::AddChannelMode(new ChannelMode(CMODE_INVITE, 'i')); -+ ModeManager::AddChannelMode(new ChannelModeKey('k')); -+ ModeManager::AddChannelMode(new ChannelModeParam(CMODE_LIMIT, 'l')); -+ ModeManager::AddChannelMode(new ChannelMode(CMODE_MODERATED, 'm')); -+ ModeManager::AddChannelMode(new ChannelMode(CMODE_NOEXTERNAL, 'n')); -+ ModeManager::AddChannelMode(new ChannelMode(CMODE_PERM, 'P')); -+ ModeManager::AddChannelMode(new ChannelMode(CMODE_SECRET, 's')); -+ ModeManager::AddChannelMode(new ChannelMode(CMODE_TOPIC, 't')); -+ ModeManager::AddChannelMode(new ChannelMode(CMODE_SSL, 'z')); -+ } -+ -+ public: -+ ProtongIRCd(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator), -+ message_kick("KICK", event_kick), message_pass("PASS", event_pass), -+ message_njoin("NJOIN", event_njoin), message_chaninfo("CHANINFO", event_chaninfo), -+ message_005("005", event_005), message_442("442", event_442), message_376("376", event_376) -+ { -+ this->SetAuthor("Anope"); -+ this->SetType(PROTOCOL); -+ -+ Capab.SetFlag(CAPAB_QS); -+ -+ pmodule_ircd_var(myIrcd); -+ pmodule_ircd_proto(&this->ircd_proto); -+ pmodule_ircd_message(&this->ircd_message); -+ -+ this->AddModes(); -+ } -+}; -+ -+MODULE_INIT(ProtongIRCd) --- -1.7.2.5 - diff --git a/contrib/Anope/0002-ngircd-whitespace-fixes.patch b/contrib/Anope/0002-ngircd-whitespace-fixes.patch deleted file mode 100644 index 60356a88..00000000 --- a/contrib/Anope/0002-ngircd-whitespace-fixes.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 1ea1dd2095e63cef34edbebb729edc687f410a96 Mon Sep 17 00:00:00 2001 -From: Alexander Barton -Date: Mon, 16 May 2011 18:26:56 +0200 -Subject: [PATCH 2/2] ngircd: whitespace fixes - ---- - modules/protocol/ngircd.cpp | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -diff --git a/modules/protocol/ngircd.cpp b/modules/protocol/ngircd.cpp -index 6e1f21f..e546d05 100644 ---- a/modules/protocol/ngircd.cpp -+++ b/modules/protocol/ngircd.cpp -@@ -266,11 +266,11 @@ bool event_chaninfo(const Anope::string &source, const std::vectorChangeTopicInternal(source, params[2], Anope::CurTime); -- } -+ } - else if (params.size() == 5) - { - for (size_t i = 0, end = params[1].length(); i < end; ++i) -@@ -307,7 +307,7 @@ bool event_njoin(const Anope::string &source, const std::vector & - c = new Channel(params[0], Anope::CurTime); - c->SetFlag(CH_SYNCING); - } -- -+ - while (sep.GetToken(buf)) - { - std::list Status; -@@ -415,9 +415,9 @@ bool event_376(const Anope::string &source, const std::vector &pa - - class ProtongIRCd : public Module - { -- Message message_kick, message_pass, message_njoin, message_chaninfo, message_005, -+ Message message_kick, message_pass, message_njoin, message_chaninfo, message_005, - message_442, message_376; -- -+ - ngIRCdProto ircd_proto; - ngIRCdIRCdMessage ircd_message; - -@@ -461,7 +461,7 @@ class ProtongIRCd : public Module - { - this->SetAuthor("Anope"); - this->SetType(PROTOCOL); -- -+ - Capab.SetFlag(CAPAB_QS); - - pmodule_ircd_var(myIrcd); --- -1.7.2.5 - diff --git a/contrib/Anope/0003-Update-ngIRCd-protocol-module-for-current-Anope.patch b/contrib/Anope/0003-Update-ngIRCd-protocol-module-for-current-Anope.patch deleted file mode 100644 index c4ea0e6d..00000000 --- a/contrib/Anope/0003-Update-ngIRCd-protocol-module-for-current-Anope.patch +++ /dev/null @@ -1,128 +0,0 @@ -From d8eddbeaadc7d161865b5342d59748b80266533c Mon Sep 17 00:00:00 2001 -From: DukePyrolator -Date: Mon, 22 Aug 2011 14:53:37 +0200 -Subject: [PATCH 03/16] Update ngIRCd protocol module for current Anope 1.9 - GIT - ---- - modules/protocol/ngircd.cpp | 37 ++++++++++++++++++------------------- - 1 files changed, 18 insertions(+), 19 deletions(-) - -diff --git a/modules/protocol/ngircd.cpp b/modules/protocol/ngircd.cpp -index e546d05..790b8f4 100644 ---- a/modules/protocol/ngircd.cpp -+++ b/modules/protocol/ngircd.cpp -@@ -11,6 +11,8 @@ - - #include "services.h" - #include "modules.h" -+#include "nickserv.h" -+#include "oper.h" - - IRCDVar myIrcd[] = { - {"ngIRCd", /* ircd name */ -@@ -45,14 +47,7 @@ class ngIRCdProto : public IRCDProto - { - void SendAkill(User *u, const XLine *x) - { -- if (SGLine && u == NULL) -- for (Anope::insensitive_map::iterator it = UserListByNick.begin(); it != UserListByNick.end();) -- { -- u = it->second; -- ++it; -- if (SGLine->Check(u) != NULL) -- break; -- } -+ // TODO: ADD SOME CODE - } - - void SendAkillDel(const XLine*) { } -@@ -62,13 +57,16 @@ class ngIRCdProto : public IRCDProto - send_cmd(source ? source->nick : Config->ServerName, "WALLOPS :%s", buf.c_str()); - } - -- void SendJoin(BotInfo *user, Channel *c, const ChannelStatus *status) -+ void SendJoin(User *user, Channel *c, const ChannelStatus *status) - { - send_cmd(user->nick, "JOIN %s", c->name.c_str()); - if (status) -+ { -+ BotInfo *setter = findbot(user->nick); - for (unsigned i = 0; i < ModeManager::ChannelModes.size(); ++i) - if (status->HasFlag(ModeManager::ChannelModes[i]->Name)) -- c->SetMode(user, ModeManager::ChannelModes[i], user->nick, false); -+ c->SetMode(setter, ModeManager::ChannelModes[i], user->nick, false); -+ } - } - - void SendSVSKillInternal(const BotInfo *source, const User *user, const Anope::string &buf) -@@ -84,7 +82,7 @@ class ngIRCdProto : public IRCDProto - - void SendConnect() - { -- send_cmd("", "PASS %s 0210-IRC+ Anope|%s:CLHSo P", uplink_server->password.c_str(), Anope::VersionShort().c_str()); -+ send_cmd("", "PASS %s 0210-IRC+ Anope|%s:CLHSo P", Config->Uplinks[CurrentUplink]->password.c_str(), Anope::VersionShort().c_str()); - /* Make myself known to myself in the serverlist */ - SendServer(Me); - /* finish the enhanced server handshake and register the connection */ -@@ -92,9 +90,11 @@ class ngIRCdProto : public IRCDProto - } - - // Received: :dev.anope.de NICK DukeP 1 ~DukePyro p57ABF9C9.dip.t-dialin.net 1 +i :DukePyrolator -- void SendClientIntroduction(const User *u, const Anope::string &modes) -+ void SendClientIntroduction(const User *u) - { -- EnforceQlinedNick(u->nick, ""); -+ Anope::string modes = "+" + u->GetModes(); -+ XLine x(u->nick, "Reserved for services"); -+ ircdproto->SendSQLine(NULL, &x); - send_cmd(Config->ServerName, "NICK %s 1 %s %s 1 %s :%s", u->nick.c_str(), u->GetIdent().c_str(), u->host.c_str(), modes.c_str(), u->realname.c_str()); - } - -@@ -126,7 +126,7 @@ class ngIRCdProto : public IRCDProto - - void SendNoticeChanopsInternal(const BotInfo *source, const Channel *dest, const Anope::string &buf) - { -- send_cmd(source ? source->nick : Config->s_ChanServ, "NOTICE @%s :%s", dest->name.c_str(), buf.c_str()); -+ send_cmd(source->nick, "NOTICE @%s :%s", dest->name.c_str(), buf.c_str()); - } - - /* INVITE */ -@@ -196,8 +196,8 @@ class ngIRCdIRCdMessage : public IRCdMessage - { - // a new user is connecting to the network - User *user = do_nick("", params[0], params[2], params[3], source, params[6], Anope::CurTime, "", "", "", params[5]); -- if (user) -- validate_user(user); -+ if (user && nickserv) -+ nickserv->Validate(user); - } - else - { -@@ -433,7 +433,7 @@ class ProtongIRCd : public Module - ModeManager::AddUserMode(new UserMode(UMODE_CLOAK, 'x')); - - /* b/e/I */ -- ModeManager::AddChannelMode(new ChannelModeBan(CMODE_BAN, 'b')); -+ ModeManager::AddChannelMode(new ChannelModeList(CMODE_BAN, 'b')); - ModeManager::AddChannelMode(new ChannelModeList(CMODE_INVITEOVERRIDE, 'I')); - - /* v/h/o/a/q */ -@@ -454,13 +454,12 @@ class ProtongIRCd : public Module - } - - public: -- ProtongIRCd(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator), -+ ProtongIRCd(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, PROTOCOL), - message_kick("KICK", event_kick), message_pass("PASS", event_pass), - message_njoin("NJOIN", event_njoin), message_chaninfo("CHANINFO", event_chaninfo), - message_005("005", event_005), message_442("442", event_442), message_376("376", event_376) - { - this->SetAuthor("Anope"); -- this->SetType(PROTOCOL); - - Capab.SetFlag(CAPAB_QS); - --- -1.7.8.3 - diff --git a/contrib/Anope/0004-ngircd-Do-PING-PONG-on-server-burst-to-sync.patch b/contrib/Anope/0004-ngircd-Do-PING-PONG-on-server-burst-to-sync.patch deleted file mode 100644 index 0aec3e9e..00000000 --- a/contrib/Anope/0004-ngircd-Do-PING-PONG-on-server-burst-to-sync.patch +++ /dev/null @@ -1,93 +0,0 @@ -From 88b2b14a76b8ee053b1f6ea64139350260590043 Mon Sep 17 00:00:00 2001 -From: DukePyrolator -Date: Mon, 22 Aug 2011 14:55:07 +0200 -Subject: [PATCH 04/16] ngircd: Do PING-PONG on server burst to "sync servers" - -Imagine we had three servers, A, B & C linked like so: A<->B<->C: - -If Anope is linked to A and B splits from A and then reconnects B -introduces itself, introduces C, sends EOS for C, introduces B's clients -introduces C's clients, sends EOS for B. This causes all of C's clients -to be introduced with their server "not syncing". - -We now send a PING immediately when receiving a new server and then -finish sync once we get a pong back from that server. ---- - modules/protocol/ngircd.cpp | 28 ++++++++++++++++++++++++++-- - 1 files changed, 26 insertions(+), 2 deletions(-) - -diff --git a/modules/protocol/ngircd.cpp b/modules/protocol/ngircd.cpp -index 790b8f4..89aecfd 100644 ---- a/modules/protocol/ngircd.cpp -+++ b/modules/protocol/ngircd.cpp -@@ -108,11 +108,13 @@ class ngIRCdProto : public IRCDProto - - void SendModeInternal(const BotInfo *bi, const Channel *dest, const Anope::string &buf) - { -+Log(LOG_DEBUG) << "SendModeInternal 1"; - send_cmd(bi ? bi->nick : Config->ServerName, "MODE %s %s", dest->name.c_str(), buf.c_str()); - } - - void SendModeInternal(const BotInfo *bi, const User *u, const Anope::string &buf) - { -+Log(LOG_DEBUG) << "SendModeInternal 2"; - send_cmd(bi ? bi->nick : Config->ServerName, "MODE %s %s", u->nick.c_str(), buf.c_str()); - } - -@@ -212,6 +214,8 @@ class ngIRCdIRCdMessage : public IRCdMessage - do_server("", params[0], 0, params[2], params[1]); - else - do_server(source, params[0], params[1].is_pos_number_only() ? convertTo(params[1]) : 0, params[3], params[2]); -+ -+ ircdproto->SendPing(Config->ServerName, params[0]); - return true; - } - -@@ -253,6 +257,25 @@ class ngIRCdIRCdMessage : public IRCdMessage - } - }; - -+/** This is here because: -+ * -+ * If we had three servers, A, B & C linked like so: A<->B<->C -+ * If Anope is linked to A and B splits from A and then reconnects -+ * B introduces itself, introduces C, sends EOS for C, introduces Bs clients -+ * introduces Cs clients, sends EOS for B. This causes all of Cs clients to be introduced -+ * with their server "not syncing". We now send a PING immediately when receiving a new server -+ * and then finish sync once we get a pong back from that server. -+ */ -+bool event_pong(const Anope::string &source, const std::vector ¶ms) -+{ -+ Server *s = Server::Find(source); -+ if (s && !s->IsSynced()) -+ s->Sync(false); -+ return true; -+} -+ -+ -+ - /* - * CHANINFO + - * CHANINFO + : -@@ -416,7 +439,7 @@ bool event_376(const Anope::string &source, const std::vector &pa - class ProtongIRCd : public Module - { - Message message_kick, message_pass, message_njoin, message_chaninfo, message_005, -- message_442, message_376; -+ message_442, message_376, message_pong; - - ngIRCdProto ircd_proto; - ngIRCdIRCdMessage ircd_message; -@@ -457,7 +480,8 @@ class ProtongIRCd : public Module - ProtongIRCd(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, PROTOCOL), - message_kick("KICK", event_kick), message_pass("PASS", event_pass), - message_njoin("NJOIN", event_njoin), message_chaninfo("CHANINFO", event_chaninfo), -- message_005("005", event_005), message_442("442", event_442), message_376("376", event_376) -+ message_005("005", event_005), message_442("442", event_442), message_376("376", event_376), -+ message_pong("PONG", event_pong) - { - this->SetAuthor("Anope"); - --- -1.7.8.3 - diff --git a/contrib/Anope/0005-ngircd-always-prefix-modes-in-CHANINFO-with.patch b/contrib/Anope/0005-ngircd-always-prefix-modes-in-CHANINFO-with.patch deleted file mode 100644 index 27b71638..00000000 --- a/contrib/Anope/0005-ngircd-always-prefix-modes-in-CHANINFO-with.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 0d83f8f9ca0de651d664eca6f467f36df0417f7d Mon Sep 17 00:00:00 2001 -From: Alexander Barton -Date: Mon, 22 Aug 2011 14:59:49 +0200 -Subject: [PATCH 05/16] ngircd: always prefix modes in CHANINFO with "+" - ---- - modules/protocol/ngircd.cpp | 6 ++---- - 1 files changed, 2 insertions(+), 4 deletions(-) - -diff --git a/modules/protocol/ngircd.cpp b/modules/protocol/ngircd.cpp -index 89aecfd..3e5beb3 100644 ---- a/modules/protocol/ngircd.cpp -+++ b/modules/protocol/ngircd.cpp -@@ -139,10 +139,8 @@ Log(LOG_DEBUG) << "SendModeInternal 2"; - - void SendChannel(Channel *c) - { -- Anope::string mlock_modes = get_mlock_modes(c->ci, true); -- if (mlock_modes.empty()) -- mlock_modes = "+"; -- send_cmd(Config->ServerName, "CHANINFO %s %s", c->name.c_str(), mlock_modes.c_str()); -+ Anope::string modes = c->GetModes(true, true); -+ send_cmd(Config->ServerName, "CHANINFO %s +%s", c->name.c_str(), modes.c_str()); - } - void SendTopic(BotInfo *bi, Channel *c) - { --- -1.7.8.3 - diff --git a/contrib/Anope/0006-ngircd-support-user-mode-R-and-channel-mode-R.patch b/contrib/Anope/0006-ngircd-support-user-mode-R-and-channel-mode-R.patch deleted file mode 100644 index 8038555c..00000000 --- a/contrib/Anope/0006-ngircd-support-user-mode-R-and-channel-mode-R.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 1914a36b83b1fc6b4678ef261a1a06eefab9a0ca Mon Sep 17 00:00:00 2001 -From: Alexander Barton -Date: Fri, 26 Aug 2011 17:51:37 +0200 -Subject: [PATCH 06/16] ngircd: support user mode "R" and channel mode "R" - ---- - modules/protocol/ngircd.cpp | 7 ++++--- - 1 files changed, 4 insertions(+), 3 deletions(-) - -diff --git a/modules/protocol/ngircd.cpp b/modules/protocol/ngircd.cpp -index 3e5beb3..7f4186e 100644 ---- a/modules/protocol/ngircd.cpp -+++ b/modules/protocol/ngircd.cpp -@@ -449,26 +449,27 @@ class ProtongIRCd : public Module - ModeManager::AddUserMode(new UserMode(UMODE_INVIS, 'i')); - ModeManager::AddUserMode(new UserMode(UMODE_OPER, 'o')); - ModeManager::AddUserMode(new UserMode(UMODE_RESTRICTED, 'r')); -+ ModeManager::AddUserMode(new UserMode(UMODE_REGISTERED, 'R')); - ModeManager::AddUserMode(new UserMode(UMODE_SNOMASK, 's')); - ModeManager::AddUserMode(new UserMode(UMODE_WALLOPS, 'w')); - ModeManager::AddUserMode(new UserMode(UMODE_CLOAK, 'x')); - -- /* b/e/I */ -+ /* Add modes for ban and invite lists */ - ModeManager::AddChannelMode(new ChannelModeList(CMODE_BAN, 'b')); - ModeManager::AddChannelMode(new ChannelModeList(CMODE_INVITEOVERRIDE, 'I')); - -- /* v/h/o/a/q */ -+ /* Add channel user modes */ - ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_VOICE, 'v', '+')); - ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_OP, 'o', '@')); - - /* Add channel modes */ -- // channel modes: biIklmnoPstvz - ModeManager::AddChannelMode(new ChannelMode(CMODE_INVITE, 'i')); - ModeManager::AddChannelMode(new ChannelModeKey('k')); - ModeManager::AddChannelMode(new ChannelModeParam(CMODE_LIMIT, 'l')); - ModeManager::AddChannelMode(new ChannelMode(CMODE_MODERATED, 'm')); - ModeManager::AddChannelMode(new ChannelMode(CMODE_NOEXTERNAL, 'n')); - ModeManager::AddChannelMode(new ChannelMode(CMODE_PERM, 'P')); -+ ModeManager::AddChannelMode(new ChannelMode(CMODE_REGISTEREDONLY, 'R')); - ModeManager::AddChannelMode(new ChannelMode(CMODE_SECRET, 's')); - ModeManager::AddChannelMode(new ChannelMode(CMODE_TOPIC, 't')); - ModeManager::AddChannelMode(new ChannelMode(CMODE_SSL, 'z')); --- -1.7.8.3 - diff --git a/contrib/Anope/0007-ngircd-Fix-handling-of-JOIN-commands.patch b/contrib/Anope/0007-ngircd-Fix-handling-of-JOIN-commands.patch deleted file mode 100644 index f507499c..00000000 --- a/contrib/Anope/0007-ngircd-Fix-handling-of-JOIN-commands.patch +++ /dev/null @@ -1,96 +0,0 @@ -From 4c9300ede35310ee5642f34e5ac227bd96fc7384 Mon Sep 17 00:00:00 2001 -From: DukePyrolator -Date: Sun, 4 Sep 2011 15:08:55 +0200 -Subject: [PATCH 07/16] ngircd: Fix handling of JOIN commands - ---- - modules/protocol/ngircd.cpp | 60 +++++++++++++++++++++++++++++++++++++++--- - 1 files changed, 55 insertions(+), 5 deletions(-) - -diff --git a/modules/protocol/ngircd.cpp b/modules/protocol/ngircd.cpp -index 7f4186e..3024fdd 100644 ---- a/modules/protocol/ngircd.cpp -+++ b/modules/protocol/ngircd.cpp -@@ -240,16 +240,58 @@ class ngIRCdIRCdMessage : public IRCdMessage - { - if (!params.empty()) - { -+ Anope::string channel, mode; - size_t pos = params[0].find('\7'); - if (pos != Anope::string::npos) - { -- Anope::string channel = params[0].substr(0, pos); -- Anope::string mode = '+' + params[0].substr(pos, params[0].length()) + " " + source; -- do_join(source, channel, ""); -- do_cmode(source, channel, mode, ""); -+ channel = params[0].substr(0, pos); -+ mode = '+' + params[0].substr(pos+1, params[0].length()) + " " + source; - } - else -- do_join(source, params[0], ""); -+ channel = params[0]; -+ -+ Channel *c = findchan(channel); -+ -+ if (!c) -+ { -+ c = new Channel(channel, Anope::CurTime); -+ c->SetFlag(CH_SYNCING); -+ } -+ -+ User *u = finduser(source); -+ -+ if (!u) -+ { -+ Log(LOG_DEBUG) << "JOIN for nonexistant user " << source << " on " << channel; -+ return false; -+ } -+ -+ EventReturn MOD_RESULT; -+ FOREACH_RESULT(I_OnPreJoinChannel, OnPreJoinChannel(u, c)); -+ -+ /* Add the user to the channel */ -+ c->JoinUser(u); -+ -+ /* set the usermodes to the channel */ -+ do_cmode(source, channel, mode, ""); -+ -+ /* Now set whatever modes this user is allowed to have on the channel */ -+ chan_set_correct_modes(u, c, 1); -+ -+ /* Check to see if modules want the user to join, if they do -+ * check to see if they are allowed to join (CheckKick will kick/ban them) -+ * Don't trigger OnJoinChannel event then as the user will be destroyed -+ */ -+ if (MOD_RESULT != EVENT_STOP && c->ci && c->ci->CheckKick(u)) -+ return false; -+ -+ FOREACH_MOD(I_OnJoinChannel, OnJoinChannel(u, c)); -+ -+ if (c->HasFlag(CH_SYNCING)) -+ { -+ c->UnsetFlag(CH_SYNCING); -+ c->Sync(); -+ } - } - return true; - } -@@ -491,7 +533,15 @@ class ProtongIRCd : public Module - pmodule_ircd_message(&this->ircd_message); - - this->AddModes(); -+ -+ ModuleManager::Attach(I_OnUserNickChange, this); - } -+ -+ void OnUserNickChange(User *u, const Anope::string &) -+ { -+ u->RemoveModeInternal(ModeManager::FindUserModeByName(UMODE_REGISTERED)); -+ } -+ - }; - - MODULE_INIT(ProtongIRCd) --- -1.7.8.3 - diff --git a/contrib/Anope/0008-ngircd-Allow-setting-modes-by-clients-on-burst.patch b/contrib/Anope/0008-ngircd-Allow-setting-modes-by-clients-on-burst.patch deleted file mode 100644 index eb2c214d..00000000 --- a/contrib/Anope/0008-ngircd-Allow-setting-modes-by-clients-on-burst.patch +++ /dev/null @@ -1,38 +0,0 @@ -From d363ebd841ea7e1db3c62730023759d69520e0d8 Mon Sep 17 00:00:00 2001 -From: Alexander Barton -Date: Tue, 27 Sep 2011 15:08:09 +0200 -Subject: [PATCH 08/16] ngircd: Allow setting modes by clients on burst - -This change is required by commit 43201ead9575a for the ngIRCd protocol -module as well. ---- - modules/protocol/ngircd.cpp | 7 +++++-- - 1 files changed, 5 insertions(+), 2 deletions(-) - -diff --git a/modules/protocol/ngircd.cpp b/modules/protocol/ngircd.cpp -index 3024fdd..2774168 100644 ---- a/modules/protocol/ngircd.cpp -+++ b/modules/protocol/ngircd.cpp -@@ -57,14 +57,17 @@ class ngIRCdProto : public IRCDProto - send_cmd(source ? source->nick : Config->ServerName, "WALLOPS :%s", buf.c_str()); - } - -- void SendJoin(User *user, Channel *c, const ChannelStatus *status) -+ void SendJoin(User *user, Channel *c, ChannelStatus *status) - { - send_cmd(user->nick, "JOIN %s", c->name.c_str()); - if (status) - { -+ ChannelStatus cs = *status; -+ status->ClearFlags(); -+ - BotInfo *setter = findbot(user->nick); - for (unsigned i = 0; i < ModeManager::ChannelModes.size(); ++i) -- if (status->HasFlag(ModeManager::ChannelModes[i]->Name)) -+ if (cs.HasFlag(ModeManager::ChannelModes[i]->Name)) - c->SetMode(setter, ModeManager::ChannelModes[i], user->nick, false); - } - } --- -1.7.8.3 - diff --git a/contrib/Anope/0009-ngircd-Update-protocol-module-for-current-Anope.patch b/contrib/Anope/0009-ngircd-Update-protocol-module-for-current-Anope.patch deleted file mode 100644 index b6a003ab..00000000 --- a/contrib/Anope/0009-ngircd-Update-protocol-module-for-current-Anope.patch +++ /dev/null @@ -1,143 +0,0 @@ -From e74a5303f2357f4a9915bb91038a2e326323db3c Mon Sep 17 00:00:00 2001 -From: Alexander Barton -Date: Fri, 25 Nov 2011 19:16:37 +0100 -Subject: [PATCH 09/16] ngircd: Update protocol module for current Anope 1.9 - GIT - -This changes are rquired by: - - - b14f5ea88: Fixed accidentally clearing botmodes when joins are sent - - cef3eb78d: Remove send_cmd and replace it with a stringstream - - ddc3c2f38: Added options:nonicknameownership config option ---- - modules/protocol/ngircd.cpp | 54 ++++++++++++++++++++++-------------------- - 1 files changed, 28 insertions(+), 26 deletions(-) - -diff --git a/modules/protocol/ngircd.cpp b/modules/protocol/ngircd.cpp -index 2774168..55cb8d7 100644 ---- a/modules/protocol/ngircd.cpp -+++ b/modules/protocol/ngircd.cpp -@@ -54,16 +54,22 @@ class ngIRCdProto : public IRCDProto - - void SendGlobopsInternal(const BotInfo *source, const Anope::string &buf) - { -- send_cmd(source ? source->nick : Config->ServerName, "WALLOPS :%s", buf.c_str()); -+ UplinkSocket::Message(source ? source->nick : Config->ServerName) << "WALLOPS :" << buf; - } - -- void SendJoin(User *user, Channel *c, ChannelStatus *status) -+ void SendJoin(User *user, Channel *c, const ChannelStatus *status) - { -- send_cmd(user->nick, "JOIN %s", c->name.c_str()); -+ UplinkSocket::Message(user->nick) << "JOIN " << c->name; - if (status) - { -+ /* First save the channel status incase uc->Status == status */ - ChannelStatus cs = *status; -- status->ClearFlags(); -+ /* If the user is internally on the channel with flags, kill them so that -+ * the stacker will allow this. -+ */ -+ UserContainer *uc = c->FindUser(user); -+ if (uc != NULL) -+ uc->Status->ClearFlags(); - - BotInfo *setter = findbot(user->nick); - for (unsigned i = 0; i < ModeManager::ChannelModes.size(); ++i) -@@ -74,18 +80,18 @@ class ngIRCdProto : public IRCDProto - - void SendSVSKillInternal(const BotInfo *source, const User *user, const Anope::string &buf) - { -- send_cmd(source ? source->nick : Config->ServerName, "KILL %s :%s", user->nick.c_str(), buf.c_str()); -+ UplinkSocket::Message(source ? source->nick : Config->ServerName) << "KILL " << user->nick << " :" << buf; - } - - /* SERVER name hop descript */ - void SendServer(const Server *server) - { -- send_cmd("", "SERVER %s %d :%s", server->GetName().c_str(), server->GetHops(), server->GetDescription().c_str()); -+ UplinkSocket::Message() << "SERVER " << server->GetName() << " " << server->GetHops() << " :" << server->GetDescription(); - } - - void SendConnect() - { -- send_cmd("", "PASS %s 0210-IRC+ Anope|%s:CLHSo P", Config->Uplinks[CurrentUplink]->password.c_str(), Anope::VersionShort().c_str()); -+ UplinkSocket::Message() << "PASS " << Config->Uplinks[CurrentUplink]->password << " 0210-IRC+ Anope|" << Anope::VersionShort() << ":CLHSo P"; - /* Make myself known to myself in the serverlist */ - SendServer(Me); - /* finish the enhanced server handshake and register the connection */ -@@ -98,56 +104,52 @@ class ngIRCdProto : public IRCDProto - Anope::string modes = "+" + u->GetModes(); - XLine x(u->nick, "Reserved for services"); - ircdproto->SendSQLine(NULL, &x); -- send_cmd(Config->ServerName, "NICK %s 1 %s %s 1 %s :%s", u->nick.c_str(), u->GetIdent().c_str(), u->host.c_str(), modes.c_str(), u->realname.c_str()); -+ UplinkSocket::Message(Config->ServerName) << "NICK " << u->nick << " 1 " << u->GetIdent() << " " << u->host << " 1 " << modes << " :" << u->realname; - } - - void SendPartInternal(const BotInfo *bi, const Channel *chan, const Anope::string &buf) - { - if (!buf.empty()) -- send_cmd(bi->nick, "PART %s :%s", chan->name.c_str(), buf.c_str()); -+ UplinkSocket::Message(bi->nick) << "PART " << chan->name << " :" << buf; - else -- send_cmd(bi->nick, "PART %s", chan->name.c_str()); -+ UplinkSocket::Message(bi->nick) << "PART " << chan->name; - } - - void SendModeInternal(const BotInfo *bi, const Channel *dest, const Anope::string &buf) - { --Log(LOG_DEBUG) << "SendModeInternal 1"; -- send_cmd(bi ? bi->nick : Config->ServerName, "MODE %s %s", dest->name.c_str(), buf.c_str()); -+ UplinkSocket::Message(bi ? bi->nick : Config->ServerName) << "MODE " << dest->name << " " << buf; - } - - void SendModeInternal(const BotInfo *bi, const User *u, const Anope::string &buf) - { --Log(LOG_DEBUG) << "SendModeInternal 2"; -- send_cmd(bi ? bi->nick : Config->ServerName, "MODE %s %s", u->nick.c_str(), buf.c_str()); -+ UplinkSocket::Message(bi ? bi->nick : Config->ServerName) << "MODE " << u->nick << " " << buf; - } - - void SendKickInternal(const BotInfo *bi, const Channel *chan, const User *user, const Anope::string &buf) - { - if (!buf.empty()) -- send_cmd(bi->nick, "KICK %s %s :%s", chan->name.c_str(), user->nick.c_str(), buf.c_str()); -+ UplinkSocket::Message(bi->nick) << "KICK " << chan->name << " " << user->nick << " :" << buf; - else -- send_cmd(bi->nick, "KICK %s %s", chan->name.c_str(), user->nick.c_str()); -+ UplinkSocket::Message(bi->nick) << "KICK " << chan->name << " " << user->nick; - } - -- void SendNoticeChanopsInternal(const BotInfo *source, const Channel *dest, const Anope::string &buf) -+ void SendChannel(Channel *c) - { -- send_cmd(source->nick, "NOTICE @%s :%s", dest->name.c_str(), buf.c_str()); -+ Anope::string modes = c->GetModes(true, true); -+ UplinkSocket::Message(Config->ServerName) << "CHANINFO " << c->name << " +" << modes; - } - -- /* INVITE */ -- void SendInvite(BotInfo *source, const Anope::string &chan, const Anope::string &nick) -+ void SendTopic(BotInfo *bi, Channel *c) - { -- send_cmd(source->nick, "INVITE %s %s", nick.c_str(), chan.c_str()); -+ UplinkSocket::Message(bi->nick) << "TOPIC " << c->name << " :" << c->topic; - } - -- void SendChannel(Channel *c) -+ void SendLogin(User *u) - { -- Anope::string modes = c->GetModes(true, true); -- send_cmd(Config->ServerName, "CHANINFO %s +%s", c->name.c_str(), modes.c_str()); - } -- void SendTopic(BotInfo *bi, Channel *c) -+ -+ void SendLogout(User *u) - { -- send_cmd(bi->nick, "TOPIC %s :%s", c->name.c_str(), c->topic.c_str()); - } - }; - --- -1.7.8.3 - diff --git a/contrib/Anope/0010-ngircd-Add-ProtongIRCd.patch b/contrib/Anope/0010-ngircd-Add-ProtongIRCd.patch deleted file mode 100644 index 42cd4a51..00000000 --- a/contrib/Anope/0010-ngircd-Add-ProtongIRCd.patch +++ /dev/null @@ -1,57 +0,0 @@ -From d2c45d7c578ec684d3b471020f631847316de196 Mon Sep 17 00:00:00 2001 -From: Alexander Barton -Date: Fri, 25 Nov 2011 19:17:19 +0100 -Subject: [PATCH 10/16] ngircd: Add ~ProtongIRCd() - ---- - modules/protocol/ngircd.cpp | 13 ++++++++----- - 1 files changed, 8 insertions(+), 5 deletions(-) - -diff --git a/modules/protocol/ngircd.cpp b/modules/protocol/ngircd.cpp -index 55cb8d7..5fd62db 100644 ---- a/modules/protocol/ngircd.cpp -+++ b/modules/protocol/ngircd.cpp -@@ -302,8 +302,7 @@ class ngIRCdIRCdMessage : public IRCdMessage - } - }; - --/** This is here because: -- * -+/* - * If we had three servers, A, B & C linked like so: A<->B<->C - * If Anope is linked to A and B splits from A and then reconnects - * B introduces itself, introduces C, sends EOS for C, introduces Bs clients -@@ -319,8 +318,6 @@ bool event_pong(const Anope::string &source, const std::vector &p - return true; - } - -- -- - /* - * CHANINFO + - * CHANINFO + : -@@ -480,7 +477,6 @@ bool event_376(const Anope::string &source, const std::vector &pa - return true; - } - -- - class ProtongIRCd : public Module - { - Message message_kick, message_pass, message_njoin, message_chaninfo, message_005, -@@ -542,6 +538,13 @@ class ProtongIRCd : public Module - ModuleManager::Attach(I_OnUserNickChange, this); - } - -+ ~ProtongIRCd() -+ { -+ pmodule_ircd_var(NULL); -+ pmodule_ircd_proto(NULL); -+ pmodule_ircd_message(NULL); -+ } -+ - void OnUserNickChange(User *u, const Anope::string &) - { - u->RemoveModeInternal(ModeManager::FindUserModeByName(UMODE_REGISTERED)); --- -1.7.8.3 - diff --git a/contrib/Anope/0011-ngircd-Update-protocol-module-for-current-Anope.patch b/contrib/Anope/0011-ngircd-Update-protocol-module-for-current-Anope.patch deleted file mode 100644 index bbf2b633..00000000 --- a/contrib/Anope/0011-ngircd-Update-protocol-module-for-current-Anope.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 4dc5a3d3e2fbb218461d9459bff1c0a392a75881 Mon Sep 17 00:00:00 2001 -From: Alexander Barton -Date: Sat, 31 Dec 2011 16:12:52 +0100 -Subject: [PATCH 11/16] ngircd: Update protocol module for current Anope 1.9 - GIT - -This changes are rquired by: - - - 150831c1a: Made capab management a bit simplier ---- - modules/protocol/ngircd.cpp | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -diff --git a/modules/protocol/ngircd.cpp b/modules/protocol/ngircd.cpp -index 5fd62db..9c26ec8 100644 ---- a/modules/protocol/ngircd.cpp -+++ b/modules/protocol/ngircd.cpp -@@ -527,7 +527,7 @@ class ProtongIRCd : public Module - { - this->SetAuthor("Anope"); - -- Capab.SetFlag(CAPAB_QS); -+ Capab.insert("QS"); - - pmodule_ircd_var(myIrcd); - pmodule_ircd_proto(&this->ircd_proto); --- -1.7.8.3 - diff --git a/contrib/Anope/0012-ngircd-Channel-mode-r-is-supported-now.patch b/contrib/Anope/0012-ngircd-Channel-mode-r-is-supported-now.patch deleted file mode 100644 index 2127c269..00000000 --- a/contrib/Anope/0012-ngircd-Channel-mode-r-is-supported-now.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 99c18cafdee28bfb17fad5f0526b3ed5d1f5f312 Mon Sep 17 00:00:00 2001 -From: Alexander Barton -Date: Sat, 31 Dec 2011 16:17:50 +0100 -Subject: [PATCH 12/16] ngircd: let Anope know that channel mode "r" is - supported - ---- - modules/protocol/ngircd.cpp | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -diff --git a/modules/protocol/ngircd.cpp b/modules/protocol/ngircd.cpp -index 9c26ec8..6155667 100644 ---- a/modules/protocol/ngircd.cpp -+++ b/modules/protocol/ngircd.cpp -@@ -512,6 +512,7 @@ class ProtongIRCd : public Module - ModeManager::AddChannelMode(new ChannelMode(CMODE_MODERATED, 'm')); - ModeManager::AddChannelMode(new ChannelMode(CMODE_NOEXTERNAL, 'n')); - ModeManager::AddChannelMode(new ChannelMode(CMODE_PERM, 'P')); -+ ModeManager::AddChannelMode(new ChannelModeRegistered('r')); - ModeManager::AddChannelMode(new ChannelMode(CMODE_REGISTEREDONLY, 'R')); - ModeManager::AddChannelMode(new ChannelMode(CMODE_SECRET, 's')); - ModeManager::AddChannelMode(new ChannelMode(CMODE_TOPIC, 't')); --- -1.7.8.3 - diff --git a/contrib/Anope/0013-ngircd-Update-copyright-notice.patch b/contrib/Anope/0013-ngircd-Update-copyright-notice.patch deleted file mode 100644 index 759076d4..00000000 --- a/contrib/Anope/0013-ngircd-Update-copyright-notice.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 5a19b69f0daceb5b12ec751bc919519a7f712f2d Mon Sep 17 00:00:00 2001 -From: Alexander Barton -Date: Sun, 15 Jan 2012 13:36:14 +0100 -Subject: [PATCH 13/16] ngircd: Update copyright notice - ---- - modules/protocol/ngircd.cpp | 7 ++++--- - 1 files changed, 4 insertions(+), 3 deletions(-) - -diff --git a/modules/protocol/ngircd.cpp b/modules/protocol/ngircd.cpp -index 6155667..024c61d 100644 ---- a/modules/protocol/ngircd.cpp -+++ b/modules/protocol/ngircd.cpp -@@ -1,7 +1,8 @@ --/* ngIRCd IRCD functions -+/* -+ * ngIRCd Protocol module for Anope IRC Services - * -- * (C) 2003-2011 Anope Team -- * Contact us at team@anope.org -+ * (C) 2011-2012 Alexander Barton -+ * (C) 2011 Anope Team - * - * Please read COPYING and README for further details. - * --- -1.7.8.3 - diff --git a/contrib/Anope/0014-ngircd-set-unset-GLINE-s-on-AKILL-commands.patch b/contrib/Anope/0014-ngircd-set-unset-GLINE-s-on-AKILL-commands.patch deleted file mode 100644 index c02ac6e8..00000000 --- a/contrib/Anope/0014-ngircd-set-unset-GLINE-s-on-AKILL-commands.patch +++ /dev/null @@ -1,35 +0,0 @@ -From acc24a7f4488f6ef0fb240a76766db4220b62d53 Mon Sep 17 00:00:00 2001 -From: Alexander Barton -Date: Sun, 22 Jan 2012 19:05:28 +0100 -Subject: [PATCH 14/16] ngircd: set/unset GLINE's on AKILL commands - ---- - modules/protocol/ngircd.cpp | 10 ++++++++-- - 1 files changed, 8 insertions(+), 2 deletions(-) - -diff --git a/modules/protocol/ngircd.cpp b/modules/protocol/ngircd.cpp -index 024c61d..3bc3812 100644 ---- a/modules/protocol/ngircd.cpp -+++ b/modules/protocol/ngircd.cpp -@@ -48,10 +48,16 @@ class ngIRCdProto : public IRCDProto - { - void SendAkill(User *u, const XLine *x) - { -- // TODO: ADD SOME CODE -+ // Calculate the time left before this would expire, capping it at 2 days -+ time_t timeleft = x->Expires - Anope::CurTime; -+ if (timeleft > 172800 || !x->Expires) -+ timeleft = 172800; -+ UplinkSocket::Message(Config->ServerName) << "GLINE " << x->Mask << " " << timeleft << " :" << x->Reason << " (" << x->By << ")"; - } - -- void SendAkillDel(const XLine*) { } -+ void SendAkillDel(const XLine *x) { -+ UplinkSocket::Message(Config->ServerName) << "GLINE " << x->Mask; -+ } - - void SendGlobopsInternal(const BotInfo *source, const Anope::string &buf) - { --- -1.7.8.3 - diff --git a/contrib/Anope/0015-ngircd-ngIRCd-supports-channel-mode-e-now.patch b/contrib/Anope/0015-ngircd-ngIRCd-supports-channel-mode-e-now.patch deleted file mode 100644 index 7a25c9a9..00000000 --- a/contrib/Anope/0015-ngircd-ngIRCd-supports-channel-mode-e-now.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 3a61b190db79848d4519296432ebb2ab714c42b7 Mon Sep 17 00:00:00 2001 -From: Alexander Barton -Date: Sun, 22 Jan 2012 19:06:34 +0100 -Subject: [PATCH 15/16] ngircd: ngIRCd supports channel mode 'e' now - ---- - modules/protocol/ngircd.cpp | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -diff --git a/modules/protocol/ngircd.cpp b/modules/protocol/ngircd.cpp -index 3bc3812..0f87cbd 100644 ---- a/modules/protocol/ngircd.cpp -+++ b/modules/protocol/ngircd.cpp -@@ -504,8 +504,9 @@ class ProtongIRCd : public Module - ModeManager::AddUserMode(new UserMode(UMODE_WALLOPS, 'w')); - ModeManager::AddUserMode(new UserMode(UMODE_CLOAK, 'x')); - -- /* Add modes for ban and invite lists */ -+ /* Add modes for ban, exception, and invite lists */ - ModeManager::AddChannelMode(new ChannelModeList(CMODE_BAN, 'b')); -+ ModeManager::AddChannelMode(new ChannelModeList(CMODE_EXCEPT, 'e')); - ModeManager::AddChannelMode(new ChannelModeList(CMODE_INVITEOVERRIDE, 'I')); - - /* Add channel user modes */ --- -1.7.8.3 - diff --git a/contrib/Anope/0016-ngircd-support-SQUERY-command.patch b/contrib/Anope/0016-ngircd-support-SQUERY-command.patch deleted file mode 100644 index a3346a4a..00000000 --- a/contrib/Anope/0016-ngircd-support-SQUERY-command.patch +++ /dev/null @@ -1,35 +0,0 @@ -From a7c48fcf47af757cf1b4eeaa6bcc96f4ae1f7410 Mon Sep 17 00:00:00 2001 -From: Alexander Barton -Date: Sat, 4 Feb 2012 11:13:36 +0100 -Subject: [PATCH 16/16] ngircd: support SQUERY command - -Thanks to DukePyrolator for explaining these changes to me. ---- - modules/protocol/ngircd.cpp | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/modules/protocol/ngircd.cpp b/modules/protocol/ngircd.cpp -index 0f87cbd..530686e 100644 ---- a/modules/protocol/ngircd.cpp -+++ b/modules/protocol/ngircd.cpp -@@ -487,7 +487,7 @@ bool event_376(const Anope::string &source, const std::vector &pa - class ProtongIRCd : public Module - { - Message message_kick, message_pass, message_njoin, message_chaninfo, message_005, -- message_442, message_376, message_pong; -+ message_442, message_376, message_pong, message_squery; - - ngIRCdProto ircd_proto; - ngIRCdIRCdMessage ircd_message; -@@ -532,7 +532,7 @@ class ProtongIRCd : public Module - message_kick("KICK", event_kick), message_pass("PASS", event_pass), - message_njoin("NJOIN", event_njoin), message_chaninfo("CHANINFO", event_chaninfo), - message_005("005", event_005), message_442("442", event_442), message_376("376", event_376), -- message_pong("PONG", event_pong) -+ message_pong("PONG", event_pong), message_squery("SQUERY", ::OnPrivmsg) - { - this->SetAuthor("Anope"); - --- -1.7.8.3 - diff --git a/contrib/Anope/Makefile.am b/contrib/Anope/Makefile.am deleted file mode 100644 index 9da78a25..00000000 --- a/contrib/Anope/Makefile.am +++ /dev/null @@ -1,34 +0,0 @@ -# -# ngIRCd -- The Next Generation IRC Daemon -# Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# Please read the file COPYING, README and AUTHORS for more information. -# - -EXTRA_DIST = \ - README \ - 0001-Revert-Removed-ngircd.patch \ - 0002-ngircd-whitespace-fixes.patch \ - 0003-Update-ngIRCd-protocol-module-for-current-Anope.patch \ - 0004-ngircd-Do-PING-PONG-on-server-burst-to-sync.patch \ - 0005-ngircd-always-prefix-modes-in-CHANINFO-with.patch \ - 0006-ngircd-support-user-mode-R-and-channel-mode-R.patch \ - 0007-ngircd-Fix-handling-of-JOIN-commands.patch \ - 0008-ngircd-Allow-setting-modes-by-clients-on-burst.patch \ - 0009-ngircd-Update-protocol-module-for-current-Anope.patch \ - 0010-ngircd-Add-ProtongIRCd.patch \ - 0011-ngircd-Update-protocol-module-for-current-Anope.patch \ - 0012-ngircd-Channel-mode-r-is-supported-now.patch \ - 0013-ngircd-Update-copyright-notice.patch \ - 0014-ngircd-set-unset-GLINE-s-on-AKILL-commands.patch \ - 0015-ngircd-ngIRCd-supports-channel-mode-e-now.patch \ - 0016-ngircd-support-SQUERY-command.patch - -maintainer-clean-local: - rm -f Makefile Makefile.in - -# -eof- diff --git a/contrib/Anope/README b/contrib/Anope/README deleted file mode 100644 index 50f025c7..00000000 --- a/contrib/Anope/README +++ /dev/null @@ -1,35 +0,0 @@ - - ngIRCd - Next Generation IRC Server - http://ngircd.barton.de/ - - (c)2001-2012 Alexander Barton and Contributors. - ngIRCd is free software and published under the - terms of the GNU General Public License. - - -- contrib/Anope/README -- - - -This directory contains two preliminary patches that (re-) add a ngIRCd -protocol module to the Anope 1.9 development branch. It has been tested -with Anope 1.9.6, there is no guarantee that it will work with other -versions as Anope 1.9.x is under heavy development ... - -To build this Anope protocol module, you have to - - - Download the Anope 1.9.x sources (only tested with 1.9.6!), - - Patch in the ngIRCd protocol module, - - Build and install Anope as usual, - - Configure Anope as usual, use "ngircd" as protocol module. - -So the command sequence can be something like this: - - $ tar xzf anope-1.9.6-source.tar.gz - $ cd anope-1.9.6-source - $ for p in .../ngircd/contrib/Anope/*.patch ; do patch -p1 < $p ; done - $ ./Config - $ cd build - $ make - $ make install - -Please have a look at the file doc/Services.txt for more information about -how to set up ngIRCd and Anope. diff --git a/contrib/Makefile.am b/contrib/Makefile.am index 99ab6844..09b43a68 100644 --- a/contrib/Makefile.am +++ b/contrib/Makefile.am @@ -1,6 +1,6 @@ # # ngIRCd -- The Next Generation IRC Daemon -# Copyright (c)2001-2011 Alexander Barton (alex@barton.de) and Contributors +# Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -9,7 +9,7 @@ # Please read the file COPYING, README and AUTHORS for more information. # -SUBDIRS = Anope Debian MacOSX +SUBDIRS = Debian MacOSX EXTRA_DIST = README \ ngindent \ diff --git a/contrib/README b/contrib/README index 6097baea..1aebd1eb 100644 --- a/contrib/README +++ b/contrib/README @@ -9,9 +9,6 @@ -- Contributions -- -Anope/ - - A preliminary patch that adds a ngIRCd protocol module to Anope 1.9. - Debian/ - Various files for building Debian GNU/Linux packages (".deb's").