commit a9cbb375b77576c371c0c9b48e8e8cf64f7731a4 from: Alexander Barton date: Sun Oct 07 10:06:11 2012 UTC Shorten filenames of Anope protocol module patchfiles Filenames have been too long and couldn't be stored in all tar archive formats ... commit - 161adbb1aa6235acda9677ab14edd19581d9fcf4 commit + a9cbb375b77576c371c0c9b48e8e8cf64f7731a4 blob - c4ea0e6d6bf4577bdba5ae75890f12a31a197e64 (mode 644) blob + /dev/null --- contrib/Anope/0003-Update-ngIRCd-protocol-module-for-current-Anope-1.9.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 - blob - /dev/null blob + c4ea0e6d6bf4577bdba5ae75890f12a31a197e64 (mode 644) --- /dev/null +++ contrib/Anope/0003-Update-ngIRCd-protocol-module-for-current-Anope.patch @@ -0,0 +1,128 @@ +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 + blob - 0aec3e9e15a8968652ad14b347fbfd85245a61d6 (mode 644) blob + /dev/null --- contrib/Anope/0004-ngircd-Do-PING-PONG-on-server-burst-to-sync-servers.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 - blob - /dev/null blob + 0aec3e9e15a8968652ad14b347fbfd85245a61d6 (mode 644) --- /dev/null +++ contrib/Anope/0004-ngircd-Do-PING-PONG-on-server-burst-to-sync.patch @@ -0,0 +1,93 @@ +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 + blob - b6a003abec5157bd87947da71e81bd12eff4e998 (mode 644) blob + /dev/null --- contrib/Anope/0009-ngircd-Update-protocol-module-for-current-Anope-1.9.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 - blob - /dev/null blob + b6a003abec5157bd87947da71e81bd12eff4e998 (mode 644) --- /dev/null +++ contrib/Anope/0009-ngircd-Update-protocol-module-for-current-Anope.patch @@ -0,0 +1,143 @@ +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 + blob - bbf2b633c55ade60b67395b017872f71bc00e34f (mode 644) blob + /dev/null --- contrib/Anope/0011-ngircd-Update-protocol-module-for-current-Anope-1.9.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 - blob - /dev/null blob + bbf2b633c55ade60b67395b017872f71bc00e34f (mode 644) --- /dev/null +++ contrib/Anope/0011-ngircd-Update-protocol-module-for-current-Anope.patch @@ -0,0 +1,29 @@ +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 + blob - 607f0bcf346e3f1d1c1706b2c4ad9458b930f0b9 blob + 9da78a25c02bf8ce54b5b75d9a1b8a8e8472750c --- contrib/Anope/Makefile.am +++ contrib/Anope/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 @@ -13,15 +13,15 @@ EXTRA_DIST = \ README \ 0001-Revert-Removed-ngircd.patch \ 0002-ngircd-whitespace-fixes.patch \ - 0003-Update-ngIRCd-protocol-module-for-current-Anope-1.9.patch \ - 0004-ngircd-Do-PING-PONG-on-server-burst-to-sync-servers.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-1.9.patch \ + 0009-ngircd-Update-protocol-module-for-current-Anope.patch \ 0010-ngircd-Add-ProtongIRCd.patch \ - 0011-ngircd-Update-protocol-module-for-current-Anope-1.9.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 \