diff --git a/docs/man/renderd.conf.5 b/docs/man/renderd.conf.5 index 4148d0d1..8e563f22 100644 --- a/docs/man/renderd.conf.5 +++ b/docs/man/renderd.conf.5 @@ -1,4 +1,4 @@ -.TH RENDERD.CONF 5 "2024-06-06" "mod_tile v0.8.1" +.TH RENDERD.CONF 5 "2026-10-21" "mod_tile v0.8.1" .\" Please adjust this date whenever revising the manpage. .SH NAME @@ -15,6 +15,10 @@ This manual page documents briefly the \fBrenderd.conf\fR configuration file. The default location is \fB'/etc/renderd.conf'\fR (macro definition \fB'RENDERD_CONFIG'\fR). .PP All option names are \fBcase-insensitive\fR. +.PP +Any values containing semicolons must be \fBquoted\fR. +.PP +Any \fBdouble quoted\fR values must not contain \fBdouble quotes\fR as they cannot be escaped, only \fBsingle quotes\fR can be escaped within \fBsingle quoted\fR values. .SH RENDERD @@ -115,7 +119,7 @@ The default value is \fB'1'\fR. .B attribution Specify the data attribution to be provided by \fBmod_tile\fR as \fBTileJSON\fR (via \fB{URI}/tile-layer.json\fR). Only used by \fBmod_tile\fR. -The default value is \fB'©OpenStreetMap and contributors, (ODbL)'\fR (macro definition \fB'DEFAULT_ATTRIBUTION'\fR). +The default value is \fB'©OpenStreetMap and contributors, (ODbL)'\fR (macro definition \fB'DEFAULT_ATTRIBUTION'\fR). .TP .B cors diff --git a/etc/renderd/renderd.conf.examples b/etc/renderd/renderd.conf.examples index 7e1c2609..c0047103 100644 --- a/etc/renderd/renderd.conf.examples +++ b/etc/renderd/renderd.conf.examples @@ -56,7 +56,7 @@ XML=/var/www/example-map/mapnik.xml ;MAXZOOM=18 ;TYPE=png image/png png256 ; Values are: (for more information about output format see https://github.com/mapnik/mapnik/wiki/Image-IO) ;DESCRIPTION=This is a description of the tile layer used in the tile json request -;ATTRIBUTION=©OpenStreetMap and contributors, ODbL +;ATTRIBUTION="© style1" ;SERVER_ALIAS=http://localhost/ ;CORS=http://www.openstreetmap.org ;ASPECTX=1 @@ -75,7 +75,7 @@ XML=/var/www/example-map/mapnik.xml ;MAXZOOM=22 ;TYPE=png image/png png256 ; Values are: (for more information about output format see https://github.com/mapnik/mapnik/wiki/Image-IO) ;DESCRIPTION=This is a description of the tile layer used in the tile json request -;ATTRIBUTION=©OpenStreetMap and contributors, ODbL +;ATTRIBUTION='© style2' ;SERVER_ALIAS=http://localhost/ ;CORS=* @@ -91,6 +91,6 @@ XML=/var/www/example-map/mapnik.xml ;MAXZOOM=22 ;TYPE=png image/png png256 ; Values are: (for more information about output format see https://github.com/mapnik/mapnik/wiki/Image-IO) ;DESCRIPTION=This is a description of the tile layer used in the tile json request -;ATTRIBUTION=©OpenStreetMap and contributors, ODbL +;ATTRIBUTION='© \'style3\'' ;SERVER_ALIAS=http://localhost/ ;CORS=* diff --git a/includes/mod_tile.h b/includes/mod_tile.h index cb3958e7..88231034 100644 --- a/includes/mod_tile.h +++ b/includes/mod_tile.h @@ -51,7 +51,7 @@ /* Maximum number of times we camp out before giving up */ #define MAXCAMP 10 -#define DEFAULT_ATTRIBUTION "©OpenStreetMap and contributors, (ODbL)" +#define DEFAULT_ATTRIBUTION "©OpenStreetMap and contributors, (ODbL)" typedef struct delaypool_entry { struct in6_addr ip_addr; diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index e973e5d0..be26e98a 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1087,28 +1087,77 @@ foreach(STORAGE_BACKEND_INDEX RANGE ${STORAGE_BACKENDS_LENGTH}) COMMAND ${BASH} -c " TILE_DEFAULT_TILEJSON_CMD=\"${CURL_CMD} ${TILE_DEFAULT_TILEJSON_URL}\" TILE_DEFAULT_TILEJSON_OUTPUT=$(\${TILE_DEFAULT_TILEJSON_CMD}) + TILE_DEFAULT_TILEJSON_ATTRIBUTION=$(echo \"\${TILE_DEFAULT_TILEJSON_OUTPUT}\" | ${JQ_EXECUTABLE} -r .attribution) - if [ \"\${TILE_DEFAULT_TILEJSON_ATTRIBUTION}\" != \"Attribution for ${DEFAULT_MAP_NAME}\" ]; then + TILE_DEFAULT_TILEJSON_ATTRIBUTION_EXPECTED=\"Attribution for '${DEFAULT_MAP_NAME}' ©\" + if [ \"\${TILE_DEFAULT_TILEJSON_ATTRIBUTION}\" != \"\${TILE_DEFAULT_TILEJSON_ATTRIBUTION_EXPECTED}\" ]; then + echo \"Error in .attribution\"; + echo \"Found: \${TILE_DEFAULT_TILEJSON_ATTRIBUTION}\"; + echo \"Expected: \${TILE_DEFAULT_TILEJSON_ATTRIBUTION_EXPECTED}\"; exit 1; fi TILE_DEFAULT_TILEJSON_DESCRIPTION=$(echo \"\${TILE_DEFAULT_TILEJSON_OUTPUT}\" | ${JQ_EXECUTABLE} -r .description) - if [ \"\${TILE_DEFAULT_TILEJSON_DESCRIPTION}\" != \"Description for ${DEFAULT_MAP_NAME}\" ]; then + TILE_DEFAULT_TILEJSON_DESCRIPTION_EXPECTED=\"Description for '${DEFAULT_MAP_NAME}' ©\" + if [ \"\${TILE_DEFAULT_TILEJSON_DESCRIPTION}\" != \"\${TILE_DEFAULT_TILEJSON_DESCRIPTION_EXPECTED}\" ]; then + echo \"Error in .description\"; + echo \"Found: \${TILE_DEFAULT_TILEJSON_DESCRIPTION}\"; + echo \"Expected: \${TILE_DEFAULT_TILEJSON_DESCRIPTION_EXPECTED}\"; exit 1; fi TILE_DEFAULT_TILEJSON_NAME=$(echo \"\${TILE_DEFAULT_TILEJSON_OUTPUT}\" | ${JQ_EXECUTABLE} -r .name) - if [ \"\${TILE_DEFAULT_TILEJSON_NAME}\" != \"${DEFAULT_MAP_NAME}\" ]; then + TILE_DEFAULT_TILEJSON_NAME_EXPECTED=\"${DEFAULT_MAP_NAME}\" + if [ \"\${TILE_DEFAULT_TILEJSON_NAME}\" != \"\${TILE_DEFAULT_TILEJSON_NAME_EXPECTED}\" ]; then + echo \"Error in .name\"; + echo \"Found: \${TILE_DEFAULT_TILEJSON_NAME}\"; + echo \"Expected: \${TILE_DEFAULT_TILEJSON_NAME_EXPECTED}\"; exit 1; fi TILE_DEFAULT_TILEJSON_VERSION=$(echo \"\${TILE_DEFAULT_TILEJSON_OUTPUT}\" | ${JQ_EXECUTABLE} -r .tilejson) - if [ \"\${TILE_DEFAULT_TILEJSON_VERSION}\" != \"2.0.0\" ]; then + TILE_DEFAULT_TILEJSON_VERSION_EXPECTED=\"2.0.0\" + if [ \"\${TILE_DEFAULT_TILEJSON_VERSION}\" != \"\${TILE_DEFAULT_TILEJSON_VERSION_EXPECTED}\" ]; then + echo \"Error in .tilejson\"; + echo \"Found: \${TILE_DEFAULT_TILEJSON_VERSION}\"; + echo \"Expected: \${TILE_DEFAULT_TILEJSON_VERSION_EXPECTED}\"; exit 1; fi TILE_DEFAULT_TILEJSON_TILES_0=$(echo \"\${TILE_DEFAULT_TILEJSON_OUTPUT}\" | ${JQ_EXECUTABLE} -r .tiles[0]) - if [ \"\${TILE_DEFAULT_TILEJSON_TILES_0}\" != \"http://localhost/tiles/${DEFAULT_MAP_NAME}/{z}/{x}/{y}.png\" ]; then + TILE_DEFAULT_TILEJSON_TILES_0_EXPECTED=\"http://localhost/tiles/${DEFAULT_MAP_NAME}/{z}/{x}/{y}.png\" + if [ \"\${TILE_DEFAULT_TILEJSON_TILES_0}\" != \"\${TILE_DEFAULT_TILEJSON_TILES_0_EXPECTED}\" ]; then + echo \"Error in .tiles[0]\"; + echo \"Found: \${TILE_DEFAULT_TILEJSON_TILES_0}\"; + echo \"Expected: \${TILE_DEFAULT_TILEJSON_TILES_0_EXPECTED}\"; exit 1; fi TILE_DEFAULT_TILEJSON_TILES_1=$(echo \"\${TILE_DEFAULT_TILEJSON_OUTPUT}\" | ${JQ_EXECUTABLE} -r .tiles[1]) - if [ \"\${TILE_DEFAULT_TILEJSON_TILES_1}\" != \"http://alias/tiles/${DEFAULT_MAP_NAME}/{z}/{x}/{y}.png\" ]; then + TILE_DEFAULT_TILEJSON_TILES_1_EXPECTED=\"http://alias/tiles/${DEFAULT_MAP_NAME}/{z}/{x}/{y}.png\" + if [ \"\${TILE_DEFAULT_TILEJSON_TILES_1}\" != \"\${TILE_DEFAULT_TILEJSON_TILES_1_EXPECTED}\" ]; then + echo \"Error in .tiles[1]\"; + echo \"Found: \${TILE_DEFAULT_TILEJSON_TILES_1}\"; + echo \"Expected: \${TILE_DEFAULT_TILEJSON_TILES_1_EXPECTED}\"; + exit 1; + fi + + TILE_TILEJSON_URL=\"${TILE_DEFAULT_TILEJSON_URL}\" + TILE_CORS_ALL_TILEJSON_CMD=\"${CURL_CMD} \${TILE_TILEJSON_URL/${DEFAULT_MAP_NAME}/cors_all}\" + TILE_CORS_ALL_TILEJSON_OUTPUT=$(\${TILE_CORS_ALL_TILEJSON_CMD}) + + TILE_CORS_ALL_TILEJSON_ATTRIBUTION=$(echo \"\${TILE_CORS_ALL_TILEJSON_OUTPUT}\" | ${JQ_EXECUTABLE} -r .attribution) + TILE_CORS_ALL_TILEJSON_ATTRIBUTION_EXPECTED=\"©OpenStreetMap and \" + TILE_CORS_ALL_TILEJSON_ATTRIBUTION_EXPECTED+=\"\" + TILE_CORS_ALL_TILEJSON_ATTRIBUTION_EXPECTED+=\"contributors, \" + TILE_CORS_ALL_TILEJSON_ATTRIBUTION_EXPECTED+=\"(ODbL)\" + if [ \"\${TILE_CORS_ALL_TILEJSON_ATTRIBUTION}\" != \"\${TILE_CORS_ALL_TILEJSON_ATTRIBUTION_EXPECTED}\" ]; then + echo \"Error in .attribution\"; + echo \"Found: \${TILE_CORS_ALL_TILEJSON_ATTRIBUTION}\"; + echo \"Expected: \${TILE_CORS_ALL_TILEJSON_ATTRIBUTION_EXPECTED}\"; + exit 1; + fi + TILE_CORS_ALL_TILEJSON_DESCRIPTION=$(echo \"\${TILE_CORS_ALL_TILEJSON_OUTPUT}\" | ${JQ_EXECUTABLE} -r .description) + TILE_CORS_ALL_TILEJSON_DESCRIPTION_EXPECTED=\"\" + if [ \"\${TILE_CORS_ALL_TILEJSON_DESCRIPTION}\" != \"\${TILE_CORS_ALL_TILEJSON_DESCRIPTION_EXPECTED}\" ]; then + echo \"Error in .description\"; + echo \"Found: \${TILE_CORS_ALL_TILEJSON_DESCRIPTION}\"; + echo \"Expected: \${TILE_CORS_ALL_TILEJSON_DESCRIPTION_EXPECTED}\"; exit 1; fi " diff --git a/tests/renderd.conf.in b/tests/renderd.conf.in index 7e34e0ea..213a69ba 100644 --- a/tests/renderd.conf.in +++ b/tests/renderd.conf.in @@ -8,8 +8,8 @@ plugins_dir=@MAPNIK_PLUGINS_DIR@ # Test Comment: Default Map Section ; Test Comment: Default Map Section [@DEFAULT_MAP_NAME@] -ATTRIBUTION=Attribution for @DEFAULT_MAP_NAME@ -DESCRIPTION=Description for @DEFAULT_MAP_NAME@ +ATTRIBUTION="Attribution for '@DEFAULT_MAP_NAME@' ©" +DESCRIPTION='Description for \'@DEFAULT_MAP_NAME@\' ©' MAXZOOM=5 MINZOOM=0 SERVER_ALIAS=http://alias/