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

BrowserService.h « browser « src - github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 5a96e1ecd2a8f8f6d5e54ae26a7bbfb8dd01891c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/*
*  Copyright (C) 2013 Francois Ferrand
*  Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com>
*  Copyright (C) 2017 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
*  the Free Software Foundation, either version 2 or (at your option)
*  version 3 of the License.
*
*  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
*  GNU General Public License for more details.
*
*  You should have received a copy of the GNU General Public License
*  along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

#ifndef BROWSERSERVICE_H
#define BROWSERSERVICE_H

#include <QtCore>
#include <QObject>
#include "gui/DatabaseTabWidget.h"
#include "core/Entry.h"

enum { max_length = 16*1024 };

class BrowserService : public QObject
{
    Q_OBJECT

public:
    explicit        BrowserService(DatabaseTabWidget* parent);

    bool            isDatabaseOpened() const;
    bool            openDatabase(bool triggerUnlock);
    QString         getDatabaseRootUuid();
    QString         getDatabaseRecycleBinUuid();
    Entry*          getConfigEntry(bool create = false);
    QString         getKey(const QString& id);
    void            addEntry(const QString& id, const QString& login, const QString& password, const QString& url, const QString& submitUrl, const QString& realm);
    QList<Entry*>   searchEntries(Database* db, const QString& hostname);
    QList<Entry*>   searchEntries(const QString& text);
    void            removeSharedEncryptionKeys();
    void            removeStoredPermissions();

public slots:
    QJsonArray      findMatchingEntries(const QString& id, const QString& url, const QString& submitUrl, const QString& realm);
    QString         storeKey(const QString& key);
    void            updateEntry(const QString& id, const QString& uuid, const QString& login, const QString& password, const QString& url);
    void            databaseLocked(DatabaseWidget* dbWidget);
    void            databaseUnlocked(DatabaseWidget* dbWidget);
    void            activateDatabaseChanged(DatabaseWidget* dbWidget);
    void            lockDatabase();

signals:
    void            databaseLocked();
    void            databaseUnlocked();
    void            databaseChanged();

private:
    enum Access     { Denied, Unknown, Allowed};

private:
    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& submitHost, const QString& realm);
    QJsonObject     prepareEntry(const Entry* entry);
    Access          checkAccess(const Entry* entry, const QString& host, const QString& submitHost, const QString& realm);
    Group*          findCreateAddEntryGroup();
    int             sortPriority(const Entry* entry, const QString &host, const QString& submitUrl, const QString& baseSubmitUrl) const;
    bool            matchUrlScheme(const QString& url);
    bool            removeFirstDomain(QString& hostname);
    Database*       getDatabase();

private:
    DatabaseTabWidget* const    m_dbTabWidget;
    bool                        m_dialogActive;
};

#endif // BROWSERSERVICE_H