Skip to content

Commit

Permalink
[ssu] List configured domains and their variables. Fixes JB#47762
Browse files Browse the repository at this point in the history
  • Loading branch information
abranson committed Nov 1, 2019
1 parent 2a81fa8 commit 3c10bbd
Show file tree
Hide file tree
Showing 7 changed files with 81 additions and 3 deletions.
19 changes: 17 additions & 2 deletions dbus/org.nemo.ssu.xml
Expand Up @@ -4,8 +4,9 @@
<!--
/**
* DBus service for interfacing with ssu management
* Copyright (C) 2013 Jolla Ltd.
* Contact: Bernd Wachter <bernd.wachter@jollamobile.com>
* Copyright (C) 2013-2019 Jolla Ltd.
* Copyright (C) 2019 Open Mobile Platform LLC
* Contact: Andrew Branson <andrew.branson@jolla.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
Expand Down Expand Up @@ -103,6 +104,20 @@
</method>
<method name="updateRepos">
</method>
<method name="listDomains">
<arg direction="out" type="a(s)"/>
<annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="QStringList"/>
</method>
<method name="setDomainConfig">
<arg direction="in" type="s" name="domain"/>
<annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/>
<arg direction="in" type="a{ss}" name="config"/>
</method>
<method name="getDomainConfig">
<arg direction="in" type="s" name="domain"/>
<annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="QVariantMap"/>
<arg direction="out" type="a{ss}"/>
</method>

<method name="error">
<arg direction="out" type="b" name="status"/>
Expand Down
10 changes: 10 additions & 0 deletions declarative/plugins.qmltypes
Expand Up @@ -123,6 +123,16 @@ Module {
Parameter { name: "domain"; type: "string" }
}
Method { name: "useSslVerify"; type: "bool" }
Method { name: "listDomains"; type: "QStringList" }
Method {
name: "getDomainConfig"; type: "QVariantMap"
Parameter { name: "domain"; type: "string" }
}
Method {
name: "setDomainConfig"
Parameter { name: "domain"; type: "string" }
Parameter { name: "config"; type: "QVariantMap" }
}
}
Component {
name: "SsuFeatureModel"
Expand Down
29 changes: 29 additions & 0 deletions libssu/ssu.cpp
Expand Up @@ -262,6 +262,35 @@ bool Ssu::registerDevice(QDomDocument *response)
return true;
}

QStringList Ssu::listDomains() {
SsuSettings repoSettings(SSU_REPO_CONFIGURATION, SSU_REPO_CONFIGURATION_DIR);
QRegExp domainFilter("-domain$");
return repoSettings.childGroups().filter(domainFilter).replaceInStrings(domainFilter, "");
}

void Ssu::setDomainConfig(const QString &domain, QVariantMap config) {
SsuSettings repoSettings(SSU_REPO_CONFIGURATION, SSU_REPO_CONFIGURATION_DIR);
repoSettings.beginGroup(domain + "-domain");
repoSettings.remove("");

for (QVariantMap::iterator i = config.begin(); i != config.end(); i++) {
repoSettings.setValue(i.key(), i.value());
}
repoSettings.endGroup();
repoSettings.sync();
}

QVariantMap Ssu::getDomainConfig(const QString &domain) {
SsuSettings repoSettings(SSU_REPO_CONFIGURATION, SSU_REPO_CONFIGURATION_DIR);
QVariantMap config;
repoSettings.beginGroup(domain + "-domain");
foreach(QString key, repoSettings.allKeys()) {
config.insert(key, repoSettings.value(key).toString());
}
repoSettings.endGroup();
return config;
}

// RND repos have flavour (devel, testing, release), and release (latest, next)
// Release repos only have release (latest, next, version number)
QString Ssu::repoUrl(const QString &repoName, bool rndRepo,
Expand Down
3 changes: 3 additions & 0 deletions libssu/ssu.h
Expand Up @@ -160,6 +160,9 @@ class Ssu: public QObject
/// See SsuCoreConfig::useSslVerify
Q_INVOKABLE bool useSslVerify();

Q_INVOKABLE QStringList listDomains();
Q_INVOKABLE void setDomainConfig(const QString &domain, QVariantMap config);
Q_INVOKABLE QVariantMap getDomainConfig(const QString &domain);
private:
QString errorString;
bool errorFlag;
Expand Down
2 changes: 1 addition & 1 deletion libssu/ssusettings_p.h
Expand Up @@ -32,7 +32,7 @@ class SsuSettings: public QSettings

private:
QString defaultSettingsFile, settingsd;
void merge(bool keepOld = false);
void merge(bool keepOld = true);
static void merge(QSettings *masterSettings, const QStringList &settingsFiles);
void upgrade();

Expand Down
18 changes: 18 additions & 0 deletions ssud/ssud.cpp
Expand Up @@ -256,3 +256,21 @@ QList<SsuRepo> Ssud::listRepos(bool rnd)
autoclose.start();
return reposList;
}

QStringList Ssud::listDomains()
{
autoclose.start();
return ssu.listDomains();
}

void Ssud::setDomainConfig(const QString &domain, QVariantMap config)
{
ssu.setDomainConfig(domain, config);
autoclose.start();
}

QVariantMap Ssud::getDomainConfig(const QString &domain)
{
autoclose.start();
return ssu.getDomainConfig(domain);
}
3 changes: 3 additions & 0 deletions ssud/ssud.h
Expand Up @@ -48,6 +48,9 @@ public slots:
void addRepo(const QString &repo, const QString &url);
void updateRepos();
QList<SsuRepo> listRepos(bool rnd);
QStringList listDomains();
void setDomainConfig(const QString &domain, QVariantMap config);
QVariantMap getDomainConfig(const QString &domain);

bool error();
QString lastError();
Expand Down

0 comments on commit 3c10bbd

Please sign in to comment.