mirror of
https://github.com/nextcloud/desktop.git
synced 2024-10-27 23:17:13 +03:00
[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:
parent
f9b1c724d6
commit
1c32f6bb2e
2 changed files with 26 additions and 0 deletions
|
@ -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)
|
||||
|
|
|
@ -128,6 +128,7 @@ protected slots:
|
|||
private:
|
||||
void reportResult(Status status);
|
||||
void checkServerCapabilities();
|
||||
void checkClientSideEncryption();
|
||||
void fetchUser();
|
||||
|
||||
/** Sets the account's server version
|
||||
|
|
Loading…
Reference in a new issue