mirror of
https://github.com/osmarks/ngircd.git
synced 2025-01-31 17:49:11 +00:00
a9cbb375b7
Filenames have been too long and couldn't be stored in all tar archive formats ...
144 lines
5.9 KiB
Diff
144 lines
5.9 KiB
Diff
From e74a5303f2357f4a9915bb91038a2e326323db3c Mon Sep 17 00:00:00 2001
|
|
From: Alexander Barton <alex@barton.de>
|
|
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
|
|
|