mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Move subsurface-core to core and qt-mobile to mobile-widgets
Having subsurface-core as a directory name really messes with autocomplete and is obviously redundant. Simmilarly, qt-mobile caused an autocomplete conflict and also was inconsistent with the desktop-widget name for the directory containing the "other" UI. And while cleaning up the resulting change in the path name for include files, I decided to clean up those even more to make them consistent overall. This could have been handled in more commits, but since this requires a make clean before the build, it seemed more sensible to do it all in one. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
2d760a7bff
commit
7be962bfc2
254 changed files with 572 additions and 582 deletions
109
core/cloudstorage.cpp
Normal file
109
core/cloudstorage.cpp
Normal file
|
@ -0,0 +1,109 @@
|
|||
#include "cloudstorage.h"
|
||||
#include "pref.h"
|
||||
#include "dive.h"
|
||||
#include "helpers.h"
|
||||
|
||||
#include <QApplication>
|
||||
|
||||
CloudStorageAuthenticate::CloudStorageAuthenticate(QObject *parent) :
|
||||
QObject(parent),
|
||||
reply(NULL)
|
||||
{
|
||||
userAgent = getUserAgent();
|
||||
}
|
||||
|
||||
#define CLOUDURL QString(prefs.cloud_base_url)
|
||||
#define CLOUDBACKENDSTORAGE CLOUDURL + "/storage"
|
||||
#define CLOUDBACKENDVERIFY CLOUDURL + "/verify"
|
||||
#define CLOUDBACKENDUPDATE CLOUDURL + "/update"
|
||||
|
||||
QNetworkReply* CloudStorageAuthenticate::backend(const QString& email,const QString& password,const QString& pin,const QString& newpasswd)
|
||||
{
|
||||
QString payload(email + QChar(' ') + password);
|
||||
QUrl requestUrl;
|
||||
if (pin.isEmpty() && newpasswd.isEmpty()) {
|
||||
requestUrl = QUrl(CLOUDBACKENDSTORAGE);
|
||||
} else if (!newpasswd.isEmpty()) {
|
||||
requestUrl = QUrl(CLOUDBACKENDUPDATE);
|
||||
payload += QChar(' ') + newpasswd;
|
||||
} else {
|
||||
requestUrl = QUrl(CLOUDBACKENDVERIFY);
|
||||
payload += QChar(' ') + pin;
|
||||
}
|
||||
QNetworkRequest *request = new QNetworkRequest(requestUrl);
|
||||
request->setRawHeader("Accept", "text/xml, text/plain");
|
||||
request->setRawHeader("User-Agent", userAgent.toUtf8());
|
||||
request->setHeader(QNetworkRequest::ContentTypeHeader, "text/plain");
|
||||
reply = manager()->post(*request, qPrintable(payload));
|
||||
connect(reply, SIGNAL(finished()), this, SLOT(uploadFinished()));
|
||||
connect(reply, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(sslErrors(QList<QSslError>)));
|
||||
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this,
|
||||
SLOT(uploadError(QNetworkReply::NetworkError)));
|
||||
return reply;
|
||||
}
|
||||
|
||||
void CloudStorageAuthenticate::uploadFinished()
|
||||
{
|
||||
static QString myLastError;
|
||||
|
||||
QString cloudAuthReply(reply->readAll());
|
||||
qDebug() << "Completed connection with cloud storage backend, response" << cloudAuthReply;
|
||||
if (cloudAuthReply == QLatin1String("[VERIFIED]") || cloudAuthReply == QLatin1String("[OK]")) {
|
||||
prefs.cloud_verification_status = CS_VERIFIED;
|
||||
/* TODO: Move this to a correct place
|
||||
NotificationWidget *nw = MainWindow::instance()->getNotificationWidget();
|
||||
if (nw->getNotificationText() == myLastError)
|
||||
nw->hideNotification();
|
||||
*/
|
||||
myLastError.clear();
|
||||
} else if (cloudAuthReply == QLatin1String("[VERIFY]")) {
|
||||
prefs.cloud_verification_status = CS_NEED_TO_VERIFY;
|
||||
} else if (cloudAuthReply == QLatin1String("[PASSWDCHANGED]")) {
|
||||
free(prefs.cloud_storage_password);
|
||||
prefs.cloud_storage_password = prefs.cloud_storage_newpassword;
|
||||
prefs.cloud_storage_newpassword = NULL;
|
||||
emit passwordChangeSuccessful();
|
||||
return;
|
||||
} else {
|
||||
prefs.cloud_verification_status = CS_INCORRECT_USER_PASSWD;
|
||||
myLastError = cloudAuthReply;
|
||||
report_error("%s", qPrintable(cloudAuthReply));
|
||||
/* TODO: Emit a signal with the error
|
||||
MainWindow::instance()->getNotificationWidget()->showNotification(get_error_string(), KMessageWidget::Error);
|
||||
*/
|
||||
}
|
||||
emit finishedAuthenticate();
|
||||
}
|
||||
|
||||
void CloudStorageAuthenticate::uploadError(QNetworkReply::NetworkError)
|
||||
{
|
||||
qDebug() << "Received error response from cloud storage backend:" << reply->errorString();
|
||||
}
|
||||
|
||||
void CloudStorageAuthenticate::sslErrors(QList<QSslError> errorList)
|
||||
{
|
||||
if (verbose) {
|
||||
qDebug() << "Received error response trying to set up https connection with cloud storage backend:";
|
||||
Q_FOREACH (QSslError err, errorList) {
|
||||
qDebug() << err.errorString();
|
||||
}
|
||||
}
|
||||
QSslConfiguration conf = reply->sslConfiguration();
|
||||
QSslCertificate cert = conf.peerCertificate();
|
||||
QByteArray hexDigest = cert.digest().toHex();
|
||||
if (reply->url().toString().contains(prefs.cloud_base_url) &&
|
||||
hexDigest == "13ff44c62996cfa5cd69d6810675490e") {
|
||||
if (verbose)
|
||||
qDebug() << "Overriding SSL check as I recognize the certificate digest" << hexDigest;
|
||||
reply->ignoreSslErrors();
|
||||
} else {
|
||||
if (verbose)
|
||||
qDebug() << "got invalid SSL certificate with hex digest" << hexDigest;
|
||||
}
|
||||
}
|
||||
|
||||
QNetworkAccessManager *manager()
|
||||
{
|
||||
static QNetworkAccessManager *manager = new QNetworkAccessManager(qApp);
|
||||
return manager;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue