[CSE] Check the server for client side encryption

Call the apps api and check if the response has
the client_side_encryption key.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
This commit is contained in:
Tomaz Canabrava 2017-08-24 12:38:00 +02:00 committed by Roeland Jago Douma
parent f9b1c724d6
commit 1c32f6bb2e
No known key found for this signature in database
GPG key ID: F941078878347C0C
2 changed files with 26 additions and 0 deletions

View file

@ -14,6 +14,7 @@
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QLoggingCategory>
#include <QNetworkReply>
#include <QNetworkProxyFactory>
@ -245,12 +246,36 @@ void ConnectionValidator::slotAuthSuccess()
checkServerCapabilities();
}
void ConnectionValidator::checkClientSideEncryption()
{
JsonApiJob *job = new JsonApiJob(_account, QLatin1String("ocs/v2.php/cloud/apps"), this);
job->setTimeout(timeoutToUseMsec);
connect(job, &JsonApiJob::jsonReceived, [this](const QJsonDocument& json, int httpResponse) {
Q_UNUSED(httpResponse);
auto apps = json.object().value("ocs").toObject().value("data").toObject().value("apps").toArray().toVariantList();
bool hasClientSideEncryption = false;
for(const auto& app : qAsConst(apps)) {
if (app.toString() == "client_side_encryption") {
hasClientSideEncryption = true;
qCInfo(lcConnectionValidator()) << "Found Client Side Encryption";
break;
}
}
// _account->setHasClientSideEncryption(hasClientSideEncryption);
});
job->start();
}
void ConnectionValidator::checkServerCapabilities()
{
JsonApiJob *job = new JsonApiJob(_account, QLatin1String("ocs/v1.php/cloud/capabilities"), this);
job->setTimeout(timeoutToUseMsec);
QObject::connect(job, &JsonApiJob::jsonReceived, this, &ConnectionValidator::slotCapabilitiesRecieved);
job->start();
checkClientSideEncryption();
}
void ConnectionValidator::slotCapabilitiesRecieved(const QJsonDocument &json)

View file

@ -128,6 +128,7 @@ protected slots:
private:
void reportResult(Status status);
void checkServerCapabilities();
void checkClientSideEncryption();
void fetchUser();
/** Sets the account's server version