mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2024-10-01 01:26:01 -04:00
Extracting openDatabaseFile.
This commit is contained in:
parent
db1bf88934
commit
993f90cb2c
@ -22,14 +22,12 @@
|
|||||||
|
|
||||||
#include <QCommandLineParser>
|
#include <QCommandLineParser>
|
||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
#include <QFile>
|
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
#include <QTextStream>
|
#include <QTextStream>
|
||||||
|
|
||||||
#include "core/Database.h"
|
#include "core/Database.h"
|
||||||
#include "core/Entry.h"
|
#include "core/Entry.h"
|
||||||
#include "core/Group.h"
|
#include "core/Group.h"
|
||||||
#include "format/KeePass2Reader.h"
|
|
||||||
#include "keys/CompositeKey.h"
|
#include "keys/CompositeKey.h"
|
||||||
|
|
||||||
int Show::execute(int argc, char **argv)
|
int Show::execute(int argc, char **argv)
|
||||||
@ -57,22 +55,8 @@ int Show::execute(int argc, char **argv)
|
|||||||
QString line = inputTextStream.readLine();
|
QString line = inputTextStream.readLine();
|
||||||
CompositeKey key = CompositeKey::readFromLine(line);
|
CompositeKey key = CompositeKey::readFromLine(line);
|
||||||
|
|
||||||
QString databaseFilename = args.at(0);
|
Database* db = Database::openDatabaseFile(args.at(0), key);
|
||||||
QFile dbFile(databaseFilename);
|
if (db == nullptr) {
|
||||||
if (!dbFile.exists()) {
|
|
||||||
qCritical("File %s does not exist.", qPrintable(databaseFilename));
|
|
||||||
return EXIT_FAILURE;
|
|
||||||
}
|
|
||||||
if (!dbFile.open(QIODevice::ReadOnly)) {
|
|
||||||
qCritical("Unable to open file %s.", qPrintable(databaseFilename));
|
|
||||||
return EXIT_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
KeePass2Reader reader;
|
|
||||||
Database* db = reader.readDatabase(&dbFile, key);
|
|
||||||
|
|
||||||
if (reader.hasError()) {
|
|
||||||
qCritical("Error while parsing the database:\n%s\n", qPrintable(reader.errorString()));
|
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#include "core/Metadata.h"
|
#include "core/Metadata.h"
|
||||||
#include "crypto/Random.h"
|
#include "crypto/Random.h"
|
||||||
#include "format/KeePass2.h"
|
#include "format/KeePass2.h"
|
||||||
|
#include "format/KeePass2Reader.h"
|
||||||
|
|
||||||
QHash<Uuid, Database*> Database::m_uuidMap;
|
QHash<Uuid, Database*> Database::m_uuidMap;
|
||||||
|
|
||||||
@ -355,3 +356,27 @@ const CompositeKey & Database::key() const
|
|||||||
return m_data.key;
|
return m_data.key;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Database* Database::openDatabaseFile(QString fileName, CompositeKey key)
|
||||||
|
{
|
||||||
|
|
||||||
|
QFile dbFile(fileName);
|
||||||
|
if (!dbFile.exists()) {
|
||||||
|
qCritical("File %s does not exist.", qPrintable(fileName));
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
if (!dbFile.open(QIODevice::ReadOnly)) {
|
||||||
|
qCritical("Unable to open file %s.", qPrintable(fileName));
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
KeePass2Reader reader;
|
||||||
|
Database* db = reader.readDatabase(&dbFile, key);
|
||||||
|
|
||||||
|
if (reader.hasError()) {
|
||||||
|
qCritical("Error while parsing the database: %s", qPrintable(reader.errorString()));
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
return db;
|
||||||
|
|
||||||
|
}
|
||||||
|
@ -118,6 +118,7 @@ public:
|
|||||||
Uuid uuid();
|
Uuid uuid();
|
||||||
|
|
||||||
static Database* databaseByUuid(const Uuid& uuid);
|
static Database* databaseByUuid(const Uuid& uuid);
|
||||||
|
static Database* openDatabaseFile(QString fileName, CompositeKey key);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void groupDataChanged(Group* group);
|
void groupDataChanged(Group* group);
|
||||||
|
Loading…
Reference in New Issue
Block a user