summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/crsm.cpp54
-rw-r--r--src/crsm.hpp2
2 files changed, 54 insertions, 2 deletions
diff --git a/src/crsm.cpp b/src/crsm.cpp
index 46b40cb..f85ca52 100644
--- a/src/crsm.cpp
+++ b/src/crsm.cpp
@@ -338,6 +338,7 @@ void CRSM::readInput()
ircModChecks.clear();
ircMods.clear();
ircModIOList.clear();
+ ircModWatchList.clear();
ircStatusFifos.clear();
readConfig();
return;
@@ -482,6 +483,21 @@ void CRSM::ircMessageReceived(IrcMessage *message)
writeToServer(writeMessage + "\n");
}
}
+
+ if(ircModWatchList.length() > 0)
+ {
+ QString watchMsg = "<";
+ if(target != message->nick())
+ {
+ watchMsg += target + ":";
+ }
+ watchMsg += message->nick() + "> " + mess;
+
+ foreach(const ClientInfo& client, ircModWatchList)
+ {
+ connection->sendCommand(IrcCommand::createMessage(client.nick, watchMsg));
+ }
+ }
}
else if(message->type() == IrcMessage::Join)
{
@@ -499,6 +515,7 @@ void CRSM::ircMessageReceived(IrcMessage *message)
ircMods.removeAll(message->nick());
ircModChecks.removeAll(message->nick());
ircModIOList.removeAll(message->nick());
+ ircModWatchList.removeAll(ClientInfo::ircClient(message->nick()));
if(aliasWishEditor == message->nick())
{
stopAliasWishEditing();
@@ -1373,6 +1390,7 @@ void CRSM::setupCmds()
addCommand("irc io", &CRSM::io, IRC, Moderator, "Schaltet den IO-Modus ein bzw. aus.", "", "Schaltet den IO-Modus ein bzw. aus. Im IO-Modus wird die Ausgabe vom Clonk-Server an den Privat-Chat weitergeleitet und der Privat-Chat wird an den Clonk-Server weitergeleitet. Clonk-Befehle mit \\ statt /.");
addCommand("irc reconnect", &CRSM::reconnectIrc, Management, UserType::Max, "Stellt die IRC-Verbindung wieder her.");
addCommand("irc say", &CRSM::ircSay, IRC | Management, Moderator, "Schreibt die <Nachricht> an <Channel¦Nick>.", "<Channel¦Nick> <Nachricht>");
+ addCommand("irc watch", &CRSM::ircWatch, IRC | Management, Moderator, "Sendet alle Nachrichten, die der Server im IRC-Netzwerk aufschnappt, an Moderatoren, die watch aktiviert haben.", "<on¦off>");
}
addCommandGroup("exit", Management, UserType::Max, "Beendet den Server Mananger.", "Beendet den Server Mananger und falls ein Clonk-Server läuft auch diesen. Die Unterbefehle ermöglichen außerdem diverse Zusatzvarienten des Beendens.", &CRSM::exit);
@@ -1937,10 +1955,10 @@ CMD_FUNCTION_IMPL(newalias)
}
CMD_FUNCTION_IMPL(modinfo)
- respond(client, "Moderatoren sind (* ist aktiv, + verwendet IO):\n", RespondType::Private);
+ respond(client, "Moderatoren sind (* ist aktiv, + verwendet IO, - verwendet irc watch):\n", RespondType::Private);
foreach(const QString &mod, Config.IRC.Moderators.keys())
{
- respond(client, (ircMods.contains(mod) ? QString("*") : QString(" ")) + (ircModIOList.contains(mod) ? QString("+") : QString(" ")) + " " + Config.IRC.Moderators.value(mod) + "\n", RespondType::Private);
+ respond(client, (ircMods.contains(mod) ? QString("*") : QString(" ")) + (ircModIOList.contains(mod) ? QString("+") : QString(" ")) + (ircModWatchList.contains(ClientInfo::ircClient(mod)) ? QString("-") : QString(" ")) + " " + Config.IRC.Moderators.value(mod) + "\n", RespondType::Private);
}
}
@@ -2249,6 +2267,38 @@ CMD_FUNCTION_IMPL(ircSay)
}
}
+CMD_FUNCTION_IMPL(ircWatch)
+ if(args == "on")
+ {
+ if(ircModWatchList.contains(client))
+ {
+ respond(client, "irc watch ist bereits aktiviert.\n", RespondType::Private);
+ }
+ else
+ {
+ ircModWatchList.append(client);
+ respond(client, "irc watch wurde aktiviert.\n", RespondType::Private);
+ }
+ }
+ else if(args == "off")
+ {
+ if(!ircModWatchList.contains(client))
+ {
+ respond(client, "irc watch ist bereits deaktiviert.\n", RespondType::Private);
+ }
+ else
+ {
+ ircModWatchList.removeAll(client);
+ respond(client, "irc watch wurde deaktiviert.\n", RespondType::Private);
+ }
+
+ }
+ else
+ {
+ respond(client, Config.CRSM.CommandSign + cmd + " kann nur mit \"on\" oder \"off\" verwendet werden.\n");
+ }
+}
+
IRC_CHECK_CALLBACK_IMPL(ircSayQuery)
if(status <= 0)
{
diff --git a/src/crsm.hpp b/src/crsm.hpp
index 4f5cb87..fca0d9b 100644
--- a/src/crsm.hpp
+++ b/src/crsm.hpp
@@ -211,6 +211,7 @@ private:
QTextStream logstream;
QTextCodec *codec;
QStringList ircModIOList;
+ QList<ClientInfo> ircModWatchList;
QString writtenToServer;
QMap<QString, CmdFunctionRef> cmds;
QStringList cmdGroups;
@@ -321,6 +322,7 @@ private:
CMD_FUNCTION(setConfigValue);
CMD_FUNCTION(ircSay);
+ CMD_FUNCTION(ircWatch);
IRC_CHECK_CALLBACK(ircSetAdmin);
IRC_CHECK_CALLBACK(ircModCmd);