Skip to content

Commit

Permalink
[auth] Reinstate auth system reply expansions for OWS providers
Browse files Browse the repository at this point in the history
- Apparently this was lost during a git squash of commits for 2.12 PR

(Needs forward-ported to 2.16, master_2 and master)
  • Loading branch information
dakcarto committed Aug 10, 2016
1 parent 90e4134 commit 5480a80
Show file tree
Hide file tree
Showing 12 changed files with 188 additions and 1 deletion.
14 changes: 14 additions & 0 deletions src/core/qgsgml.cpp
Expand Up @@ -103,6 +103,20 @@ int QgsGml::getFeatures( const QString& uri, QGis::WkbType* wkbType, QgsRectangl
}
QNetworkReply* reply = QgsNetworkAccessManager::instance()->get( request );

if ( !authcfg.isEmpty() )
{
if ( !QgsAuthManager::instance()->updateNetworkReply( reply, authcfg ) )
{
reply->deleteLater();
QgsMessageLog::logMessage(
tr( "GML Getfeature network reply update failed for authcfg %1" ).arg( authcfg ),
tr( "Network" ),
QgsMessageLog::CRITICAL
);
return 1;
}
}

connect( reply, SIGNAL( finished() ), this, SLOT( setFinished() ) );
connect( reply, SIGNAL( downloadProgress( qint64, qint64 ) ), this, SLOT( handleProgressEvent( qint64, qint64 ) ) );

Expand Down
35 changes: 35 additions & 0 deletions src/providers/wcs/qgswcscapabilities.cpp
Expand Up @@ -157,6 +157,14 @@ bool QgsWcsCapabilities::sendRequest( QString const & url )

QgsDebugMsg( QString( "getcapabilities: %1" ).arg( url ) );
mCapabilitiesReply = QgsNetworkAccessManager::instance()->get( request );
if ( !setAuthorizationReply( mCapabilitiesReply ) )
{
mCapabilitiesReply->deleteLater();
mCapabilitiesReply = nullptr;
mError = tr( "Download of capabilities failed: network reply update failed for authentication config" );
QgsMessageLog::logMessage( mError, tr( "WCS" ) );
return false;
}

connect( mCapabilitiesReply, SIGNAL( finished() ), this, SLOT( capabilitiesReplyFinished() ) );
connect( mCapabilitiesReply, SIGNAL( downloadProgress( qint64, qint64 ) ), this, SLOT( capabilitiesReplyProgress( qint64, qint64 ) ) );
Expand Down Expand Up @@ -368,6 +376,15 @@ void QgsWcsCapabilities::capabilitiesReplyFinished()
mCapabilitiesReply->deleteLater();
QgsDebugMsg( QString( "redirected getcapabilities: %1" ).arg( redirect.toString() ) );
mCapabilitiesReply = QgsNetworkAccessManager::instance()->get( request );
if ( !setAuthorizationReply( mCapabilitiesReply ) )
{
mCapabilitiesResponse.clear();
mCapabilitiesReply->deleteLater();
mCapabilitiesReply = nullptr;
mError = tr( "Download of capabilities failed: network reply update failed for authentication config" );
QgsMessageLog::logMessage( mError, tr( "WCS" ) );
return;
}

connect( mCapabilitiesReply, SIGNAL( finished() ), this, SLOT( capabilitiesReplyFinished() ) );
connect( mCapabilitiesReply, SIGNAL( downloadProgress( qint64, qint64 ) ), this, SLOT( capabilitiesReplyProgress( qint64, qint64 ) ) );
Expand All @@ -394,6 +411,15 @@ void QgsWcsCapabilities::capabilitiesReplyFinished()
mCapabilitiesReply->deleteLater();

mCapabilitiesReply = QgsNetworkAccessManager::instance()->get( request );
if ( !setAuthorizationReply( mCapabilitiesReply ) )
{
mCapabilitiesResponse.clear();
mCapabilitiesReply->deleteLater();
mCapabilitiesReply = nullptr;
mError = tr( "Download of capabilities failed: network reply update failed for authentication config" );
QgsMessageLog::logMessage( mError, tr( "WCS" ) );
return;
}
connect( mCapabilitiesReply, SIGNAL( finished() ), this, SLOT( capabilitiesReplyFinished() ) );
connect( mCapabilitiesReply, SIGNAL( downloadProgress( qint64, qint64 ) ), this, SLOT( capabilitiesReplyProgress( qint64, qint64 ) ) );
return;
Expand Down Expand Up @@ -1181,6 +1207,15 @@ bool QgsWcsCapabilities::setAuthorization( QNetworkRequest &request ) const
return true;
}

