Cleanups, ownership for ssl error handler

This commit is contained in:
Daniel Molkentin 2013-10-24 12:55:26 +02:00
parent eda5feb82c
commit aa2baa45fb
4 changed files with 4 additions and 47 deletions

View file

@ -150,7 +150,7 @@ void Account::setApprovedCerts(const QList<QSslCertificate> certs)
void Account::setSslErrorHandler(AbstractSslErrorHandler *handler)
{
_sslErrorHandler = handler;
_sslErrorHandler.reset(handler);
}
void Account::setUrl(const QUrl &url)
@ -186,8 +186,7 @@ void Account::slotHandleErrors(QNetworkReply *reply , QList<QSslError> errors)
}
QList<QSslCertificate> approvedCerts;
AbstractSslErrorHandler *handler = sslErrorHandler();
if (handler && handler->handleErrors(errors, &approvedCerts, this)) {
if (!_sslErrorHandler.isNull() && _sslErrorHandler->handleErrors(errors, &approvedCerts, this)) {
QSslSocket::addDefaultCaCertificates(approvedCerts);
setApprovedCerts(approvedCerts);
// all ssl certs are known and accepted. We can ignore the problems right away.

View file

@ -49,6 +49,7 @@ private:
/* Reimplement this to handle SSL errors */
class AbstractSslErrorHandler {
public:
virtual ~AbstractSslErrorHandler() {}
virtual bool handleErrors(QList<QSslError>, QList<QSslCertificate>*, Account*) = 0;
};
@ -96,7 +97,6 @@ public:
QList<QSslCertificate> approvedCerts() const { return _approvedCerts; }
void setApprovedCerts(const QList<QSslCertificate> certs);
AbstractSslErrorHandler* sslErrorHandler() const { return _sslErrorHandler; }
void setSslErrorHandler(AbstractSslErrorHandler *handler);
static QUrl concatUrlPath(const QUrl &url, const QString &concatPath);
@ -113,7 +113,7 @@ private:
QList<QSslCertificate> _approvedCerts;
QList<QSslCertificate> _certificateChain;
bool _treatSslErrorsAsFailure;
AbstractSslErrorHandler *_sslErrorHandler;
QScopedPointer<AbstractSslErrorHandler> _sslErrorHandler;
};
}

View file

@ -148,15 +148,10 @@ Application::Application(int &argc, char **argv) :
QTimer::singleShot( 3000, this, SLOT( slotStartUpdateDetector() ));
}
// ###
// connect( ownCloudInfo::instance(), SIGNAL(sslFailed(QNetworkReply*, QList<QSslError>)),
// this,SLOT(slotSSLFailed(QNetworkReply*, QList<QSslError>)));
connect (this, SIGNAL(aboutToQuit()), SLOT(slotCleanup()));
qDebug() << "Network Location: " << NetworkLocation::currentLocation().encoded();
_socketApi = new SocketApi(this, cfg.configPathWithAppName().append(QLatin1String("socket")));
}
@ -246,42 +241,6 @@ void Application::slotConnectionValidatorResult(ConnectionValidator::Status stat
_conValidator->deleteLater();
}
void Application::slotSSLFailed( QNetworkReply *reply, QList<QSslError> errors )
{
// qDebug() << "SSL-Warnings happened for url " << reply->url().toString();
// if( ownCloudInfo::instance()->certsUntrusted() ) {
// // User decided once to untrust. Honor this decision.
// qDebug() << "Untrusted by user decision, returning.";
// return;
// }
// QString configHandle = ownCloudInfo::instance()->configHandle(reply);
// // make the ssl dialog aware of the custom config. It loads known certs.
// if( ! _sslErrorDialog ) {
// _sslErrorDialog = new SslErrorDialog;
// }
// _sslErrorDialog->setCustomConfigHandle( configHandle );
// if( _sslErrorDialog->setErrorList( errors ) ) {
// // all ssl certs are known and accepted. We can ignore the problems right away.
// qDebug() << "Certs are already known and trusted, Warnings are not valid.";
// reply->ignoreSslErrors();
// } else {
// if( _sslErrorDialog->exec() == QDialog::Accepted ) {
// if( _sslErrorDialog->trustConnection() ) {
// reply->ignoreSslErrors();
// } else {
// // User does not want to trust.
// ownCloudInfo::instance()->setCertsUntrusted(true);
// }
// } else {
// ownCloudInfo::instance()->setCertsUntrusted(true);
// }
// }
}
void Application::slotownCloudWizardDone( int res )
{
FolderMan *folderMan = FolderMan::instance();

View file

@ -79,7 +79,6 @@ protected slots:
void slotParseOptions( const QString& );
void slotCheckConnection();
void slotConnectionValidatorResult(ConnectionValidator::Status);
void slotSSLFailed( QNetworkReply *reply, QList<QSslError> errors );
void slotStartUpdateDetector();
void slotSetupProxy();
void slotUseMonoIconsChanged( bool );