account->setUrl(hostUrl);
account->setSslErrorHandler(sslErrorHandler);
+ account->setTrustCertificates(options.trustSSL);
QEventLoop loop;
auto *job = new JsonApiJob(account, QLatin1String("ocs/v1.php/cloud/capabilities"));
bool SimpleSslErrorHandler::handleErrors(QList<QSslError> errors, const QSslConfiguration &conf, QList<QSslCertificate> *certs, OCC::AccountPtr account)
{
- (void)account;
- (void)conf;
+ Q_UNUSED(conf);
- if (!certs) {
- qDebug() << "Certs parameter required but is NULL!";
+ if (!account || !certs) {
+ qDebug() << "account and certs parameters are required!";
return false;
}
+ if (account->trustCertificates()) {
+ for (const auto &error : qAsConst(errors)) {
+ certs->append(error.certificate());
+ }
+ return true;
+ }
+
for (const auto &error : qAsConst(errors)) {
- certs->append(error.certificate());
+ if (!account->approvedCerts().contains(error.certificate())) {
+ certs->append(error.certificate());
+ return false;
+ }
}
+
return true;
}
}
return false;
}
+void Account::setTrustCertificates(bool trustCertificates)
+{
+ _trustCertificates = trustCertificates;
+}
+
+bool Account::trustCertificates() const
+{
+ return _trustCertificates;
+}
+
} // namespace OCC
bool fileCanBeUnlocked(SyncJournalDb * const journal, const QString &folderRelativePath) const;
+ void setTrustCertificates(bool trustCertificates);
+ [[nodiscard]] bool trustCertificates() const;
+
public slots:
/// Used when forgetting credentials
void clearQNAMCache();
static QString davPathBase();
+ bool _trustCertificates = false;
+
QWeakPointer<Account> _sharedThis;
QString _id;
QString _davUser;