diff options
-rw-r--r-- | src/server/net/certmanager.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/server/net/certmanager.cpp b/src/server/net/certmanager.cpp index 933bbbc..0121538 100644 --- a/src/server/net/certmanager.cpp +++ b/src/server/net/certmanager.cpp @@ -40,16 +40,22 @@ bool getPrivateKeyAndCert(const QString &name, QSslKey &key, QSslCertificate &ce cert = _certs[name]; return true; } - QString certFile = QDir::homePath().append("/").append(CERTSTORAGE).append(name); + QString certDir = QDir::homePath().append("/").append(CERTSTORAGE); + if (!QDir::root().mkpath(certDir)) { + certDir = QString("/tmp/") + qrand() + "-" + qrand() + "/"; + QDir::root().mkpath(certDir); + } + QString certFile = certDir.append(name); QString keyFile = certFile; keyFile.append(".rsa"); certFile.append(".crt"); // if (!loadFiles(keyFile, certFile, key, cert)) { generateFiles(keyFile, certFile); - if (!loadFiles(keyFile, certFile, key, cert)) - qDebug() << "error while creating cert and key files\n"; - return false; + if (!loadFiles(keyFile, certFile, key, cert)) { + qDebug() << "error while creating cert and key files"; + return false; + } } _certs.insert(name, cert); _keys.insert(name, key); |