From 3b675738e4c812bd94b6b2008b7a3e1981136ed8 Mon Sep 17 00:00:00 2001 From: Boon Boonsiri Date: Thu, 5 Oct 2023 15:01:21 -0400 Subject: [PATCH 1/3] allow base-64 url as images --- src/serve_rendered.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/serve_rendered.js b/src/serve_rendered.js index fc9982f..5e893f5 100644 --- a/src/serve_rendered.js +++ b/src/serve_rendered.js @@ -279,7 +279,7 @@ const extractMarkersFromQuery = (query, options, transformer) => { let iconURI = markerParts[1]; // Check if icon is served via http otherwise marker icons are expected to // be provided as filepaths relative to configured icon path - if (!(iconURI.startsWith('http://') || iconURI.startsWith('https://'))) { + if (!(iconURI.startsWith('http://') || iconURI.startsWith('https://') || iconURI.startsWith('data:'))) { // Sanitize URI with sanitize-filename // https://www.npmjs.com/package/sanitize-filename#details iconURI = sanitize(iconURI); From bdd24ffc3b422cbec99957ccc4e2dd6450526449 Mon Sep 17 00:00:00 2001 From: Boon Boonsiri Date: Thu, 5 Oct 2023 15:13:28 -0400 Subject: [PATCH 2/3] Add option to config --- src/serve_rendered.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/serve_rendered.js b/src/serve_rendered.js index 5e893f5..d9842df 100644 --- a/src/serve_rendered.js +++ b/src/serve_rendered.js @@ -294,6 +294,8 @@ const extractMarkersFromQuery = (query, options, transformer) => { // When we encounter a remote icon check if the configuration explicitly allows them. } else if (options.allowRemoteMarkerIcons !== true) { continue; + } else if (options.allowInlineMarkerImages !== true) { + continue; } // Ensure marker location could be parsed From 34093ec438c7cce4cb365aa2e8ea03b360f2b8be Mon Sep 17 00:00:00 2001 From: Boon Boonsiri Date: Fri, 6 Oct 2023 11:06:19 -0400 Subject: [PATCH 3/3] Refactoring --- src/serve_rendered.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/serve_rendered.js b/src/serve_rendered.js index d9842df..92361e3 100644 --- a/src/serve_rendered.js +++ b/src/serve_rendered.js @@ -279,7 +279,9 @@ const extractMarkersFromQuery = (query, options, transformer) => { let iconURI = markerParts[1]; // Check if icon is served via http otherwise marker icons are expected to // be provided as filepaths relative to configured icon path - if (!(iconURI.startsWith('http://') || iconURI.startsWith('https://') || iconURI.startsWith('data:'))) { + const isRemoteURL = iconURI.startsWith('http://') || iconURI.startsWith('https://'); + const isDataURL = iconURI.startsWith('data:'); + if (!(isRemoteURL || isDataURL)) { // Sanitize URI with sanitize-filename // https://www.npmjs.com/package/sanitize-filename#details iconURI = sanitize(iconURI); @@ -292,9 +294,9 @@ const extractMarkersFromQuery = (query, options, transformer) => { iconURI = path.resolve(options.paths.icons, iconURI); // When we encounter a remote icon check if the configuration explicitly allows them. - } else if (options.allowRemoteMarkerIcons !== true) { + } else if (isRemoteURL && options.allowRemoteMarkerIcons !== true) { continue; - } else if (options.allowInlineMarkerImages !== true) { + } else if (isDataURL && options.allowInlineMarkerImages !== true) { continue; }