diff options
author | Robin Burchell <robin.burchell@viroteck.net> | 2016-01-03 04:30:07 +0100 |
---|---|---|
committer | Pekka Vuorela <pvuorela@iki.fi> | 2018-09-11 13:20:05 +0000 |
commit | e3b783e1560749f865a5e42b1adb983a45f39469 (patch) | |
tree | 526b50d25442658908a31d672828a790b5323665 | |
parent | 80ac5a94dcf90b95d91ce76a8d899189a088b93a (diff) |
Mask login information in the IMAP login logging.
Change-Id: Idd64b3a74bda642914a48b546665b14b5bd65d27
Done-with: Valerio Valerio <valerio.valerio@jollamobile.com>
Reviewed-by: Valerio Valerio <vdv100@gmail.com>
-rw-r--r-- | src/plugins/messageservices/imap/imapprotocol.cpp | 26 | ||||
-rw-r--r-- | src/plugins/messageservices/imap/imapprotocol.h | 2 |
2 files changed, 18 insertions, 10 deletions
diff --git a/src/plugins/messageservices/imap/imapprotocol.cpp b/src/plugins/messageservices/imap/imapprotocol.cpp index b30c1463..b37d990d 100644 --- a/src/plugins/messageservices/imap/imapprotocol.cpp +++ b/src/plugins/messageservices/imap/imapprotocol.cpp @@ -312,7 +312,7 @@ public: virtual QString sendCommand(const QString &cmd) { return mProtocol->sendCommand(cmd); } virtual QString sendCommandLiteral(const QString &cmd, uint length) { return mProtocol->sendCommandLiteral(cmd, length); } - virtual void sendData(const QString &data) { mProtocol->sendData(data); } + virtual void sendData(const QString &data, bool maskDebug = false) { mProtocol->sendData(data, maskDebug); } virtual void sendDataLiteral(const QString &data, uint length) { mProtocol->sendDataLiteral(data, length); } ImapProtocol *protocol() { return mProtocol; } @@ -595,7 +595,7 @@ bool LoginState::continuationResponse(ImapContext *c, const QString &received) QByteArray response(ImapAuthenticator::getResponse(_config.serviceConfiguration("imap4"), challenge)); if (!response.isEmpty()) { - c->sendData(response.toBase64()); + c->sendData(response.toBase64(), true); } return false; @@ -3373,18 +3373,26 @@ void ImapProtocol::errorHandling(int status, QString msg) emit connectionError(status, msg); } -void ImapProtocol::sendData(const QString &cmd) +void ImapProtocol::sendData(const QString &cmd, bool maskDebug) { QByteArray output(cmd.toLatin1()); output.append("\r\n"); _transport->imapWrite(&output); - QString logCmd(cmd); - QRegExp loginExp("^[^\\s]+\\sLOGIN\\s[^\\s]+\\s"); - if (loginExp.indexIn(cmd) != -1) { - logCmd = cmd.left(loginExp.matchedLength()) + "<password hidden>"; - } - qMailLog(IMAP) << objectName() << (compress() ? "SENDC:" : "SEND") << qPrintable(logCmd); + if (maskDebug) { + qMailLog(IMAP) << objectName() << (compress() ? "SENDC:" : "SEND") << "SEND: <login hidden>"; + } else { + QString logCmd(cmd); + QRegExp authExp("^[^\\s]+\\sAUTHENTICATE\\s[^\\s]+\\s"); + if (authExp.indexIn(cmd) != -1) { + logCmd = cmd.left(authExp.matchedLength()) + "<password hidden>"; + } else { + QRegExp loginExp("^[^\\s]+\\sLOGIN\\s[^\\s]+\\s"); + if (loginExp.indexIn(cmd) != -1) { + logCmd = cmd.left(loginExp.matchedLength()) + "<password hidden>"; + } + } + qMailLog(IMAP) << objectName() << (compress() ? "SENDC:" : "SEND") << qPrintable(logCmd);} } void ImapProtocol::sendDataLiteral(const QString &cmd, uint length) diff --git a/src/plugins/messageservices/imap/imapprotocol.h b/src/plugins/messageservices/imap/imapprotocol.h index 4077c0e2..f0bcc21e 100644 --- a/src/plugins/messageservices/imap/imapprotocol.h +++ b/src/plugins/messageservices/imap/imapprotocol.h @@ -275,7 +275,7 @@ private: void processResponse(QString line); void nextAction(const QString &line); - void sendData(const QString &cmd); + void sendData(const QString &cmd, bool maskDebug = false); void sendDataLiteral(const QString &cmd, uint length); QString newCommandId(); |