[mapserver-dev] Draft proposal for 8.0 - Site Context FIles

Even Rouault even.rouault at spatialys.com
Sat Apr 3 08:05:03 PDT 2021


> > Since MS 8.0 will include nlohmann/json, perhaps consider a JSON 
> configuration file rather than our historical mapfile-like syntax?
> We could, I had thought about it... JSON allows the use of other 
> tools/validators and nlohmann is dead simple. That said, I don't know 
> what the tradeoffs would be in terms of making the JSON configuration 
> object available for use. Could it be hung off the mapObj? Would we 
> have to cpp-ify everything?
You could keep the parsing of the json as an implementation detail in 
the file that parses it and fill a C compatible structure.
>
> >  Regarding using putenv()
> Need to review the exact use of each environment variable to see how 
> they are leveraged. Ideally it wouldn't be necessary. Where is 
> CPLSetConfigOption() storing the key/value pairs?
In a global variable similar to char** environ : 
https://github.com/OSGeo/gdal/blob/bf5289fa6af721cd1ac6a9ff6f215e6340ac4222/gdal/port/cpl_conv.cpp#L1861
>
> On Sat, Apr 3, 2021 at 6:37 AM Even Rouault 
> <even.rouault at spatialys.com <mailto:even.rouault at spatialys.com>> wrote:
>
>     Steve,
>
>     Excellent initiative. A few remarks:
>
>     - Why not calling this a configuration file ? I believe it would
>     be slightly clearer than context
>
>     - Since MS 8.0 will include nlohmann/json, perhaps consider a JSON
>     configuration file rather than our historical mapfile-like syntax
>     ? This would allow to develop a json-schema for validation. Your
>     example would become:
>
>     {
>
>       "env": {
>
>         "#comment": "put some comment here"
>
>         "|MS_MAP_NO_PATH": "true"
>     |
>
>       },
>
>       "maps": {
>
>        "|MAP1": "/opt/mapserver/myapp/map1.map",|
>
>     |  "MAP2": "||/opt/mapserver/myapp/map2.map"|
>
>     ||
>
>       }
>
>     }
>
>     - Regarding using putenv(), I'm not sure this is a good idea in
>     FastCGI mode, according to what is mentioned in
>     http://web.mit.edu/wwwdev/man/man3/FCGI_Accept.3
>     <http://web.mit.edu/wwwdev/man/man3/FCGI_Accept.3>. Using GDAL
>     CPLSetConfigOption() instead of putenv() and CPLGetConfigOption()
>     instead of getenv() would avoid messing with the "environ" global
>     variable. (unless I'm wrong our CI doesn't test at all CGI /
>     FastCGI ... I'll try to look at adding some testing of this)
>
>     Even
>
>
>     Le 02/04/2021 à 23:19, Steve Lime a écrit :
>>     Hi all: Just thinking about ways to make configuring MapServer
>>     easier for information you can't or don't want to manage in
>>     mapfiles. Currently that is done via environment variables.
>>     Another option would be the use of config/ini-type file. I've
>>     started a draft RFC for something I'll call a MapServer context
>>     file for the moment. See
>>     https://github.com/sdlime/mapserver/wiki/MapServer-8.0-Context-File
>>     <https://github.com/sdlime/mapserver/wiki/MapServer-8.0-Context-File>
>>     for more information. Just floating an idea at this point...
>>
>>     --Steve
>>
>>     _______________________________________________
>>     mapserver-dev mailing list
>>     mapserver-dev at lists.osgeo.org  <mailto:mapserver-dev at lists.osgeo.org>
>>     https://lists.osgeo.org/mailman/listinfo/mapserver-dev  <https://lists.osgeo.org/mailman/listinfo/mapserver-dev>
>
>     -- 
>     http://www.spatialys.com  <http://www.spatialys.com>
>     My software is free, but my time generally not.
>
-- 
http://www.spatialys.com
My software is free, but my time generally not.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/mapserver-dev/attachments/20210403/c056b6c6/attachment-0001.html>


More information about the mapserver-dev mailing list