[Mapserver-dev] RE: [Mapserver-users] additional parameters for WMS layer

Paul Spencer spencer at dmsolutions.ca
Tue May 20 09:46:57 EDT 2003


Mike,

if I understand what you are trying to do correctly, I have successfully 
done something similar by modifying the url that points to the WMS 
server to include my additional parameters (I added RADIUS and 
FEATURE_COUNT for cubeserv WMS servers), so my url looked like

http://www.cubewerx.com/demo/cubeserv/cubeserv.cgi?RADIUS=3&FEATURE_COUNT=5

Mapserver appends the WMS parameters to this URL correctly.  I have also 
done this with other parameters that I have needed when developing other 
applications.  Typically I do this using mapscript and modify the 
connection at run time to append my custom parameters, but you can hard 
code them too.

Cheers,

Paul

Mike V. Andreev wrote:
> Hello John,
> thanks for your comments.
> 
> 
>>Mike,
>>
>>I feel what you are asking is an implementation problem and not a mapserv development issue.  I wouldn't like to see mapserv develop some WMS parameters that are not OGC compliant.  Not everyone allows cookies on their browser for security reasons and tying mapserv into a particular type of implementation would be dangerous unless it was compliant to the OGC specification.
>>
>>I think that you could use hidden input types to pass the extra parameters backwards and forwards to your CGI scripts.  However, I would be very surprised if the OGC specifications have not already catered for these extra parameters.
>>
> 
> 
> I'm not sure what do you mean here. If you mean that OGC specification
> already include my parameters then you are wrong. This is not geographic
> parameters. For example it is a list of monitoring object or a datetime
> range. But OGC WMS specification allows me to use additional parameters
> in request to my CGI script, and if I would request my script directly
> there isn't a problem. 
> But request to my script must be formed by mapserver. And it contains:
> 1) string from layerObj.connection and 2) parameters formed by mapserver
> (such as BBOX, SRS, etc). I can not define additional parameters in
> mapserver's map file because they must be chosen by and user and change
> from query to query. 
> By the other hand I can send additional parameters from form fields
> (hidden or not) only to mapserver and they will have no an effect on
> request mapserver send to my script. Or may be I miss something in docs
> and there is some special mapserver option for it ? This would be a
> solution.
> 
> 
> 
>>Just my initial thoughts on the idea.
>>
>>John
>>
>>
>>>-----Original Message-----
>>>From: Mike V. Andreev [mailto:andreev at d902.iki.rssi.ru] 
>>>Sent: Saturday, 17 May 2003 3:35 
>>>To: mapserver-dev at lists.gis.umn.edu
>>>Cc: mapserver-users at lists.gis.umn.edu
>>>Subject: [Mapserver-users] additional parameters for WMSÂ  layer
>>>
>>>
>>>Hello
>>>
>>>I have mapserever compiled with WMS client support and I use map file
>>>with defined WMS layer. This layer is a http reference to my 
>>>perl script
>>>on the same http server. This script understand OGC WMS parameters in
>>>query string and can create maps whith information from some database.
>>>But to  create sensible map this script need additional information in
>>>request. I wanted to use http cookies to store that parameters. But I
>>>have a problem here. Then my client send request to http server with
>>>mapserver URI request contain proper cookies but after that mapserver
>>>need to make http request to perl script URI and of couse this request
>>>contains no cookies.
>>>
>>>So I want to ask two question here:
>>>
>>>1) Can somebody give me any hits to solve my problem with 
>>>existing soft?
>>>
>>>2) I have an idea how to extend mapserver functionality so it 
>>>be able to
>>>solve my problem. So I want to ask what do you people think about it.
>>>
>>>There is my proposal: each layer object could contain boolean 
>>>parameter
>>>http_cookies_forwad (disabled by default). So if this featcher enabled
>>>in layer with connectiontype equal to 'WMS' (and may be 
>>>'WFS') than when
>>>mapserver make http request to proper URL it sends additional http
>>>headers: 1) Cookie - header with cookies client send to 
>>>mapserver and 2)
>>>X-Forwarder-For - header with original client ip (as far as mapserver
>>>can determine it).
>>>
>>>
>>>Just to illustrate my idea I've made simple patch to maphttp.c. I used
>>>today's (2003-05-16) nightly build. This patch contains only
>>>functionality for sending proper http request. There is no 
>>>any stuff to
>>>support new feature in layreObj but I think whole idea is clear.
>>>
>>>
>>>
>>>
>>>81a82,83
>>>
>>>>#define HTTP_COOKIES_FORWARDING 1
>>>>
>>>
>>>243a246,247
>>>
>>>>    char     *tmp_env_read, *strBuf = NULL;
>>>>    struct curl_slist *slist=NULL;
>>>
>>>366a371,392
>>>
>>>>        /* If we need to forward http cookies to server  */
>>>>        if( HTTP_COOKIES_FORWARDING && (tmp_env_read = 
>>>
>>>curl_getenv( "HTTP_COOKIE" ) ) != NULL ){
>>>
>>>>           /*add cookies to http_handle*/
>>>>           curl_easy_setopt(http_handle, CURLOPT_COOKIE, 
>>>
>>>tmp_env_read);
>>>
>>>>          /*add X-Forwarded-For header with original client ip */
>>>>           if( (tmp_env_read = curl_getenv( 
>>>
>>>"HTTP_X_FORWARDED_FOR" ))  == NULL )
>>>
>>>>              if( (tmp_env_read = curl_getenv( 
>>>
>>>"HTTP_FORWARDED" ) ) == NULL )
>>>
>>>>                 if( (tmp_env_read = curl_getenv( 
>>>
>>>"HTTP_CLIENT_IP" ) ) == NULL )
>>>
>>>>                    tmp_env_read = curl_getenv( "REMOTE_ADDR" );
>>>>
>>>>           if( tmp_env_read != NULL ){
>>>>#define HTTP_HEADER_BUF_LENGTH 100
>>>>              strBuf = (char*)malloc( HTTP_HEADER_BUF_LENGTH );
>>>>              snprintf( strBuf, HTTP_HEADER_BUF_LENGTH, 
>>>
>>>"X-Forwarded-For: %s", tmp_env_read);
>>>
>>>>#undef HTTP_HEADER_BUF_LENGTH
>>>>              slist = curl_slist_append( slist, strBuf);
>>>>              curl_easy_setopt(http_handle, 
>>>
>>>CURLOPT_HTTPHEADER, slist);
>>>
>>>>           }
>>>>       }
>>>>
>>>>
>>>
>>>554a581,583
>>>
>>>>    if( slist != NULL ){ curl_slist_free_all(slist); }
>>>>    if( strBuf != NULL ){ free( strBuf ); }
>>>>
>>>
>>>556a586,587
>>>
>>>>#undef HTTP_COOKIES_FORWARDING
>>>>
>>>
>>>
>>>-- 
>>> ____________________________________________________________
>>>| Mike Andreev, software engineer andreev at d902.iki.rssi.ru   |
>>>| SMIS Lab, Space Research Institute http://smis.iki.rssi.ru |
>>>|____________________________________________________________|
>>>
>>>
>>>_______________________________________________
>>>Mapserver-users mailing list
>>>Mapserver-users at lists.gis.umn.edu
>>>http://lists.gis.umn.edu/mailman/listinfo/mapserver-users
>>>

-- 
Paul Spencer
Applications and Software Development
DM Solutions Group Inc.
http://www.dmsolutions.ca





More information about the mapserver-dev mailing list