diff --git a/src/serve_data.js b/src/serve_data.js index 5c51cde..76d31c9 100644 --- a/src/serve_data.js +++ b/src/serve_data.js @@ -172,7 +172,7 @@ module.exports = function(options, repo, params, id, styles) { info.tiles = utils.getTileUrls(req, info.tiles, 'data/' + id, info.format, { 'pbf': options.pbfAlias - }); + }, options); return res.send(info); }); diff --git a/src/serve_rendered.js b/src/serve_rendered.js index 10ef459..5b6e563 100644 --- a/src/serve_rendered.js +++ b/src/serve_rendered.js @@ -736,7 +736,7 @@ module.exports = function(options, repo, params, id, dataResolver) { app.get('/' + id + '.json', function(req, res, next) { var info = clone(tileJSON); info.tiles = utils.getTileUrls(req, info.tiles, - 'styles/' + id, info.format); + 'styles/' + id, info.format, null, options); return res.send(info); }); diff --git a/src/serve_style.js b/src/serve_style.js index 8d169f5..ee10aba 100644 --- a/src/serve_style.js +++ b/src/serve_style.js @@ -85,8 +85,6 @@ module.exports = function (options, repo, params, id, reportTiles, reportFont) { app.get('/' + id + '/style.json', function (req, res, next) { var fixUrl = function (url, opt_nokey, opt_nostyle) { - console.log("URL:", url); - console.log("current options:", options); if (!url || (typeof url !== 'string') || (url.indexOf('local://') !== 0 && !isWhitelistedUrl(url))) { return url; } @@ -99,33 +97,19 @@ module.exports = function (options, repo, params, id, reportTiles, reportFont) { queryParams[options.auth.keyName] = req.query[options.auth.keyName]; } - console.log("params:", queryParams); if (url.indexOf('local://') === 0) { var query = querystring.stringify(queryParams); if (query.length) { query = '?' + query; } - console.log(url.replace( - 'local://', req.protocol + '://' + req.headers.host + '/') + query); - return url.replace( 'local://', req.protocol + '://' + req.headers.host + '/') + query; } else { // whitelisted url. might have existing parameters var parsedUrl = nodeUrl.parse(url); - console.log("parsed url:", parsedUrl); var parsedQS = querystring.parse(url.query); - - console.log("parsedQS:", parsedQS); var newParams = Object.assign(parsedQS, queryParams); - - console.log("newParams:", newParams); - parsedUrl.search = querystring.stringify(parsedQS); - - console.log("new parsed url:", parsedUrl); - - console.log(nodeUrl.format(parsedUrl)); - + parsedUrl.search = querystring.unescape(querystring.stringify(parsedQS)); return nodeUrl.format(parsedUrl); } }; diff --git a/src/server.js b/src/server.js index d067263..a54e0b2 100644 --- a/src/server.js +++ b/src/server.js @@ -219,7 +219,7 @@ function start(opts) { } info.tiles = utils.getTileUrls(req, info.tiles, path, info.format, { 'pbf': options.pbfAlias - }); + }, options); arr.push(info); }); return arr; @@ -305,7 +305,7 @@ function start(opts) { var tiles = utils.getTileUrls( req, style.serving_rendered.tiles, - 'styles/' + id, style.serving_rendered.format); + 'styles/' + id, style.serving_rendered.format, null, options); style.xyz_link = tiles[0]; } }); @@ -335,7 +335,7 @@ function start(opts) { var tiles = utils.getTileUrls( req, data_.tiles, 'data/' + id, data_.format, { 'pbf': options.pbfAlias - }); + }, options); data_.xyz_link = tiles[0]; } if (data_.filesize) { diff --git a/src/utils.js b/src/utils.js index a63731e..e44b9d0 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,12 +1,12 @@ 'use strict'; var path = require('path'), - fs = require('fs'); + fs = require('fs'); var clone = require('clone'), - glyphCompose = require('glyph-pbf-composite'); + glyphCompose = require('glyph-pbf-composite'); -module.exports.getTileUrls = function(req, domains, path, format, aliases) { +module.exports.getTileUrls = function (req, domains, path, format, aliases, options) { if (domains) { if (domains.constructor === String && domains.length > 0) { @@ -15,9 +15,9 @@ module.exports.getTileUrls = function(req, domains, path, format, aliases) { var host = req.headers.host; var hostParts = host.split('.'); var relativeSubdomainsUsable = hostParts.length > 1 && - !/^([0-9]{1,3}\.){3}[0-9]{1,3}(\:[0-9]+)?$/.test(host); + !/^([0-9]{1,3}\.){3}[0-9]{1,3}(\:[0-9]+)?$/.test(host); var newDomains = []; - domains.forEach(function(domain) { + domains.forEach(function (domain) { if (domain.indexOf('*') !== -1) { if (relativeSubdomainsUsable) { var newParts = hostParts.slice(1); @@ -36,8 +36,8 @@ module.exports.getTileUrls = function(req, domains, path, format, aliases) { var key = req.query.key; var queryParams = []; - if (req.query.key) { - queryParams.push('key=' + req.query.key); + if (req.query[options.auth.keyName]) { + queryParams.push(options.auth.keyName + '=' + req.query); } if (req.query.style) { queryParams.push('style=' + req.query.style); @@ -49,15 +49,15 @@ module.exports.getTileUrls = function(req, domains, path, format, aliases) { } var uris = []; - domains.forEach(function(domain) { + domains.forEach(function (domain) { uris.push(req.protocol + '://' + domain + '/' + path + - '/{z}/{x}/{y}.' + format + query); + '/{z}/{x}/{y}.' + format + query); }); return uris; }; -module.exports.fixTileJSONCenter = function(tileJSON) { +module.exports.fixTileJSONCenter = function (tileJSON) { if (tileJSON.bounds && !tileJSON.center) { var fitWidth = 1024; var tiles = fitWidth / 256; @@ -72,15 +72,15 @@ module.exports.fixTileJSONCenter = function(tileJSON) { } }; -var getFontPbf = function(allowedFonts, fontPath, name, range, fallbacks) { - return new Promise(function(resolve, reject) { +var getFontPbf = function (allowedFonts, fontPath, name, range, fallbacks) { + return new Promise(function (resolve, reject) { if (!allowedFonts || (allowedFonts[name] && fallbacks)) { var filename = path.join(fontPath, name, range + '.pbf'); if (!fallbacks) { fallbacks = clone(allowedFonts || {}); } delete fallbacks[name]; - fs.readFile(filename, function(err, data) { + fs.readFile(filename, function (err, data) { if (err) { console.error('ERROR: Font not found:', name); if (fallbacks && Object.keys(fallbacks).length) { @@ -101,17 +101,17 @@ var getFontPbf = function(allowedFonts, fontPath, name, range, fallbacks) { }); }; -module.exports.getFontsPbf = function(allowedFonts, fontPath, names, range, fallbacks) { +module.exports.getFontsPbf = function (allowedFonts, fontPath, names, range, fallbacks) { var fonts = names.split(','); var queue = []; - fonts.forEach(function(font) { + fonts.forEach(function (font) { queue.push( getFontPbf(allowedFonts, fontPath, font, range, clone(allowedFonts || fallbacks)) ); }); - return new Promise(function(resolve, reject) { - Promise.all(queue).then(function(values) { + return new Promise(function (resolve, reject) { + Promise.all(queue).then(function (values) { return resolve(glyphCompose.combine(values)); }, reject); });