wiki:FDORfcTemplate

Version 8 (modified by sunch, 9 years ago) (diff)

--

This page describes the format to be used when developing RFCs for proposal to the fdo-internals mail list and subsequent presentation to the FDO PSC. New RFCs should be created following the instructions at the top of the RFCs page.

The original version of this document was based on the RFCs from http://mapserver.gis.umn.edu/development/rfc.

RFC Template Version: 1.1 Last Modified: June 15, 2010 (Jason Birch)


FDO RFC 56 - Support Proxy Server Settings for WMS/WFS

This page contains a request for comments document (RFC) for the FDO Open Source project. More FDO RFCs can be found on the RFCs page.

Status

RFC Template Version1.1
Submission DateMarch 23, 2011
Last ModifiedCheney Sun
AuthorCheney Sun
RFC Statusfrozen for vote
Implementation Statusunder development
Proposed Milestone3.7.0.0
Assigned PSC guide(s)Orest Halustchak, Greg Boone
Voting History
+1
+0
-0
-1

Overview

The RFC is to enhance the WMS/WFS provider to have the capabilities to set proxy parameters.

Motivation

As one feedback from FDO API and WMS/WFS provider users, a number of requests have arisen regarding access to Web Services, such as WMS and WFS, through a proxy server. A proxy server acts as an intermediary between an internal network (Intranet) and the Internet, transiting the remote data package to the internal client. Currently, WMS/WFS FDO providers have a workaround to support proxy setting, which is provided by the libcurl library. It reads the proxy settings defined in the system variables. This is not good for the provider users, especially for the API users. The better way is to expose one entry in the provider to let user set the proxy information before opening a connection. This can be done by enhancing and expanding the connection parameter list that each provider supports. And then pass these values into OWS component. The OWS component will define proxy setting via libcurl API if the proxy values aren’t null. Libcurl library has already proxy setting capability, so what we need to do is expose it via FDO API, and enhance the delegate classes for both WMS/WFS.

Proposed Solution

The following tables outline the additional connection properties that will be introduced in order to allow proxy server access.

Property Value
Name ProxyServerName?
LocalizedName? ProxyServerName? (English)
DefaultValue?
IsRequired? No
IsProtected? No
IsEnumerable? No
IsFileName? No
IsFilePath? No
IsDatastoreName? No

The ProxyServerName? property specifies the name of a user specified proxy server that will be used to make the connection to the external web service. This could be a host name or an IP address.

Property Value
Name ProxyServerPort?
LocalizedName? ProxyServerPort?(English)
DefaultValue?
IsRequired? No
IsProtected? No
IsEnumerable? No
IsFileName? No
IsFilePath? No
IsDatastoreName? No

The ProxyServerPort? property specifies the port of the user-specified proxy server that will be used to connect to the Internet. If set, it must be used in conjunction with the ProxyServerName? parameter.

Property Value
Name ProxyServerUsername?
LocalizedName? ProxyServerUsername?(English)
DefaultValue?
IsRequired? No
IsProtected? No
IsEnumerable? No
IsFileName? No
IsFilePath? No
IsDatastoreName? No

The ProxyServerUsername? property specifies the username to be used when connecting to a user-specified proxy server. If set, it must be used in conjunction with the ProxyServerName? and ProxyServerPassword? parameters.

Property Value
Name ProxyServerPassword?
LocalizedName? ProxyServerPassword?(English)
DefaultValue?
IsRequired? No
IsProtected? No
IsEnumerable? No
IsFileName? No
IsFilePath? No
IsDatastoreName? No

The ProxyServerPassword? property specifies the password to be used when connecting to a user-specified proxy server. If set, it must be used in conjunction with the ProxyServerName? and ProxyServerPassword? parameters. When user wants to use some proxy server for one provider, the proxy information should be set in the connection information before opening the remote WMS/WFS connection. Accordingly, the relevant delegates in WMS and WFS should also be updated to enhance their constructors to accept the proxy settings.

For FdoWmsDelegate? class:

class FdoWmsDelegate : public FdoOwsDelegate
{
......
/// \brief
/// Construct the FdoWmsDelegate instance with additional proxy information 
FDOOWS_API FdoWmsDelegate (
				FdoString* defaultUrl, 
				FdoString* userName,      
				FdoString* passwd,
				FdoString* proxyUrl = NULL, 
				FdoString* proxyPort = NULL, 
				FdoString* proxyUsername = NULL
                           )
};

For FdoWfsDelegate? class:

class FdoWfsDelegate : public FdoOwsDelegate
{
......
/// \brief
/// Construct the FdoWfsDelegate instance with additional proxy information 
FDOOWS_API FdoWfsDelegate (
				FdoString* defaultUrl, 
				FdoString* userName,      
				FdoString* passwd,
				FdoString* proxyUrl = NULL, 
				FdoString* proxyPort = NULL, 
				FdoString* proxyUsername = NULL
                           )
};

The proxyUrl, proxyPort, proxyUsername all have the NULL as their default value. Their parent constructor FdoOwsDelegate? will be called to pass the proxy settings.

Implications

  • Some new connection properties are introduced.
  • Both constructors of FdoWmsDelegate? and FdoWfsDelegate? class will be enhanced with more parameters.

Test Plan

Add unit tests into WMS/WFS provider to test the specified proxy setting.

Funding/Resources

Autodesk to provide resources / funding