Migration to mysql and update request auth

This commit is contained in:
ondra 2020-12-10 19:13:37 +01:00
parent 9d7f967843
commit 9a73a46f61
8 changed files with 55 additions and 36 deletions

@ -1 +1 @@
Subproject commit d4c4d75b49fe7e0399a6c4e57a7bb32f82bee59d
Subproject commit 8aa786fa51dbbd9c82ec20f10892295c93c4054c

View File

@ -1,14 +1,13 @@
#include <QCoreApplication>
#include "syncmanager.h"
#include <QCommandLineParser>
#include "serversdk/requestmanager.h"
#include "serversdk/request.h"
#include "serversdk/logger.h"
#include "serversdk/core.h"
#include <serversdk/requestmanager.h>
#include <serversdk/request.h>
#include <serversdk/logger.h>
#include <serversdk/core.h>
#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")));

View File

@ -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<serversdk::Request> 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<QString, QString> header;
// loginRequest->addHeader("client-id", mClientId);
// loginRequest->addHeader("x-api-key", mApiKey);
mReqMan->processRequest(loginRequest);
return loginRequest;
@ -293,7 +298,12 @@ std::shared_ptr<serversdk::Request> ColnodAPI::deleteTokens(const QList<QString>
std::shared_ptr<serversdk::Request> ColnodAPI::composeRequest(const QString &endpoint, const QByteArray &data)
{
QString url = mHost + endpoint;
return std::make_shared<serversdk::Request>("POST", url, data);
auto request = std::make_shared<serversdk::Request>("POST", url, data);
request->addHeader("client-id", mClientId);
request->addHeader("x-api-key", mApiKey);
return request;
}
bool ColnodAPI::checkRequest(const std::shared_ptr<serversdk::Request> &request)

View File

@ -1,9 +1,10 @@
#pragma once
#include "serversdk/requestmanager.h"
#include "serversdk/request.h"
#include "serversdk/databasetable.h"
#include "serversdk/logger.h"
#include <serversdk/requestmanager.h>
#include <serversdk/request.h>
#include <serversdk/databasetable.h>
#include <serversdk/logger.h>
#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;
};

View File

@ -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<QString>& 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<Token> 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<Token>(query);

View File

@ -1,15 +1,15 @@
#pragma once
#include <QSql>
#include <QCoreApplication>
#include <serversdk/databasemanager.h>
#include <serversdk/databasetable.h>
#include <serversdk/databaseutils.h>
#include <serversdk/logger.h>
#include "data.h"
#include "serversdk/databasemanager.h"
#include "serversdk/databasetable.h"
#include "serversdk/databaseutils.h"
#include "serversdk/logger.h"
#include <QCoreApplication>
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<Data> downloadData();

View File

@ -1,10 +1,11 @@
#pragma once
#include <QDateTime>
#include "serversdk/databasetable.h"
#include <qjsondocument.h>
#include <QJsonObject>
#include <serversdk/databasetable.h>
class SubjectAttribute : public serversdk::DatabaseTable {
Q_OBJECT
TABLE_PROPERTY(QString, id, setId, "")

View File

@ -1,12 +1,13 @@
#pragma once
#include <QDateTime>
#include "serversdk/databasetable.h"
#include <QSqlQuery>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <serversdk/databasetable.h>
class Token : public serversdk::DatabaseTable {
Q_OBJECT
TABLE_PROPERTY(QString, id, setId, QString())