summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/messages.h7
-rw-r--r--modules/protocol/bahamut.cpp1
-rw-r--r--modules/protocol/inspircd-ts6.h2
-rw-r--r--modules/protocol/inspircd11.cpp9
-rw-r--r--modules/protocol/inspircd12.cpp1
-rw-r--r--modules/protocol/inspircd20.cpp1
-rw-r--r--modules/protocol/plexus.cpp1
-rw-r--r--modules/protocol/ratbox.cpp1
-rw-r--r--modules/protocol/unreal.cpp14
-rw-r--r--src/messages.cpp19
10 files changed, 34 insertions, 22 deletions
diff --git a/include/messages.h b/include/messages.h
index 115f659af..c46d15de9 100644
--- a/include/messages.h
+++ b/include/messages.h
@@ -33,6 +33,13 @@ struct CoreIRCDMessageJoin : IRCDMessage
bool Run(MessageSource &source, const std::vector<Anope::string> &params) anope_override;
};
+struct CoreIRCDMessageKick : IRCDMessage
+{
+ CoreIRCDMessageKick(const Anope::string &mname = "KICK") : IRCDMessage(mname, 2) { SetFlag(IRCDMESSAGE_SOFT_LIMIT); }
+
+ bool Run(MessageSource &source, const std::vector<Anope::string> &params) anope_override;
+};
+
struct CoreIRCDMessageKill : IRCDMessage
{
CoreIRCDMessageKill(const Anope::string &mname = "KILL") : IRCDMessage(mname, 2) { }
diff --git a/modules/protocol/bahamut.cpp b/modules/protocol/bahamut.cpp
index 5ac50bf32..6f785b37e 100644
--- a/modules/protocol/bahamut.cpp
+++ b/modules/protocol/bahamut.cpp
@@ -568,6 +568,7 @@ class ProtoBahamut : public Module
CoreIRCDMessageCapab core_message_capab;
CoreIRCDMessageError core_message_error;
CoreIRCDMessageJoin core_message_join;
+ CoreIRCDMessageKick core_message_kick;
CoreIRCDMessageKill core_message_kill;
CoreIRCDMessageMOTD core_message_motd;
CoreIRCDMessagePart core_message_part;
diff --git a/modules/protocol/inspircd-ts6.h b/modules/protocol/inspircd-ts6.h
index bbe687b07..d011bf70b 100644
--- a/modules/protocol/inspircd-ts6.h
+++ b/modules/protocol/inspircd-ts6.h
@@ -94,7 +94,7 @@ class InspIRCdTS6Proto : public IRCDProto
void SendTopic(BotInfo *whosets, Channel *c) anope_override
{
- UplinkSocket::Message(whosets) << "FTOPIC " << c->name << " " << Anope::CurTime << " " << c->topic_setter << " :" << c->topic;
+ UplinkSocket::Message(whosets) << "FTOPIC " << c->name << " " << c->topic_time << " " << c->topic_setter << " :" << c->topic;
}
void SendVhostDel(User *u) anope_override
diff --git a/modules/protocol/inspircd11.cpp b/modules/protocol/inspircd11.cpp
index e3c121f9c..1eb385e4b 100644
--- a/modules/protocol/inspircd11.cpp
+++ b/modules/protocol/inspircd11.cpp
@@ -196,14 +196,6 @@ class InspIRCdProto : public IRCDProto
UplinkSocket::Message(u) << "OPERTYPE Service";
}
- void SendKickInternal(const BotInfo *source, const Channel *chan, const User *user, const Anope::string &buf) anope_override
- {
- if (!buf.empty())
- UplinkSocket::Message(source) << "KICK " << chan->name << " " << user->nick << " :" << buf;
- else
- UplinkSocket::Message(source) << "KICK " << chan->name << " " << user->nick << " :" << user->nick;
- }
-
/* SERVER services-dev.chatspike.net password 0 :Description here */
void SendServer(const Server *server) anope_override
{
@@ -902,6 +894,7 @@ class ProtoInspIRCd : public Module
CoreIRCDMessageCapab core_message_capab;
CoreIRCDMessageError core_message_error;
CoreIRCDMessageJoin core_message_join;
+ CoreIRCDMessageKick core_message_kick;
CoreIRCDMessageKill core_message_kill;
CoreIRCDMessageMOTD core_message_motd;
CoreIRCDMessagePart core_message_part;
diff --git a/modules/protocol/inspircd12.cpp b/modules/protocol/inspircd12.cpp
index c780e8299..1fd9bbc81 100644
--- a/modules/protocol/inspircd12.cpp
+++ b/modules/protocol/inspircd12.cpp
@@ -466,6 +466,7 @@ class ProtoInspIRCd : public Module
CoreIRCDMessageCapab core_message_capab;
CoreIRCDMessageError core_message_error;
CoreIRCDMessageJoin core_message_join;
+ CoreIRCDMessageKick core_message_kick;
CoreIRCDMessageKill core_message_kill;
CoreIRCDMessageMOTD core_message_motd;
CoreIRCDMessagePart core_message_part;
diff --git a/modules/protocol/inspircd20.cpp b/modules/protocol/inspircd20.cpp
index 25d0c9333..ee281420b 100644
--- a/modules/protocol/inspircd20.cpp
+++ b/modules/protocol/inspircd20.cpp
@@ -487,6 +487,7 @@ class ProtoInspIRCd : public Module
CoreIRCDMessageCapab core_message_capab;
CoreIRCDMessageError core_message_error;
CoreIRCDMessageJoin core_message_join;
+ CoreIRCDMessageKick core_message_kick;
CoreIRCDMessageKill core_message_kill;
CoreIRCDMessageMOTD core_message_motd;
CoreIRCDMessagePart core_message_part;
diff --git a/modules/protocol/plexus.cpp b/modules/protocol/plexus.cpp
index 1ef8adab9..f0b213eab 100644
--- a/modules/protocol/plexus.cpp
+++ b/modules/protocol/plexus.cpp
@@ -641,6 +641,7 @@ class ProtoPlexus : public Module
CoreIRCDMessageAway core_message_away;
CoreIRCDMessageCapab core_message_capab;
CoreIRCDMessageError core_message_error;
+ CoreIRCDMessageKick core_message_kick;
CoreIRCDMessageKill core_message_kill;
CoreIRCDMessageMOTD core_message_motd;
CoreIRCDMessagePart core_message_part;
diff --git a/modules/protocol/ratbox.cpp b/modules/protocol/ratbox.cpp
index 017af4e3f..a6fc85675 100644
--- a/modules/protocol/ratbox.cpp
+++ b/modules/protocol/ratbox.cpp
@@ -556,6 +556,7 @@ class ProtoRatbox : public Module
CoreIRCDMessageAway core_message_away;
CoreIRCDMessageCapab core_message_capab;
CoreIRCDMessageError core_message_error;
+ CoreIRCDMessageKick core_message_kick;
CoreIRCDMessageKill core_message_kill;
CoreIRCDMessageMOTD core_message_motd;
CoreIRCDMessagePart core_message_part;
diff --git a/modules/protocol/unreal.cpp b/modules/protocol/unreal.cpp
index 3bdcd2e5f..186fc8563 100644
--- a/modules/protocol/unreal.cpp
+++ b/modules/protocol/unreal.cpp
@@ -131,11 +131,6 @@ class UnrealIRCdProto : public IRCDProto
UplinkSocket::Message(source) << "h " << user->nick << " :" << buf;
}
- void SendModeInternal(const BotInfo *source, const Channel *dest, const Anope::string &buf) anope_override
- {
- UplinkSocket::Message(source) << "G " << dest->name << " " << buf;
- }
-
void SendModeInternal(const BotInfo *bi, const User *u, const Anope::string &buf) anope_override
{
UplinkSocket::Message(bi) << "v " << u->nick <<" " << buf;
@@ -147,14 +142,6 @@ class UnrealIRCdProto : public IRCDProto
UplinkSocket::Message() << "& " << u->nick << " 1 " << u->timestamp << " " << u->GetIdent() << " " << u->host << " " << u->server->GetName() << " 0 " << modes << " " << u->host << " * :" << u->realname;
}
- void SendKickInternal(const BotInfo *source, const Channel *chan, const User *user, const Anope::string &buf) anope_override
- {
- if (!buf.empty())
- UplinkSocket::Message(source) << "H " << chan->name << " " << user->nick << " :" << buf;
- else
- UplinkSocket::Message(source) << "H " << chan->name << " " << user->nick;
- }
-
/* SERVER name hop descript */
/* Unreal 3.2 actually sends some info about itself in the descript area */
void SendServer(const Server *server) anope_override
@@ -1105,6 +1092,7 @@ class ProtoUnreal : public Module
CoreIRCDMessageCapab core_message_capab;
CoreIRCDMessageError core_message_error;
CoreIRCDMessageJoin core_message_join;
+ CoreIRCDMessageKick core_message_kick;
CoreIRCDMessageKill core_message_kill;
CoreIRCDMessageMOTD core_message_motd;
CoreIRCDMessagePart core_message_part;
diff --git a/src/messages.cpp b/src/messages.cpp
index 2faa1cbb1..784b482cc 100644
--- a/src/messages.cpp
+++ b/src/messages.cpp
@@ -94,6 +94,25 @@ bool CoreIRCDMessageJoin::Run(MessageSource &source, const std::vector<Anope::st
return true;
}
+
+bool CoreIRCDMessageKick::Run(MessageSource &source, const std::vector<Anope::string> &params) anope_override
+{
+ const Anope::string &channel = params[0];
+ const Anope::string &users = params[1];
+ const Anope::string &reason = params.size() > 2 ? params[2] : "";
+
+ Channel *c = findchan(channel);
+ if (!c)
+ return true;
+
+ Anope::string user;
+ commasepstream sep(users);
+
+ while (sep.GetToken(user))
+ c->KickInternal(source, user, reason);
+ return true;
+}
+
bool CoreIRCDMessageKill::Run(MessageSource &source, const std::vector<Anope::string> &params) anope_override
{
User *u = finduser(params[0]);