In Theory, you could do this today by writing a simple wrapper script that reads the CGI arguments, calls a script and passes it the output file name like /tmp/mapwrap-$$.map and the arguments. The script would read the template mapfile passed in the arguments do the substitution and write out the new mapfile. Then it would call mapserv and pass the appropriate arguments including the new mapfile. and after mapserv runs it can remove the tmp mapfile.

The downside of this is that it requires at least three process creates instead of one. And you have to be aware of the security issues of doing this and worry about SQL injection, information leakage, etc.

The upside is that you could do it now in say Perl, PHP, Python today if you wanted to prototype up something and play with the idea. Pick the language you like best and go for it.

-Steve W

On 10/3/2011 6:22 PM, Matt McClelland wrote:
I am new to mapserver world, so as you read this, remember I have no
idea what I am talking about  :)

I was thinking about this problem last week, my idea was to look at
passing a reference to a parsing script, that outputs a mapfile.

so instead of this
http://localhost/cgi-bin/mapserv?client_id=123&mode=map&map=/path/to/mapfile.map&;.
<http://localhost/cgi-bin/mapserv?client_id=123&mode=map&map=/path/to/mapfile.map&;.>..
you would pass this url
http://localhost/cgi-bin/mapserv?client_id=123&mode=map&map=/path/to/mapfilescript&;.
<http://localhost/cgi-bin/mapserv?client_id=123&mode=map&map=/path/to/mapfile.map&;.>..

So the only change to mapserver would be to kindly ask it to pass
variables when getting a mapfile.  eg
/path/to/mapfilescript&client_id=123&mode=map&bbox=........ etc

Then the custom parsing script could do lots of things, like search and
replace $client_id with "123"  or include other files etc.  It could
also build an entire mapfile from scratch, pull stuff from a DB, cache
common requests and I guess lots more.

As I said I have no idea if this is plausible, or if it would impact on
speed to much etc

Matt  :)


On Tue, Oct 4, 2011 at 8:10 AM, Bob Basques <bob.basq...@ci.stpaul.mn.us
<mailto:bob.basq...@ci.stpaul.mn.us>> wrote:

    All,


    I did submit a request very similar to the idea of passing in a
    MAPFILE as a mapserv parameter a few years back. As I recall there
    was some discussion about the idea, and there were also the same
    sorts of reservations about it then, especially the KISS part.  In
    very early uses of MapServer, we used our own wrapper around it to
    provide this type of functionality, but it ended up too cumbersome
    to maintain along with different versions of MapServ as they came
    along, so we let the idea go.  It really needs to be passed through
    MapServer to be a viable option IMO.  Otherwise you need to support
    to many pieces of things to make things very portable.


    I thought the recent introduction of the browse mode using a
    OpenLayers template might resurrect the idea to some degree, but
    that didn't happen either.  I suggested a template passing mechanism
    for that for example, why restrict to just Openlayers, got some
    discussion going on it, but that was all.


    I think it will come about at some point, certainly more folks
    wanting it now than when I first started asking the question  :c)  .


    bobb




     >>> Stephen Woodbridge <wood...@swoodbridge.com
    <mailto:wood...@swoodbridge.com>> wrote:

    Robert,

    All good questions!

    Here are some thoughts on this.

    1. we all ready have the CGI parameter substitution, but it does require
    reading the mapfile to get its validation parameters.

    2. we already support includes

    3. you would have to read some of the mapfile to get the connection
    parameters to access the parameters from a database

    4. I like the idea of getting the mapfile from the database, but I think
    if I were to go that route, why would I not keep the whole map file in
    the database? it would be easy to store it as fragments and parameters
    and do the substitution all in the database and just return a text blob
    as a mapfile for mapserver to parse. In Postgresql it would be easy to
    write a few stored procedures to help manage this and implement it on
    the database side of things.

    5. Follow the KISS principal. Keep is simple, make the approach
    incremental based on the existing code as much as possible

    -Steve W

    On 10/3/2011 3:59 PM, reholl wrote:
     > I really like the idea of pulling mapfile resources from RDBMS
    and URL.
     > For the URL, I don't think the communications part poses much of a
     > challenge, as the cURL stuff used in the OWS client can be
    repackaged. I
     > did that once to make a mapserv CONNECTIONTYPE as a SOAP client.
    I can
     > certainly picture a somewhat generalized mechanism: "fill ANY mapfile
     > value from some outside resource that delivers a construct of the
    proper
     > form/type." These resources might be chained or arranged in branches.
     > (Does this begin to stray into WPS territory..?) Anything of this
     > complexity poses a risk to performance and readability. There's
     > definitely something to be said for the everything-is-right-here
    aspect
     > of the mapfile. Does mapserv configuration becomes less 'file'
    and more
     > 'system.' and with what new maintenance headaches? Or another way to
     > view it: mapfile syntax becomes a de facto programming language,
    and we
     > already have mapscript in numerous flavors. What's the tipping
    point for
     > "let's move this complexity into core mapserver"? Given all these
     > caveats, I'd love to explore this further... Robert Hollingsworth
     >
     >     blammo wrote:
     >     All, Would adding in INCLUDEs from a URL be pushing it too
    much, as
     >     in: INCLUDE "http://Myserver.com/cgi-bin/myscript.pl"; Could
    pass in
     >     parameters like so . . . INCLUDE
     > "http://Myserver.com/cgi-bin/myscript.pl?A=first thing&b=second
     >     thing&c=third thing . . ." bobb >>> "Smith, Michael
    ERDC-CRREL-NH"
     > <[hidden email] </user/SendEmail.jtp?type=node&node=6856380&i=0>>
     >     wrote: There is an RFC to have includes come from non-file
     >     connections (databases). It would be another option
     > http://mapserver.org/development/rfc/ms-rfc-74.html Mike -- Michael
     >     Smith Remote Sensing/GIS Center US Army Corps of Engineers On
     >     10/3/11 2:51 PM, "Stephen Woodbridge" <[hidden email]
     > </user/SendEmail.jtp?type=node&node=6856380&i=1>> wrote: >One idea
     >     regarding this that you might want to consider is the ability >to
     >     put all the named parameters in an include file, then be able to
     > >include that file via a CGI parameter. So it might look like this:
     > > >
     >
     >
     > View this message in context: Re: Feature wish: Internal mapfile
     > variables
     >
    
<http://osgeo-org.1803224.n2.nabble.com/Feature-wish-Internal-mapfile-variables-tp6853853p6856380.html>
     > Sent from the Mapserver - User mailing list archive
     >
    <http://osgeo-org.1803224.n2.nabble.com/Mapserver-User-f1969211.html> at
     > Nabble.com.
     >
     >
     > _______________________________________________
     > mapserver-users mailing list
     > mapserver-users@lists.osgeo.org
    <mailto:mapserver-users@lists.osgeo.org>
     > http://lists.osgeo.org/mailman/listinfo/mapserver-users

    _______________________________________________
    mapserver-users mailing list
    mapserver-users@lists.osgeo.org <mailto:mapserver-users@lists.osgeo.org>
    http://lists.osgeo.org/mailman/listinfo/mapserver-users


    _______________________________________________
    mapserver-users mailing list
    mapserver-users@lists.osgeo.org <mailto:mapserver-users@lists.osgeo.org>
    http://lists.osgeo.org/mailman/listinfo/mapserver-users




_______________________________________________
mapserver-users mailing list
mapserver-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapserver-users

_______________________________________________
mapserver-users mailing list
mapserver-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapserver-users

Reply via email to