summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobin Burchell <robin.burchell@viroteck.net>2016-01-03 04:30:07 +0100
committerPekka Vuorela <pvuorela@iki.fi>2018-09-11 13:20:05 +0000
commite3b783e1560749f865a5e42b1adb983a45f39469 (patch)
tree526b50d25442658908a31d672828a790b5323665
parent80ac5a94dcf90b95d91ce76a8d899189a088b93a (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.cpp26
-rw-r--r--src/plugins/messageservices/imap/imapprotocol.h2
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();