ssu
ssu.h
Go to the documentation of this file.
1 
9 /*
10  * This library is free software; you can redistribute it and/or
11  * modify it under the terms of the GNU Lesser General Public
12  * License as published by the Free Software Foundation; either
13  * version 2.1 of the License, or (at your option) any later version.
14  *
15  * This library is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18  * Lesser General Public License for more details.
19  *
20  * You should have received a copy of the GNU Lesser General Public
21  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
22  *
23  */
24 
25 #ifndef _Ssu_H
26 #define _Ssu_H
27 
28 #include <QDateTime>
29 #include <QObject>
30 #include <QDebug>
31 
32 class QNetworkAccessManager;
33 class QNetworkReply;
34 class QDomDocument;
35 
36 class Ssu: public QObject
37 {
38  Q_OBJECT
39 
40  friend class UrlResolverTest;
41 
42  Q_PROPERTY(bool registered READ isRegistered NOTIFY registrationStatusChanged)
43  Q_PROPERTY(DeviceModeFlags deviceMode READ deviceMode CONSTANT)
44  Q_PROPERTY(QString domain READ domain CONSTANT)
45 public:
49  enum RepoFilter {
54  };
55 
66  enum DeviceMode {
68  RndMode = 0x2,
69  ReleaseMode = 0x4,
70  LenientMode = 0x8,
71  UpdateMode = 0x10,
73  };
74 
75  Q_DECLARE_FLAGS(DeviceModeFlags, DeviceMode)
76  Q_FLAGS(DeviceModeFlags)
77 
78 
81  enum DisplayType {
85  };
86 
90  enum EditMode {
91  Replace = 0x1,
92  Add = 0x2,
93  Remove = 0x4,
94  };
95 
99  enum ReturnValue {
100  Success = 0,
101  ErrUpdateMode = -10,
102  };
103 
104  Ssu();
109  QPair<QString, QString> credentials(const QString &scope);
119  QString credentialsScope(const QString &repoName, bool rndRepo = false);
123  QString credentialsUrl(const QString &scope);
129  Q_INVOKABLE bool error();
135  Q_INVOKABLE QString lastError();
140  QString repoUrl(const QString &repoName, bool rndRepo = false,
141  QHash<QString, QString> repoParameters = QHash<QString, QString>(),
142  QHash<QString, QString> parametersOverride = QHash<QString, QString>());
149  Q_INVOKABLE void unregister();
150 
151  // wrappers around SsuCoreConfig
152  // not all of those belong into SsuCoreConfig, but will go there
153  // in the first phase of refactoring
154 
156  Q_INVOKABLE QString flavour();
158  Q_INVOKABLE DeviceModeFlags deviceMode();
160  Q_INVOKABLE QString domain();
162  Q_INVOKABLE QString brand();
164  Q_INVOKABLE bool isRegistered();
166  Q_INVOKABLE QDateTime lastCredentialsUpdate();
168  Q_INVOKABLE QString release(bool rnd = false);
170  Q_INVOKABLE void setDeviceMode(DeviceModeFlags mode, enum EditMode editMode = Replace);
172  Q_INVOKABLE void setFlavour(const QString &flavour);
174  Q_INVOKABLE void setRelease(const QString &release, bool rnd = false);
176  Q_INVOKABLE void setDomain(const QString &domain);
178  Q_INVOKABLE bool useSslVerify();
179 
180  Q_INVOKABLE QStringList listDomains();
181  Q_INVOKABLE void setDomainConfig(const QString &domain, QVariantMap config);
182  Q_INVOKABLE QVariantMap getDomainConfig(const QString &domain);
183 private:
184  QString errorString;
185  bool errorFlag;
186  QNetworkAccessManager *manager;
187  int pendingRequests;
188  bool registerDevice(QDomDocument *response);
189  bool setCredentials(QDomDocument *response);
190  bool verifyResponse(QDomDocument *response);
191  void storeAuthorizedKeys(const QByteArray &data);
192 
193 private slots:
194  void requestFinished(QNetworkReply *reply);
199  void setError(const QString &errorMessage);
200 
201 public slots:
211  void sendRegistration(const QString &username, const QString &password);
223  void updateCredentials(bool force = false);
227  void updateStoreCredentials();
228 
229 signals:
233  void done();
238  void credentialsChanged();
239 };
240 
241 Q_DECLARE_OPERATORS_FOR_FLAGS(Ssu::DeviceModeFlags)
242 
243 #endif
Ssu::updateCredentials
void updateCredentials(bool force=false)
Definition: ssu.cpp:628
Ssu::flavour
Q_INVOKABLE QString flavour()
See SsuCoreConfig::flavour.
Definition: ssu.cpp:156
Ssu::ReleaseMode
@ ReleaseMode
Enable Release mode.
Definition: ssu.h:69
Ssu::Add
@ Add
Make sure the given value is set in the bitmask.
Definition: ssu.h:92
Ssu::credentialsUrl
QString credentialsUrl(const QString &scope)
Definition: ssu.cpp:144
Ssu::brand
Q_INVOKABLE QString brand()
See SsuCoreConfig::brand.
Definition: ssu.cpp:174
Ssu::sendRegistration
void sendRegistration(const QString &username, const QString &password)
Definition: ssu.cpp:409
Ssu::setFlavour
Q_INVOKABLE void setFlavour(const QString &flavour)
See SsuCoreConfig::setFlavour.
Definition: ssu.cpp:203
Ssu::NoFilter
@ NoFilter
All repositories (global + user)
Definition: ssu.h:50
Ssu::setDeviceMode
Q_INVOKABLE void setDeviceMode(DeviceModeFlags mode, enum EditMode editMode=Replace)
See SsuCoreConfig::setDeviceMode.
Definition: ssu.cpp:197
Ssu::Remove
@ Remove
Make sure the given value is not set in the bitmask.
Definition: ssu.h:93
Ssu::RndMode
@ RndMode
Enable RnD mode for device.
Definition: ssu.h:68
Ssu::useSslVerify
Q_INVOKABLE bool useSslVerify()
See SsuCoreConfig::useSslVerify.
Definition: ssu.cpp:221
Ssu
Definition: ssu.h:36
Ssu::UpdateMode
@ UpdateMode
Do repo isolation and similar bits important for updating devices.
Definition: ssu.h:71
Ssu::isRegistered
Q_INVOKABLE bool isRegistered()
See SsuCoreConfig::isRegistered.
Definition: ssu.cpp:179
Ssu::credentials
QPair< QString, QString > credentials(const QString &scope)
Definition: ssu.cpp:95
Ssu::lastCredentialsUpdate
Q_INVOKABLE QDateTime lastCredentialsUpdate()
See SsuCoreConfig::lastCredentialsUpdate.
Definition: ssu.cpp:185
Ssu::updateStoreCredentials
void updateStoreCredentials()
Definition: ssu.cpp:704
Ssu::done
void done()
Ssu::DisableRepoManager
@ DisableRepoManager
Disable automagic repository management.
Definition: ssu.h:67
Ssu::setDomain
Q_INVOKABLE void setDomain(const QString &domain)
See SsuCoreConfig::setDomain.
Definition: ssu.cpp:215
Ssu::EditMode
EditMode
Definition: ssu.h:90
Ssu::DisplayType
DisplayType
Definition: ssu.h:81
Ssu::repoUrl
QString repoUrl(const QString &repoName, bool rndRepo=false, QHash< QString, QString > repoParameters=QHash< QString, QString >(), QHash< QString, QString > parametersOverride=QHash< QString, QString >())
Definition: ssu.cpp:312
Ssu::LenientMode
@ LenientMode
Disable strict mode (i.e., keep unmanaged repositories)
Definition: ssu.h:70
Ssu::unregister
Q_INVOKABLE void unregister()
Definition: ssu.cpp:732
Ssu::credentialsScope
QString credentialsScope(const QString &repoName, bool rndRepo=false)
Definition: ssu.cpp:101
Ssu::lastError
Q_INVOKABLE QString lastError()
Definition: ssu.cpp:231
Ssu::DeviceMode
DeviceMode
Definition: ssu.h:66
Ssu::release
Q_INVOKABLE QString release(bool rnd=false)
See SsuCoreConfig::release.
Definition: ssu.cpp:191
Ssu::registrationStatusChanged
void registrationStatusChanged()
Ssu::RepoFilter
RepoFilter
Definition: ssu.h:49
Ssu::Replace
@ Replace
Replace the old value with the new one.
Definition: ssu.h:91
Ssu::DeviceModel
@ DeviceModel
Marketed device name, like Pogoblaster 3000. Board mappings key "prettyModel".
Definition: ssu.h:83
Ssu::AppInstallMode
@ AppInstallMode
Do repo isolation, but keep store repository enabled.
Definition: ssu.h:72
Ssu::DeviceManufacturer
@ DeviceManufacturer
Manufacturer, like ACME Corp. Board mappings key "deviceManufacturer".
Definition: ssu.h:82
Ssu::error
Q_INVOKABLE bool error()
Definition: ssu.cpp:150
Ssu::ReturnValue
ReturnValue
Definition: ssu.h:99
Ssu::BoardFilter
@ BoardFilter
Only global repositories, with user blacklist ignored.
Definition: ssu.h:52
UrlResolverTest
Definition: urlresolvertest.h:17
Ssu::setRelease
Q_INVOKABLE void setRelease(const QString &release, bool rnd=false)
See SsuCoreConfig::setRelease.
Definition: ssu.cpp:209
Ssu::BoardFilterUserBlacklist
@ BoardFilterUserBlacklist
Only global repositories, with user blacklist applied.
Definition: ssu.h:53
Ssu::DeviceDesignation
@ DeviceDesignation
Type designation, like NCC-1701. Beard mappings key "deviceDesignation".
Definition: ssu.h:84
Ssu::UserFilter
@ UserFilter
Only user configured repositories.
Definition: ssu.h:51