Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/browser/BrowserService.h')
-rw-r--r--src/browser/BrowserService.h122
1 files changed, 70 insertions, 52 deletions
diff --git a/src/browser/BrowserService.h b/src/browser/BrowserService.h
index 495c9ac25..6567a44d0 100644
--- a/src/browser/BrowserService.h
+++ b/src/browser/BrowserService.h
@@ -1,7 +1,7 @@
/*
* Copyright (C) 2013 Francois Ferrand
* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com>
- * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ * Copyright (C) 2020 KeePassXC Team <team@keepassxc.org>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -21,8 +21,9 @@
#define BROWSERSERVICE_H
#include "core/Entry.h"
-#include "gui/DatabaseTabWidget.h"
#include <QObject>
+#include <QPointer>
+#include <QSharedPointer>
#include <QtCore>
typedef QPair<QString, QString> StringPair;
@@ -33,28 +34,32 @@ enum
max_length = 16 * 1024
};
+class DatabaseWidget;
+class BrowserHost;
+class BrowserAction;
+
class BrowserService : public QObject
{
Q_OBJECT
public:
- enum ReturnValue
- {
- Success,
- Error,
- Canceled
- };
+ explicit BrowserService();
+ static BrowserService* instance();
- explicit BrowserService(DatabaseTabWidget* parent);
+ void setEnabled(bool enabled);
+
+ QString getKey(const QString& id);
+ QString storeKey(const QString& key);
+ QString getDatabaseHash(bool legacy = false);
bool isDatabaseOpened() const;
bool openDatabase(bool triggerUnlock);
- QString getDatabaseRootUuid();
- QString getDatabaseRecycleBinUuid();
- QJsonObject getDatabaseGroups(const QSharedPointer<Database>& selectedDb = {});
+ void lockDatabase();
+
+ QJsonObject getDatabaseGroups();
QJsonObject createNewGroup(const QString& groupName);
- QString getKey(const QString& id);
- void addEntry(const QString& id,
+
+ void addEntry(const QString& dbid,
const QString& login,
const QString& password,
const QString& url,
@@ -63,43 +68,39 @@ public:
const QString& group,
const QString& groupUuid,
const QSharedPointer<Database>& selectedDb = {});
- QList<Entry*> searchEntries(const QSharedPointer<Database>& db, const QString& url, const QString& submitUrl);
- QList<Entry*> searchEntries(const QString& url, const QString& submitUrl, const StringPairList& keyList);
- void convertAttributesToCustomData(const QSharedPointer<Database>& currentDb = {});
+ bool updateEntry(const QString& dbid,
+ const QString& uuid,
+ const QString& login,
+ const QString& password,
+ const QString& url,
+ const QString& submitUrl);
+
+ QJsonArray findMatchingEntries(const QString& dbid,
+ const QString& url,
+ const QString& submitUrl,
+ const QString& realm,
+ const StringPairList& keyList,
+ const bool httpAuth = false);
+
+ static void convertAttributesToCustomData(QSharedPointer<Database> db);
-public:
static const QString KEEPASSXCBROWSER_NAME;
static const QString KEEPASSXCBROWSER_OLD_NAME;
- static const QString ASSOCIATE_KEY_PREFIX;
- static const QString LEGACY_ASSOCIATE_KEY_PREFIX;
static const QString OPTION_SKIP_AUTO_SUBMIT;
static const QString OPTION_HIDE_ENTRY;
static const QString OPTION_ONLY_HTTP_AUTH;
static const QString ADDITIONAL_URL;
+signals:
+ void requestUnlock();
+
public slots:
- QJsonArray findMatchingEntries(const QString& id,
- const QString& url,
- const QString& submitUrl,
- const QString& realm,
- const StringPairList& keyList,
- const bool httpAuth = false);
- QString storeKey(const QString& key);
- ReturnValue updateEntry(const QString& id,
- const QString& uuid,
- const QString& login,
- const QString& password,
- const QString& url,
- const QString& submitUrl);
void databaseLocked(DatabaseWidget* dbWidget);
void databaseUnlocked(DatabaseWidget* dbWidget);
- void activateDatabaseChanged(DatabaseWidget* dbWidget);
- void lockDatabase();
+ void activeDatabaseChanged(DatabaseWidget* dbWidget);
-signals:
- void databaseLocked();
- void databaseUnlocked();
- void databaseChanged();
+private slots:
+ void processClientMessage(const QJsonObject& message);
private:
enum Access
@@ -116,15 +117,17 @@ private:
Hidden
};
-private:
+ QList<Entry*> searchEntries(const QSharedPointer<Database>& db, const QString& url, const QString& submitUrl);
+ QList<Entry*> searchEntries(const QString& url, const QString& submitUrl, const StringPairList& keyList);
QList<Entry*> sortEntries(QList<Entry*>& pwEntries, const QString& host, const QString& submitUrl);
- bool confirmEntries(QList<Entry*>& pwEntriesToConfirm,
- const QString& url,
- const QString& host,
- const QString& submitUrl,
- const QString& realm,
- const bool httpAuth);
+ QList<Entry*> confirmEntries(QList<Entry*>& pwEntriesToConfirm,
+ const QString& url,
+ const QString& host,
+ const QString& submitUrl,
+ const QString& realm,
+ const bool httpAuth);
QJsonObject prepareEntry(const Entry* entry);
+ QJsonArray getChildrenFromGroup(Group* group);
Access checkAccess(const Entry* entry, const QString& host, const QString& submitHost, const QString& realm);
Group* getDefaultEntryGroup(const QSharedPointer<Database>& selectedDb = {});
int
@@ -135,21 +138,36 @@ private:
QString baseDomain(const QString& hostname) const;
QSharedPointer<Database> getDatabase();
QSharedPointer<Database> selectedDatabase();
- QJsonArray getChildrenFromGroup(Group* group);
- bool moveSettingsToCustomData(Entry* entry, const QString& name) const;
- int moveKeysToCustomData(Entry* entry, const QSharedPointer<Database>& db) const;
- bool checkLegacySettings();
+ QString getDatabaseRootUuid();
+ QString getDatabaseRecycleBinUuid();
+
+ bool checkLegacySettings(QSharedPointer<Database> db);
+
void hideWindow() const;
void raiseWindow(const bool force = false);
+ void updateWindowState();
+
+ static bool moveSettingsToCustomData(Entry* entry, const QString& name);
+ static int moveKeysToCustomData(Entry* entry, QSharedPointer<Database> db);
+
+ QPointer<BrowserHost> m_browserHost;
+ QHash<QString, QSharedPointer<BrowserAction>> m_browserClients;
-private:
- DatabaseTabWidget* const m_dbTabWidget;
bool m_dialogActive;
bool m_bringToFrontRequested;
WindowState m_prevWindowState;
QUuid m_keepassBrowserUUID;
+ QPointer<DatabaseWidget> m_currentDatabaseWidget;
+
+ Q_DISABLE_COPY(BrowserService);
+
friend class TestBrowser;
};
+static inline BrowserService* browserService()
+{
+ return BrowserService::instance();
+}
+
#endif // BROWSERSERVICE_H