/***************************************************************************
- * Copyright (C) 2005-08 by the Quassel Project *
+ * Copyright (C) 2005-10 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#include "network.h"
#include "quassel.h"
#include "util.h"
+#include "coreignorelistmanager.h"
-CtcpHandler::CtcpHandler(NetworkConnection *parent)
- : BasicHandler(parent),
- XDELIM("\001")
+CtcpHandler::CtcpHandler(CoreNetwork *parent)
+ : CoreBasicHandler(parent),
+ XDELIM("\001"),
+ _ignoreListManager(parent->ignoreListManager())
{
QByteArray MQUOTE = QByteArray("\020");
void CtcpHandler::handlePing(CtcpType ctcptype, const QString &prefix, const QString &target, const QString ¶m) {
Q_UNUSED(target)
if(ctcptype == CtcpQuery) {
+ if(_ignoreListManager->ctcpMatch(prefix, network()->networkName(), "PING"))
+ return;
reply(nickFromMask(prefix), "PING", param);
emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("Received CTCP PING request from %1").arg(prefix));
} else {
// display ping answer
uint now = QDateTime::currentDateTime().toTime_t();
uint then = QDateTime().fromTime_t(param.toInt()).toTime_t();
- emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("Received CTCP PING answer from %1 with %2 seconds round trip time").arg(prefix).arg(now-then));
+ emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("Received CTCP PING answer from %1 with %2 seconds round trip time")
+ .arg(nickFromMask(prefix)).arg(now-then));
}
}
void CtcpHandler::handleVersion(CtcpType ctcptype, const QString &prefix, const QString &target, const QString ¶m) {
Q_UNUSED(target)
if(ctcptype == CtcpQuery) {
+ if(_ignoreListManager->ctcpMatch(prefix, network()->networkName(), "VERSION"))
+ return;
reply(nickFromMask(prefix), "VERSION", QString("Quassel IRC %1 (built on %2) -- http://www.quassel-irc.org")
- .arg(Quassel::buildInfo().plainVersionString)
- .arg(Quassel::buildInfo().buildDate));
+ .arg(Quassel::buildInfo().plainVersionString)
+ .arg(Quassel::buildInfo().buildDate));
emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("Received CTCP VERSION request by %1").arg(prefix));
} else {
// display Version answer
- emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("Received CTCP VERSION answer from %1: %2").arg(prefix).arg(param));
+ emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("Received CTCP VERSION answer from %1: %2")
+ .arg(nickFromMask(prefix)).arg(param));
+ }
+}
+
+void CtcpHandler::handleTime(CtcpType ctcptype, const QString &prefix, const QString &target, const QString ¶m) {
+ Q_UNUSED(target)
+ if(ctcptype == CtcpQuery) {
+ if(_ignoreListManager->ctcpMatch(prefix, network()->networkName(), "TIME"))
+ return;
+ reply(nickFromMask(prefix), "TIME", QDateTime::currentDateTime().toString());
+ emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("Received CTCP TIME request by %1").arg(prefix));
+ }
+ else {
+ emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("Received CTCP TIME answer from %1: %2")
+ .arg(nickFromMask(prefix)).arg(param));
}
}
void CtcpHandler::defaultHandler(const QString &cmd, CtcpType ctcptype, const QString &prefix, const QString &target, const QString ¶m) {
Q_UNUSED(ctcptype);
Q_UNUSED(target);
- Q_UNUSED(param);
- emit displayMsg(Message::Error, BufferInfo::StatusBuffer, "", tr("Received unknown CTCP %1 by %2").arg(cmd).arg(prefix));
+ if(!_ignoreListManager->ctcpMatch(prefix, network()->networkName())) {
+ QString str = tr("Received unknown CTCP %1 by %2").arg(cmd).arg(prefix);
+ if(!param.isEmpty())
+ str.append(tr(" with arguments: %1").arg(param));
+ emit displayMsg(Message::Error, BufferInfo::StatusBuffer, "", str);
+ }
}
-