bool QgsWcsCapabilities::setAuthorizationReply( QNetworkReply *reply ) const
{
if ( mUri.hasParam( "authcfg" ) && !mUri.param( "authcfg" ).isEmpty() )
{
return QgsAuthManager::instance()->updateNetworkReply( reply, mUri.param( "authcfg" ) );
}
return true;
}

void QgsWcsCapabilities::showMessageBox( const QString& title, const QString& text )
{
QgsMessageOutput *message = QgsMessageOutput::createMessageOutput();
Expand Down
3 changes: 3 additions & 0 deletions src/providers/wcs/qgswcscapabilities.h
Expand Up @@ -155,6 +155,9 @@ class QgsWcsCapabilities : public QObject
//! set authorization header
bool setAuthorization( QNetworkRequest &request ) const;

//! set authorization reply
bool setAuthorizationReply( QNetworkReply * reply ) const;

QString version() const { return mCapabilities.version; }

/**
Expand Down
27 changes: 27 additions & 0 deletions src/providers/wcs/qgswcsprovider.cpp
Expand Up @@ -1684,6 +1684,15 @@ QgsWcsDownloadHandler::QgsWcsDownloadHandler( const QUrl& url, QgsWcsAuthorizati
request.setAttribute( QNetworkRequest::CacheLoadControlAttribute, cacheLoadControl );

mCacheReply = QgsNetworkAccessManager::instance()->get( request );
if ( !mAuth.setAuthorizationReply( mCacheReply ) )
{
mCacheReply->deleteLater();
mCacheReply = nullptr;
QgsMessageLog::logMessage( tr( "Network reply update failed for authentication config" ),
tr( "WCS" ) );
finish();
return;
}
connect( mCacheReply, SIGNAL( finished() ), this, SLOT( cacheReplyFinished() ) );
connect( mCacheReply, SIGNAL( downloadProgress( qint64, qint64 ) ), this, SLOT( cacheReplyProgress( qint64, qint64 ) ) );
}
Expand Down Expand Up @@ -1719,6 +1728,15 @@ void QgsWcsDownloadHandler::cacheReplyFinished()
return;
}
mCacheReply = QgsNetworkAccessManager::instance()->get( request );
if ( !mAuth.setAuthorizationReply( mCacheReply ) )
{
mCacheReply->deleteLater();
mCacheReply = nullptr;
QgsMessageLog::logMessage( tr( "Network reply update failed for authentication config" ),
tr( "WCS" ) );
finish();
return;
}
connect( mCacheReply, SIGNAL( finished() ), this, SLOT( cacheReplyFinished() ) );
connect( mCacheReply, SIGNAL( downloadProgress( qint64, qint64 ) ), this, SLOT( cacheReplyProgress( qint64, qint64 ) ) );

Expand Down Expand Up @@ -1883,6 +1901,15 @@ void QgsWcsDownloadHandler::cacheReplyFinished()
mCacheReply->deleteLater();

mCacheReply = QgsNetworkAccessManager::instance()->get( request );
if ( !mAuth.setAuthorizationReply( mCacheReply ) )
{
mCacheReply->deleteLater();
mCacheReply = nullptr;
QgsMessageLog::logMessage( tr( "Network reply update failed for authentication config" ),
tr( "WCS" ) );
finish();
return;
}
connect( mCacheReply, SIGNAL( finished() ), this, SLOT( cacheReplyFinished() ), Qt::DirectConnection );
connect( mCacheReply, SIGNAL( downloadProgress( qint64, qint64 ) ), this, SLOT( cacheReplyProgress( qint64, qint64 ) ), Qt::DirectConnection );

Expand Down
10 changes: 10 additions & 0 deletions src/providers/wcs/qgswcsprovider.h
Expand Up @@ -71,6 +71,16 @@ struct QgsWcsAuthorization
return true;
}

//! set authorization reply
bool setAuthorizationReply( QNetworkReply * reply ) const
{
if ( !mAuthCfg.isEmpty() )
{
return QgsAuthManager::instance()->updateNetworkReply( reply, mAuthCfg );
}
return true;
}

//! Username for basic http authentication
QString mUserName;

Expand Down
31 changes: 31 additions & 0 deletions src/providers/wfs/qgswfscapabilities.cpp
Expand Up @@ -165,6 +165,15 @@ bool QgsWFSCapabilities::setAuthorization( QNetworkRequest &request ) const
return true;
}

bool QgsWFSCapabilities::setAuthorizationReply( QNetworkReply *reply ) const
{
if ( mUri.hasParam( "authcfg" ) && !mUri.param( "authcfg" ).isEmpty() )
{
return QgsAuthManager::instance()->updateNetworkReply( reply, mUri.param( "authcfg" ) );
}
return true;
}

void QgsWFSCapabilities::requestCapabilities()
{
mErrorCode = QgsWFSCapabilities::NoError;
Expand All @@ -182,6 +191,17 @@ void QgsWFSCapabilities::requestCapabilities()

request.setAttribute( QNetworkRequest::CacheSaveControlAttribute, true );
mCapabilitiesReply = QgsNetworkAccessManager::instance()->get( request );
if ( !setAuthorizationReply( mCapabilitiesReply ) )
{
mCapabilitiesReply->deleteLater();
mCapabilitiesReply = nullptr;
mErrorCode = QgsWFSCapabilities::NetworkError;
mErrorMessage = tr( "Download of capabilities failed: network reply update failed for authentication config" );
QgsMessageLog::logMessage( mErrorMessage, tr( "WFS" ) );
emit gotCapabilities();
return;
}

connect( mCapabilitiesReply, SIGNAL( finished() ), this, SLOT( capabilitiesReplyFinished() ) );
}

Expand Down Expand Up @@ -220,6 +240,17 @@ void QgsWFSCapabilities::capabilitiesReplyFinished()
request.setAttribute( QNetworkRequest::CacheSaveControlAttribute, true );

mCapabilitiesReply = QgsNetworkAccessManager::instance()->get( request );
if ( !setAuthorizationReply( mCapabilitiesReply ) )
{
mCaps.clear();
mCapabilitiesReply->deleteLater();
mCapabilitiesReply = nullptr;
mErrorCode = QgsWFSCapabilities::NetworkError;
mErrorMessage = tr( "Download of capabilities failed: network reply update failed for authentication config" );
QgsMessageLog::logMessage( mErrorMessage, tr( "WFS" ) );
emit gotCapabilities();
return;
}

connect( mCapabilitiesReply, SIGNAL( finished() ), this, SLOT( capabilitiesReplyFinished() ) );
return;
Expand Down
3 changes: 3 additions & 0 deletions src/providers/wfs/qgswfscapabilities.h
Expand Up @@ -76,6 +76,9 @@ class QgsWFSCapabilities : public QObject
//! set authorization header
bool setAuthorization( QNetworkRequest &request ) const;

//! set authorization reply
bool setAuthorizationReply( QNetworkReply * reply ) const;

signals:
void gotCapabilities();

Expand Down
23 changes: 23 additions & 0 deletions src/providers/wfs/qgswfsprovider.cpp
Expand Up @@ -743,6 +743,13 @@ int QgsWFSProvider::describeFeatureTypeGET( const QString& uri, QString& geometr
return 1;
}
QNetworkReply* reply = QgsNetworkAccessManager::instance()->get( request );
if ( !mAuth.setAuthorizationReply( reply ) )
{
reply->deleteLater();
QgsMessageLog::logMessage( tr( "Network reply update failed for authentication config" ),
tr( "WFS" ) );
return 1;
}

connect( reply, SIGNAL( finished() ), this, SLOT( networkRequestFinished() ) );
while ( !mNetworkRequestFinished )
Expand Down Expand Up @@ -1341,6 +1348,14 @@ bool QgsWFSProvider::sendTransactionDocument( const QDomDocument& doc, QDomDocum

request.setHeader( QNetworkRequest::ContentTypeHeader, "text/xml" );
QNetworkReply* reply = QgsNetworkAccessManager::instance()->post( request, doc.toByteArray( -1 ) );
if ( !mAuth.setAuthorizationReply( reply ) )
{
reply->deleteLater();
QgsMessageLog::logMessage( tr( "Network reply update failed for authentication config" ),
tr( "WFS" ) );
return false;
}

QgsDebugMsg( "WFS transaction: " + doc.toByteArray( ) );

connect( reply, SIGNAL( finished() ), this, SLOT( networkRequestFinished() ) );
Expand Down Expand Up @@ -1479,6 +1494,14 @@ void QgsWFSProvider::getLayerCapabilities()
return;
}
QNetworkReply* reply = QgsNetworkAccessManager::instance()->get( request );
if ( !mAuth.setAuthorizationReply( reply ) )
{
reply->deleteLater();
mCapabilities = 0;
QgsMessageLog::logMessage( tr( "Network reply update failed for authentication config" ),
tr( "WFS" ) );
return;
}

connect( reply, SIGNAL( finished() ), this, SLOT( networkRequestFinished() ) );
while ( !mNetworkRequestFinished )
Expand Down
10 changes: 10 additions & 0 deletions src/providers/wfs/qgswfsprovider.h
Expand Up @@ -56,6 +56,16 @@ struct QgsWFSAuthorization
return true;
}

//! set authorization reply
bool setAuthorizationReply( QNetworkReply * reply ) const
{
if ( !mAuthCfg.isEmpty() )
{
return QgsAuthManager::instance()->updateNetworkReply( reply, mAuthCfg );
}
return true;
}

//! Username for basic http authentication
QString mUserName;

Expand Down
22 changes: 21 additions & 1 deletion src/providers/wms/qgswmscapabilities.cpp
Expand Up @@ -1934,6 +1934,14 @@ bool QgsWmsCapabilitiesDownload::downloadCapabilities()
request.setAttribute( QNetworkRequest::CacheSaveControlAttribute, true );

mCapabilitiesReply = QgsNetworkAccessManager::instance()->get( request );
if ( !mAuth.setAuthorizationReply( mCapabilitiesReply ) )
{
mCapabilitiesReply->deleteLater();
mCapabilitiesReply = nullptr;
mError = tr( "Download of capabilities failed: network reply update failed for authentication config" );
QgsMessageLog::logMessage( mError, tr( "WMS" ) );
return false;
}
connect( mCapabilitiesReply, SIGNAL( finished() ), this, SLOT( capabilitiesReplyFinished() ), Qt::DirectConnection );
connect( mCapabilitiesReply, SIGNAL( downloadProgress( qint64, qint64 ) ), this, SLOT( capabilitiesReplyProgress( qint64, qint64 ) ), Qt::DirectConnection );

Expand Down Expand Up @@ -2002,7 +2010,19 @@ void QgsWmsCapabilitiesDownload::capabilitiesReplyFinished()

QgsDebugMsg( QString( "redirected getcapabilities: %1 forceRefresh=%2" ).arg( redirect.toString() ).arg( mForceRefresh ) );
mCapabilitiesReply = QgsNetworkAccessManager::instance()->get( request );
connect( mCapabilitiesReply, SIGNAL( finished() ), this, SLOT( capabilitiesReplyFinished() ), Qt::DirectConnection );

if ( !mAuth.setAuthorizationReply( mCapabilitiesReply ) )
{
mHttpCapabilitiesResponse.clear();
mCapabilitiesReply->deleteLater();
mCapabilitiesReply = nullptr;
mError = tr( "Download of capabilities failed: network reply update failed for authentication config" );
QgsMessageLog::logMessage( mError, tr( "WMS" ) );
emit downloadFinished();
return;
}

connect( mCapabilitiesReply, SIGNAL( finished() ), this, SLOT( capabilitiesReplyFinished() ), Qt::DirectConnection );
connect( mCapabilitiesReply, SIGNAL( downloadProgress( qint64, qint64 ) ), this, SLOT( capabilitiesReplyProgress( qint64, qint64 ) ), Qt::DirectConnection );
return;
}
Expand Down
9 changes: 9 additions & 0 deletions src/providers/wms/qgswmscapabilities.h
Expand Up @@ -455,6 +455,15 @@ struct QgsWmsAuthorization
}
return true;
}
//! set authorization reply
bool setAuthorizationReply( QNetworkReply * reply ) const
{
if ( !mAuthCfg.isEmpty() )
{
return QgsAuthManager::instance()->updateNetworkReply( reply, mAuthCfg );
}
return true;
}

//! Username for basic http authentication
QString mUserName;
Expand Down
2 changes: 2 additions & 0 deletions src/providers/wms/qgswmsprovider.cpp
Expand Up @@ -2805,6 +2805,7 @@ void QgsWmsProvider::identifyReplyFinished()

QgsDebugMsg( QString( "redirected getfeatureinfo: %1" ).arg( redirect.toString() ) );
mIdentifyReply = QgsNetworkAccessManager::instance()->get( QNetworkRequest( redirect.toUrl() ) );
mSettings.authorization().setAuthorizationReply( mIdentifyReply );
mIdentifyReply->setProperty( "eventLoop", QVariant::fromValue( qobject_cast<QObject *>( loop ) ) );
connect( mIdentifyReply, SIGNAL( finished() ), this, SLOT( identifyReplyFinished() ) );
return;
Expand Down Expand Up @@ -3733,6 +3734,7 @@ QgsWmsLegendDownloadHandler::startUrl( const QUrl& url )
request.setAttribute( QNetworkRequest::CacheSaveControlAttribute, true );

mReply = mNetworkAccessManager.get( request );
mSettings.authorization().setAuthorizationReply( mReply );
connect( mReply, SIGNAL( error( QNetworkReply::NetworkError ) ), this, SLOT( errored( QNetworkReply::NetworkError ) ) );
connect( mReply, SIGNAL( finished() ), this, SLOT( finished() ) );
connect( mReply, SIGNAL( downloadProgress( qint64, qint64 ) ), this, SLOT( progressed( qint64, qint64 ) ) );
Expand Down

0 comments on commit 5480a80

Please sign in to comment.