mirror of
https://github.com/qTox/qTox.git
synced 2024-03-22 14:00:36 +08:00
Encrypted Logs: part 1
This commit is contained in:
parent
e3d5853ca3
commit
172f1181c5
10
qtox.pro
10
qtox.pro
|
@ -139,7 +139,10 @@ HEADERS += src/widget/form/addfriendform.h \
|
|||
src/cameraworker.h \
|
||||
src/widget/videosurface.h \
|
||||
src/widget/form/loadhistorydialog.h \
|
||||
src/historykeeper.h
|
||||
src/historykeeper.h \
|
||||
src/misc/db/genericddinterface.h \
|
||||
src/misc/db/plaindb.h \
|
||||
src/misc/db/encrypteddb.h
|
||||
|
||||
SOURCES += \
|
||||
src/widget/form/addfriendform.cpp \
|
||||
|
@ -188,4 +191,7 @@ SOURCES += \
|
|||
src/cameraworker.cpp \
|
||||
src/widget/videosurface.cpp \
|
||||
src/widget/form/loadhistorydialog.cpp \
|
||||
src/historykeeper.cpp
|
||||
src/historykeeper.cpp \
|
||||
src/misc/db/genericddinterface.cpp \
|
||||
src/misc/db/plaindb.cpp \
|
||||
src/misc/db/encrypteddb.cpp
|
||||
|
|
60
src/misc/db/encrypteddb.cpp
Normal file
60
src/misc/db/encrypteddb.cpp
Normal file
|
@ -0,0 +1,60 @@
|
|||
/*
|
||||
Copyright (C) 2014 by Project Tox <https://tox.im>
|
||||
|
||||
This file is part of qTox, a Qt-based graphical interface for Tox.
|
||||
|
||||
This program is libre software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the COPYING file for more details.
|
||||
*/
|
||||
|
||||
#include "encrypteddb.h"
|
||||
#include "src/misc/settings.h"
|
||||
|
||||
#include <QDir>
|
||||
#include <QSqlQuery>
|
||||
|
||||
EncryptedDb::EncryptedDb(const QString &fname, const QString &key) :
|
||||
key(key), encrFile(fname), PlainDb(":memory:")
|
||||
{
|
||||
QList<QString> sqlCommands = decryptFile();
|
||||
for (const QString &cmd : sqlCommands)
|
||||
{
|
||||
PlainDb::exec(true, cmd);
|
||||
}
|
||||
}
|
||||
|
||||
EncryptedDb::~EncryptedDb()
|
||||
{
|
||||
// save to file if necessary
|
||||
}
|
||||
|
||||
QSqlQuery EncryptedDb::exec(bool keep, const QString &query)
|
||||
{
|
||||
QSqlQuery ret = PlainDb::exec(keep, query);
|
||||
if (keep)
|
||||
appendToEncrypted(query);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool EncryptedDb::save()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
QList<QString> EncryptedDb::decryptFile()
|
||||
{
|
||||
return QList<QString>();
|
||||
}
|
||||
|
||||
void EncryptedDb::appendToEncrypted(const QString &sql)
|
||||
{
|
||||
Q_UNUSED(sql)
|
||||
}
|
44
src/misc/db/encrypteddb.h
Normal file
44
src/misc/db/encrypteddb.h
Normal file
|
@ -0,0 +1,44 @@
|
|||
/*
|
||||
Copyright (C) 2014 by Project Tox <https://tox.im>
|
||||
|
||||
This file is part of qTox, a Qt-based graphical interface for Tox.
|
||||
|
||||
This program is libre software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the COPYING file for more details.
|
||||
*/
|
||||
|
||||
#ifndef ENCRYPTEDDB_H
|
||||
#define ENCRYPTEDDB_H
|
||||
|
||||
#include "plaindb.h"
|
||||
|
||||
#include <QList>
|
||||
|
||||
class EncryptedDb : public PlainDb
|
||||
{
|
||||
public:
|
||||
EncryptedDb(const QString& fname, const QString &key);
|
||||
virtual ~EncryptedDb();
|
||||
|
||||
virtual QSqlQuery exec(bool keep, const QString &query);
|
||||
virtual bool save();
|
||||
|
||||
private:
|
||||
QString getFileName(){return encrFile;}
|
||||
QString getKey(){return key;}
|
||||
|
||||
QList<QString> decryptFile();
|
||||
void appendToEncrypted(const QString &sql);
|
||||
|
||||
QString key;
|
||||
QString encrFile;
|
||||
};
|
||||
|
||||
#endif // ENCRYPTEDDB_H
|
21
src/misc/db/genericddinterface.cpp
Normal file
21
src/misc/db/genericddinterface.cpp
Normal file
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
Copyright (C) 2014 by Project Tox <https://tox.im>
|
||||
|
||||
This file is part of qTox, a Qt-based graphical interface for Tox.
|
||||
|
||||
This program is libre software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the COPYING file for more details.
|
||||
*/
|
||||
|
||||
#include "genericddinterface.h"
|
||||
|
||||
GenericDdInterface::~GenericDdInterface()
|
||||
{
|
||||
}
|
32
src/misc/db/genericddinterface.h
Normal file
32
src/misc/db/genericddinterface.h
Normal file
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
Copyright (C) 2014 by Project Tox <https://tox.im>
|
||||
|
||||
This file is part of qTox, a Qt-based graphical interface for Tox.
|
||||
|
||||
This program is libre software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the COPYING file for more details.
|
||||
*/
|
||||
|
||||
#ifndef GENERICDDINTERFACE_H
|
||||
#define GENERICDDINTERFACE_H
|
||||
|
||||
class QSqlQuery;
|
||||
class QString;
|
||||
|
||||
class GenericDdInterface
|
||||
{
|
||||
public:
|
||||
virtual ~GenericDdInterface();
|
||||
|
||||
virtual QSqlQuery exec(bool keep, const QString &query) = 0;
|
||||
virtual bool save() = 0;
|
||||
};
|
||||
|
||||
#endif // GENERICDDINTERFACE_H
|
49
src/misc/db/plaindb.cpp
Normal file
49
src/misc/db/plaindb.cpp
Normal file
|
@ -0,0 +1,49 @@
|
|||
/*
|
||||
Copyright (C) 2014 by Project Tox <https://tox.im>
|
||||
|
||||
This file is part of qTox, a Qt-based graphical interface for Tox.
|
||||
|
||||
This program is libre software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the COPYING file for more details.
|
||||
*/
|
||||
|
||||
#include "plaindb.h"
|
||||
#include <QDebug>
|
||||
#include <QSqlQuery>
|
||||
#include <QString>
|
||||
|
||||
PlainDb::PlainDb(const QString &db_name)
|
||||
{
|
||||
db = QSqlDatabase::addDatabase("QSQLITE");
|
||||
db.setDatabaseName(db_name);
|
||||
|
||||
if (!db.open())
|
||||
{
|
||||
qWarning() << QString("Can't open file: %1, history will not be saved!").arg(db_name);
|
||||
db.setDatabaseName(":memory:");
|
||||
db.open();
|
||||
}
|
||||
}
|
||||
|
||||
PlainDb::~PlainDb()
|
||||
{
|
||||
db.close();
|
||||
}
|
||||
|
||||
QSqlQuery PlainDb::exec(bool keep, const QString &query)
|
||||
{
|
||||
Q_UNUSED(keep)
|
||||
return db.exec(query);
|
||||
}
|
||||
|
||||
bool PlainDb::save()
|
||||
{
|
||||
return true;
|
||||
}
|
37
src/misc/db/plaindb.h
Normal file
37
src/misc/db/plaindb.h
Normal file
|
@ -0,0 +1,37 @@
|
|||
/*
|
||||
Copyright (C) 2014 by Project Tox <https://tox.im>
|
||||
|
||||
This file is part of qTox, a Qt-based graphical interface for Tox.
|
||||
|
||||
This program is libre software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the COPYING file for more details.
|
||||
*/
|
||||
|
||||
#ifndef PLAINDB_H
|
||||
#define PLAINDB_H
|
||||
|
||||
#include "genericddinterface.h"
|
||||
|
||||
#include <QSqlDatabase>
|
||||
|
||||
class PlainDb : public GenericDdInterface
|
||||
{
|
||||
public:
|
||||
PlainDb(const QString &db_name);
|
||||
virtual ~PlainDb();
|
||||
|
||||
virtual QSqlQuery exec(bool keep, const QString &query);
|
||||
virtual bool save();
|
||||
|
||||
private:
|
||||
QSqlDatabase db;
|
||||
};
|
||||
|
||||
#endif // PLAINDB_H
|
Loading…
Reference in New Issue
Block a user