aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2012-09-10 13:06:13 +0200
committerJeremy Lainé <jeremy.laine@m4x.org>2012-09-10 13:06:13 +0200
commitfcf89b7834cd253eb5993f03d891d0b6ab1a9953 (patch)
treeabea7f9eb3ad2a55489390a6233172f51be94a7e /src
parent07459d41fe7e316efe3a848eaec50cb2aebe19c9 (diff)
downloadqxmpp-fcf89b7834cd253eb5993f03d891d0b6ab1a9953.tar.gz
[server] lay groundwork for client auth statistics
Diffstat (limited to 'src')
-rw-r--r--src/base/QXmppLogger.h3
-rw-r--r--src/server/QXmppIncomingClient.cpp9
2 files changed, 11 insertions, 1 deletions
diff --git a/src/base/QXmppLogger.h b/src/base/QXmppLogger.h
index 8b72ec5f..096c3520 100644
--- a/src/base/QXmppLogger.h
+++ b/src/base/QXmppLogger.h
@@ -163,6 +163,9 @@ protected:
}
signals:
+ /// Increment the given \a counter.
+ void incrementCounter(const QString &counter);
+
/// This signal is emitted to send logging messages.
void logMessage(QXmppLogger::MessageType type, const QString &msg);
};
diff --git a/src/server/QXmppIncomingClient.cpp b/src/server/QXmppIncomingClient.cpp
index 76fa9f6f..f3685ae9 100644
--- a/src/server/QXmppIncomingClient.cpp
+++ b/src/server/QXmppIncomingClient.cpp
@@ -306,6 +306,7 @@ void QXmppIncomingClient::handleStanza(const QDomElement &nodeRecv)
// authentication succeeded
d->jid = QString("%1@%2").arg(d->saslServer->username(), d->domain);
info(QString("Authentication succeeded for '%1' from %2").arg(d->jid, d->origin()));
+ incrementCounter("incoming-client.auth.success");
sendPacket(QXmppSaslSuccess());
handleStart();
} else {
@@ -398,7 +399,8 @@ void QXmppIncomingClient::onDigestReply()
reply->deleteLater();
if (reply->error() == QXmppPasswordReply::TemporaryError) {
- warning(QString("Temporary authentication failure for '%1'").arg(d->saslServer->username()));
+ warning(QString("Temporary authentication failure for '%1' from %2").arg(d->saslServer->username(), d->origin()));
+ incrementCounter("incoming-client.auth.temporary-auth-failure");
sendPacket(QXmppSaslFailure("temporary-auth-failure"));
disconnectFromHost();
return;
@@ -409,6 +411,8 @@ void QXmppIncomingClient::onDigestReply()
QXmppSaslServer::Response result = d->saslServer->respond(reply->property("__sasl_raw").toByteArray(), challenge);
if (result != QXmppSaslServer::Challenge) {
+ warning(QString("Authentication failed for '%1' from %2").arg(d->saslServer->username(), d->origin()));
+ incrementCounter("incoming-client.auth.not-authorized");
sendPacket(QXmppSaslFailure("not-authorized"));
disconnectFromHost();
return;
@@ -430,16 +434,19 @@ void QXmppIncomingClient::onPasswordReply()
case QXmppPasswordReply::NoError:
d->jid = jid;
info(QString("Authentication succeeded for '%1' from %2").arg(d->jid, d->origin()));
+ incrementCounter("incoming-client.auth.success");
sendPacket(QXmppSaslSuccess());
handleStart();
break;
case QXmppPasswordReply::AuthorizationError:
warning(QString("Authentication failed for '%1' from %2").arg(jid, d->origin()));
+ incrementCounter("incoming-client.auth.not-authorized");
sendPacket(QXmppSaslFailure("not-authorized"));
disconnectFromHost();
break;
case QXmppPasswordReply::TemporaryError:
warning(QString("Temporary authentication failure for '%1' from %2").arg(jid, d->origin()));
+ incrementCounter("incoming-client.auth.temporary-auth-failure");
sendPacket(QXmppSaslFailure("temporary-auth-failure"));
disconnectFromHost();
break;