From 9a73a46f6136a8796d1da0e04d7b20c54bec2b17 Mon Sep 17 00:00:00 2001 From: ondra Date: Thu, 10 Dec 2020 19:13:37 +0100 Subject: [PATCH] Migration to mysql and update request auth --- server-sdk | 2 +- src/app/main.cpp | 19 +++++++++---------- src/colnod/colnodapi.cpp | 18 ++++++++++++++---- src/colnod/colnodapi.h | 17 +++++++++++------ src/colnod/databaseapi.cpp | 8 +++++--- src/colnod/databaseapi.h | 21 +++++++++++---------- src/colnod/subject.h | 3 ++- src/colnod/token.h | 3 ++- 8 files changed, 55 insertions(+), 36 deletions(-) diff --git a/server-sdk b/server-sdk index d4c4d75..8aa786f 160000 --- a/server-sdk +++ b/server-sdk @@ -1 +1 @@ -Subproject commit d4c4d75b49fe7e0399a6c4e57a7bb32f82bee59d +Subproject commit 8aa786fa51dbbd9c82ec20f10892295c93c4054c diff --git a/src/app/main.cpp b/src/app/main.cpp index 3a63727..0b96c6a 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -1,14 +1,13 @@ #include - -#include "syncmanager.h" #include -#include "serversdk/requestmanager.h" -#include "serversdk/request.h" -#include "serversdk/logger.h" -#include "serversdk/core.h" +#include +#include +#include +#include -#include "colnodapi.h" +#include "../colnod/colnodapi.h" +#include "../colnod/syncmanager.h" int main(int argc, char *argv[]) { @@ -20,7 +19,7 @@ int main(int argc, char *argv[]) // Command line parsing QCommandLineParser parser; parser.setApplicationDescription("Colnod sync"); - QCommandLineOption dryModeOption("dryMode", "ColnodAPI", "Read-only mode, prints changes which would normally be made"); + QCommandLineOption dryModeOption("dryMode", "Read-only mode, prints changes which would normally be made"); QCommandLineOption dropTablesOption("dropTables", "ColnodAPI", "Delete tables with datas from Colnod"); QCommandLineOption createTablesOption("createTables", "ColnodAPI", "Create tables for saving data from Colnod"); parser.addOption(dryModeOption); @@ -34,8 +33,8 @@ int main(int argc, char *argv[]) // Log messge Filtering QStringList filters; - filters << "qt.*=false"; - filters << "sdk*=false"; +// filters << "qt.*=false"; +// filters << "sdk*=false"; //filters << "*=false"; QLoggingCategory::setFilterRules(filters.join(QStringLiteral("\n"))); diff --git a/src/colnod/colnodapi.cpp b/src/colnod/colnodapi.cpp index 75147b5..4f42972 100644 --- a/src/colnod/colnodapi.cpp +++ b/src/colnod/colnodapi.cpp @@ -37,6 +37,8 @@ bool ColnodAPI::downloadData(const qint64 &time) } AuthToken token; + qDebug(colnod) << "Data:" << login->responseData(); + if (checkResponse(login->responseData())) { qCWarning(colnod) << "empty response data when logging in"; emit downloadDataFinished(nullptr); @@ -231,12 +233,15 @@ std::shared_ptr ColnodAPI::requestLogin() QString encodedPassword = QCryptographicHash::hash( password().toLocal8Bit(), // -> bytearray QCryptographicHash::Sha512 // SHA 512 - ).toHex().toUpper(); + ).toHex(); login.setPassword(encodedPassword); auto loginRequest = composeRequest("/AaaManager/authSession", login.jsonData()); - loginRequest->setUserName(login.username()); - loginRequest->setPassword(login.password()); +// loginRequest->setUserName(login.username()); +// loginRequest->setPassword(login.password()); + QMap header; +// loginRequest->addHeader("client-id", mClientId); +// loginRequest->addHeader("x-api-key", mApiKey); mReqMan->processRequest(loginRequest); return loginRequest; @@ -293,7 +298,12 @@ std::shared_ptr ColnodAPI::deleteTokens(const QList std::shared_ptr ColnodAPI::composeRequest(const QString &endpoint, const QByteArray &data) { QString url = mHost + endpoint; - return std::make_shared("POST", url, data); + auto request = std::make_shared("POST", url, data); + + request->addHeader("client-id", mClientId); + request->addHeader("x-api-key", mApiKey); + + return request; } bool ColnodAPI::checkRequest(const std::shared_ptr &request) diff --git a/src/colnod/colnodapi.h b/src/colnod/colnodapi.h index d105c33..360c422 100644 --- a/src/colnod/colnodapi.h +++ b/src/colnod/colnodapi.h @@ -1,9 +1,10 @@ #pragma once -#include "serversdk/requestmanager.h" -#include "serversdk/request.h" -#include "serversdk/databasetable.h" -#include "serversdk/logger.h" +#include +#include +#include +#include + #include "data.h" Q_DECLARE_LOGGING_CATEGORY(colnod) @@ -57,7 +58,7 @@ class ColnodAPI: public QObject friend class ColnodTest; public: ColnodAPI() = default; - ColnodAPI(serversdk::RequestManager* reqManconst, const bool &dryMode = false, QString userName = "spaceti", QString password = "spaceti1"); + ColnodAPI(serversdk::RequestManager* reqManconst, const bool &dryMode = false, QString userName = "spaceti", QString password = "Churchill.2020"); /** * @brief Downloading changed data from Colnod since last Synchronization * @@ -125,13 +126,17 @@ signals: private: serversdk::RequestManager* mReqMan = nullptr; - QString mHost = "https://192.168.1.3:8443"; + // QString mHost = "https://192.168.254.11:8443"; + QString mHost = "https://127.0.0.1:8443"; QString mUserName; QString mPassword; bool mDryMode = false; bool mValid = true; bool mSuccess = true; + QString mClientId = "CND5EXTMAN"; + QString mApiKey = "8ef1a4dd-2cea-4398-a174-fe1d95aec7ad"; + QString authToken; }; diff --git a/src/colnod/databaseapi.cpp b/src/colnod/databaseapi.cpp index cb3b667..3a4f340 100644 --- a/src/colnod/databaseapi.cpp +++ b/src/colnod/databaseapi.cpp @@ -14,7 +14,7 @@ DatabaseAPI::DatabaseAPI(serversdk::DatabaseManager *dbMan, bool dryMode) bool DatabaseAPI::open(const QString& host, const QString& name, const QString& user, const QString& password) { - return mDbMan->openPostgres(host, name, user, password); + return mDbMan->openMysql(host, name, user, password); } bool DatabaseAPI::executeQuery(QSqlQuery &query, const QString &statement) @@ -167,7 +167,7 @@ void DatabaseAPI::reupdateDeleted(const QList& ids) qint64 DatabaseAPI::getNow() { auto query = mDbMan->createQuery(); - if (!executeQuery(query, "SELECT EXTRACT(EPOCH FROM NOW())*1000")) { + if (!executeQuery(query, "SELECT UNIX_TIMESTAMP()*1000")) { qCritical(database) << "ERROR during getting acctual time from db"; return -1; } @@ -261,9 +261,11 @@ std::shared_ptr DatabaseAPI::getToken(const QString &id) { auto query = mDbMan->createQuery(); query.prepare("SELECT * FROM colnod_token WHERE id = :id"); - query.bindValue(":id", id); + QString tempId = "'" + id + "'"; + query.bindValue(":id", tempId); if (!executeQuery(query)) { qCritical(database) << "ERROR during accessing existing tokens. EXIT"; + qInfo(database) << "Query error:" << query.lastError().text(); return nullptr; } auto list = utils->tableFromQuery(query); diff --git a/src/colnod/databaseapi.h b/src/colnod/databaseapi.h index bc9ae64..1c79d72 100644 --- a/src/colnod/databaseapi.h +++ b/src/colnod/databaseapi.h @@ -1,15 +1,15 @@ #pragma once #include +#include + +#include +#include +#include +#include #include "data.h" -#include "serversdk/databasemanager.h" -#include "serversdk/databasetable.h" -#include "serversdk/databaseutils.h" -#include "serversdk/logger.h" -#include - Q_DECLARE_LOGGING_CATEGORY(database) @@ -28,10 +28,11 @@ public: * @param password * @return True if success False otherwise */ - bool open(const QString& host = "192.168.1.94", - const QString& name = "deloitte", - const QString& user = "postgres", - const QString& password = "34rjkciea12"); + bool open(//const QString& host = "penta", + const QString& host = "127.0.0.1", + const QString& name = "spaceti", + const QString& user = "spaceti", + const QString& password = "27dML4aKJr"); std::shared_ptr downloadData(); diff --git a/src/colnod/subject.h b/src/colnod/subject.h index 6287ae4..229a53b 100644 --- a/src/colnod/subject.h +++ b/src/colnod/subject.h @@ -1,10 +1,11 @@ #pragma once #include -#include "serversdk/databasetable.h" #include #include +#include + class SubjectAttribute : public serversdk::DatabaseTable { Q_OBJECT TABLE_PROPERTY(QString, id, setId, "") diff --git a/src/colnod/token.h b/src/colnod/token.h index 3ec1068..cf9538d 100644 --- a/src/colnod/token.h +++ b/src/colnod/token.h @@ -1,12 +1,13 @@ #pragma once #include -#include "serversdk/databasetable.h" #include #include #include #include +#include + class Token : public serversdk::DatabaseTable { Q_OBJECT TABLE_PROPERTY(QString, id, setId, QString())