diff options
| author | Markus Mittendrein <git@maxmitti.tk> | 2015-11-08 00:45:21 +0100 |
|---|---|---|
| committer | Markus Mittendrein <git@maxmitti.tk> | 2015-11-08 00:45:21 +0100 |
| commit | 5033d46d8d0383b7d176fc33b18a280d41ed0d41 (patch) | |
| tree | b71765c21c74f15ced5540640247d7e30f866a26 | |
| parent | 4cb2ae46bc2a6fa5b03e8858cd9f40fcdf5c0d3e (diff) | |
| download | manager-5033d46d8d0383b7d176fc33b18a280d41ed0d41.tar.gz manager-5033d46d8d0383b7d176fc33b18a280d41ed0d41.zip | |
Check Channel-Names against CHANTYPES supported by IRC server
| -rw-r--r-- | src/crsm.cpp | 25 | ||||
| -rw-r--r-- | src/crsm.hpp | 1 |
2 files changed, 19 insertions, 7 deletions
diff --git a/src/crsm.cpp b/src/crsm.cpp index 174fe71..cef3f83 100644 --- a/src/crsm.cpp +++ b/src/crsm.cpp @@ -457,11 +457,11 @@ void CRSM::ircMessageReceived(IrcMessage *message) { watchMsg += target + ":"; } - watchMsg += message->nick() + "> " + mess; + watchMsg += message->nick() + "> " + mess + "\n"; foreach(const ClientInfo& client, ircModWatchList) { - connection->sendCommand(IrcCommand::createMessage(client.nick, watchMsg)); + respond(client, watchMsg, RespondType::PrivateNotice); } } } @@ -1802,6 +1802,19 @@ QString CRSM::getCommand(const QString &message) return QString(); } +bool CRSM::isChannelName(const QString &name) +{ + if(connection == nullptr || name.length() < 1) + { + return false; + } + else + { + const QStringList& channelTypes = connection->network()->channelTypes(); + return channelTypes.contains(name.at(0)); + } +} + CMD_FUNCTION_IMPL(help) bool longHelp = (args == "long"); if(args.isEmpty() || longHelp) @@ -2356,13 +2369,12 @@ CMD_FUNCTION_IMPL(passToClonkOnOff) CMD_FUNCTION_IMPL(join) QStringList argList = args.split(' '); - static QRegExp chanExp("^#[^\\s]+$"); if(argList.size() < 1 || argList.first().isEmpty()) { respond(client, "Kein Channel angegeben!\n"); return SyntaxFail; } - else if(chanExp.exactMatch(argList.first())) + else if(isChannelName(argList.first())) { QString chan = argList.first(); argList.removeFirst(); @@ -2393,8 +2405,7 @@ CMD_FUNCTION_IMPL(leave) { reason = client.toString(); } - static QRegExp chanExp("^#[^\\s]+$"); - if(chanExp.exactMatch(chan)) + if(isChannelName(chan)) { connection->sendCommand(IrcCommand::createPart(chan, reason)); return Success; @@ -2533,7 +2544,7 @@ CMD_FUNCTION_IMPL(ircSay) QString target = parts.first(); parts.removeFirst(); QString message = parts.join(' '); - if(target.at(0) != '#') + if(!isChannelName(target)) { ircSayQueryFifos[target].append(message); ircCheckUserStatus(client, ClientInfo::ircClient(target), &CRSM::ircSayQuery); diff --git a/src/crsm.hpp b/src/crsm.hpp index 2e38ea0..247848f 100644 --- a/src/crsm.hpp +++ b/src/crsm.hpp @@ -290,6 +290,7 @@ private: void checkActivity(ClientInfo& client); int findWishFromUser(const ClientInfo& client); QString getCommand(const QString& message); + bool isChannelName(const QString& name); CMD_FUNCTION(help); CMD_FUNCTION(passToClonk); |
