1 // Copyright 2005-2019 The Mumble Developers. All rights reserved.
2 // Use of this source code is governed by a BSD-style license
3 // that can be found in the LICENSE file at the root of the
4 // Mumble source tree or at <https://www.mumble.info/LICENSE>.
5 
6 #ifndef MUMBLE_MUMBLE_DATABASE_H_
7 #define MUMBLE_MUMBLE_DATABASE_H_
8 
9 #include <QSqlDatabase>
10 #include "Settings.h"
11 #include "UnresolvedServerAddress.h"
12 
13 struct FavoriteServer {
14 	QString qsName;
15 	QString qsUsername;
16 	QString qsPassword;
17 	QString qsHostname;
18 	QString qsUrl;
19 	unsigned short usPort;
20 };
21 
22 class Database : public QObject {
23 	private:
24 		Q_OBJECT
25 		Q_DISABLE_COPY(Database)
26 
27 		QSqlDatabase db;
28 	public:
29 		Database(const QString &dbname);
30 		~Database() Q_DECL_OVERRIDE;
31 
32 		QList<FavoriteServer> getFavorites();
33 		void setFavorites(const QList<FavoriteServer> &servers);
34 		void setPassword(const QString &host, unsigned short port, const QString &user, const QString &pw);
35 		bool fuzzyMatch(QString &name, QString &user, QString &pw, QString &host, unsigned short port);
36 
37 		bool isLocalIgnored(const QString &hash);
38 		void setLocalIgnored(const QString &hash, bool ignored);
39 
40 		bool isLocalMuted(const QString &hash);
41 		void setLocalMuted(const QString &hash, bool muted);
42 
43 		float getUserLocalVolume(const QString &hash);
44 		void setUserLocalVolume(const QString &hash, float volume);
45 
46 		bool isChannelFiltered(const QByteArray &server_cert_digest, const int channel_id);
47 		void setChannelFiltered(const QByteArray &server_cert_digest, const int channel_id, bool hidden);
48 
49 		QMap<UnresolvedServerAddress, unsigned int> getPingCache();
50 		void setPingCache(const QMap<UnresolvedServerAddress, unsigned int> &cache);
51 
52 		bool seenComment(const QString &hash, const QByteArray &commenthash);
53 		void setSeenComment(const QString &hash, const QByteArray &commenthash);
54 
55 		QByteArray blob(const QByteArray &hash);
56 		void setBlob(const QByteArray &hash, const QByteArray &blob);
57 
58 		QStringList getTokens(const QByteArray &digest);
59 		void setTokens(const QByteArray &digest, QStringList &tokens);
60 
61 		QList<Shortcut> getShortcuts(const QByteArray &digest);
62 		bool setShortcuts(const QByteArray &digest, QList<Shortcut> &shortcuts);
63 
64 		void addFriend(const QString &name, const QString &hash);
65 		void removeFriend(const QString &hash);
66 		const QString getFriend(const QString &hash);
67 		const QMap<QString, QString> getFriends();
68 
69 		const QString getDigest(const QString &hostname, unsigned short port);
70 		void setDigest(const QString &hostname, unsigned short port, const QString &digest);
71 
72 		bool getUdp(const QByteArray &digest);
73 		void setUdp(const QByteArray &digest, bool udp);
74 };
75 
76 #endif
77