Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #39566 from elpaso/server-landingpage-clean-env2
Server landing page: restore env
  • Loading branch information
elpaso committed Oct 23, 2020
2 parents b925f1e + e4701b1 commit 19842ea
Showing 1 changed file with 24 additions and 1 deletion.
25 changes: 24 additions & 1 deletion src/server/services/landingpage/qgslandingpage.cpp
Expand Up @@ -59,27 +59,33 @@ class QgsLandingPageApi: public QgsServerOgcApi

/**
* Sets QGIS_PROJECT_FILE from /project/<hash>/ URL fragment
* This is used to set the QGIS_PROJECT_FILE environment variable for legacy SERVICEs (WFS, WMS etc.)
* \since QGIS 3.16
*/
class QgsProjectLoaderFilter: public QgsServerFilter
{

// QgsServerFilter interface
public:

QgsProjectLoaderFilter( QgsServerInterface *serverIface )
: QgsServerFilter( serverIface )
{
}

/**
* Read the project hash and set the QGIS_PROJECT_FILE environment variable
*/
void requestReady() override
{
mEnvWasChanged = false;
const auto handler { serverInterface()->requestHandler() };
if ( handler->path().startsWith( QLatin1String( "/project/" ) ) )
{
const QString projectPath { QgsLandingPageUtils::projectUriFromUrl( handler->url(), *serverInterface()->serverSettings() ) };
if ( ! projectPath.isEmpty() )
{
mEnvWasChanged = true;
mOriginalProjectFromEnv = qgetenv( "QGIS_PROJECT_FILE" );
qputenv( "QGIS_PROJECT_FILE", projectPath.toUtf8() );
serverInterface()->setConfigFilePath( projectPath.toUtf8() );
QgsMessageLog::logMessage( QStringLiteral( "Project from URL set to: %1" ).arg( projectPath ), QStringLiteral( "Landing Page Plugin" ), Qgis::MessageLevel::Info );
Expand All @@ -90,8 +96,25 @@ class QgsProjectLoaderFilter: public QgsServerFilter
}
}
};

/**
* Restore original QGIS_PROJECT_FILE environment variable value
*/
void responseComplete() override
{
if ( mEnvWasChanged )
qputenv( "QGIS_PROJECT_FILE", mOriginalProjectFromEnv.toUtf8() );
};


private:

QString mOriginalProjectFromEnv;
bool mEnvWasChanged = false;

};


/**
* \class QgsLandingPageModule
* \brief Landing page module for QGIS Server
Expand Down

0 comments on commit 19842ea

Please sign in to comment.