Skip to content

Commit

Permalink
[CA] Move ca-certificate path to domain section, using key _ca-certif…
Browse files Browse the repository at this point in the history
…icate
  • Loading branch information
Bernd Wachter committed Jul 6, 2013
1 parent b3e422a commit 5bf1178
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 8 deletions.
16 changes: 8 additions & 8 deletions libssu/ssu.cpp
Expand Up @@ -284,11 +284,11 @@ void Ssu::sendRegistration(QString usernameDomain, QString password){
username = usernameDomain;
}

if (!settings->contains("ca-certificate")){
setError("CA certificate for SSU not set (config key 'ca-certificate')");
ssuCaCertificate = SsuRepoManager::caCertificatePath();
if (ssuCaCertificate.isEmpty()){
setError("CA certificate for SSU not set ('_ca-certificate in domain')");
return;
} else
ssuCaCertificate = settings->value("ca-certificate").toString();
}

if (!settings->contains("register-url")){
ssuRegisterUrl = repoUrl("register-url");
Expand Down Expand Up @@ -459,11 +459,11 @@ void Ssu::updateCredentials(bool force){
}

QString ssuCaCertificate, ssuCredentialsUrl;
if (!settings->contains("ca-certificate")){
setError("CA certificate for SSU not set (config key 'ca-certificate')");
ssuCaCertificate = SsuRepoManager::caCertificatePath();
if (ssuCaCertificate.isEmpty()){
setError("CA certificate for SSU not set ('_ca-certificate in domain')");
return;
} else
ssuCaCertificate = settings->value("ca-certificate").toString();
}

if (!settings->contains("credentials-url")){
ssuCredentialsUrl = repoUrl("credentials-url");
Expand Down
19 changes: 19 additions & 0 deletions libssu/ssurepomanager.cpp
Expand Up @@ -41,6 +41,25 @@ void SsuRepoManager::add(QString repo, QString repoUrl){
ssuSettings->sync();
}

QString SsuRepoManager::caCertificatePath(QString domain){
SsuCoreConfig *settings = SsuCoreConfig::instance();
SsuSettings repoSettings(SSU_REPO_CONFIGURATION, QSettings::IniFormat);

if (domain.isEmpty())
domain = settings->domain();

QString ca = SsuVariables::variable(&repoSettings, domain + "-domain",
"_ca-certificate").toString();
if (!ca.isEmpty())
return ca;

// compat setting, can go away after some time
if (settings->contains("ca-certificate"))
return settings->value("ca-certificate").toString();

return "";
}

void SsuRepoManager::disable(QString repo){
SsuCoreConfig *ssuSettings = SsuCoreConfig::instance();
QStringList disabledRepos;
Expand Down
5 changes: 5 additions & 0 deletions libssu/ssurepomanager.h
Expand Up @@ -33,6 +33,11 @@ class SsuRepoManager: public QObject {
* parameter set to debug instead.
*/
void add(QString repo, QString repoUrl="");
/**
* Return the path to the CA certificate to be used for the given domain,
* or default domain, if omitted
*/
static QString caCertificatePath(QString domain="");
/**
* Disable a repository
*/
Expand Down

0 comments on commit 5bf1178

Please sign in to comment.