diff --git a/src/main/java/org/qortal/api/HTMLParser.java b/src/main/java/org/qortal/api/HTMLParser.java index a80b0b1e..8b2d1116 100644 --- a/src/main/java/org/qortal/api/HTMLParser.java +++ b/src/main/java/org/qortal/api/HTMLParser.java @@ -12,11 +12,13 @@ public class HTMLParser { private String linkPrefix; private byte[] data; + private String qdnContext; - public HTMLParser(String resourceId, String inPath, String prefix, boolean usePrefix, byte[] data) { + public HTMLParser(String resourceId, String inPath, String prefix, boolean usePrefix, byte[] data, String qdnContext) { String inPathWithoutFilename = inPath.substring(0, inPath.lastIndexOf('/')); this.linkPrefix = usePrefix ? String.format("%s/%s%s", prefix, resourceId, inPathWithoutFilename) : ""; this.data = data; + this.qdnContext = qdnContext; } public void addAdditionalHeaderTags() { @@ -29,6 +31,10 @@ public class HTMLParser { String qAppsScriptElement = String.format("", this.qdnContext); + head.get(0).prepend(qdnContextVar); + // Add base href tag String baseElement = String.format("", baseUrl); head.get(0).prepend(baseElement); diff --git a/src/main/java/org/qortal/api/domainmap/resource/DomainMapResource.java b/src/main/java/org/qortal/api/domainmap/resource/DomainMapResource.java index cc21587d..31d216dc 100644 --- a/src/main/java/org/qortal/api/domainmap/resource/DomainMapResource.java +++ b/src/main/java/org/qortal/api/domainmap/resource/DomainMapResource.java @@ -51,7 +51,7 @@ public class DomainMapResource { String secret58, String prefix, boolean usePrefix, boolean async) { ArbitraryDataRenderer renderer = new ArbitraryDataRenderer(resourceId, resourceIdType, service, inPath, - secret58, prefix, usePrefix, async, request, response, context); + secret58, prefix, usePrefix, async, "domainMap", request, response, context); return renderer.render(); } diff --git a/src/main/java/org/qortal/api/gateway/resource/GatewayResource.java b/src/main/java/org/qortal/api/gateway/resource/GatewayResource.java index a73de1fb..07e1cfb4 100644 --- a/src/main/java/org/qortal/api/gateway/resource/GatewayResource.java +++ b/src/main/java/org/qortal/api/gateway/resource/GatewayResource.java @@ -119,7 +119,7 @@ public class GatewayResource { String secret58, String prefix, boolean usePrefix, boolean async) { ArbitraryDataRenderer renderer = new ArbitraryDataRenderer(resourceId, resourceIdType, service, inPath, - secret58, prefix, usePrefix, async, request, response, context); + secret58, prefix, usePrefix, async, "gateway", request, response, context); return renderer.render(); } diff --git a/src/main/java/org/qortal/api/resource/RenderResource.java b/src/main/java/org/qortal/api/resource/RenderResource.java index fa05a655..f4a4a750 100644 --- a/src/main/java/org/qortal/api/resource/RenderResource.java +++ b/src/main/java/org/qortal/api/resource/RenderResource.java @@ -216,7 +216,7 @@ public class RenderResource { String secret58, String prefix, boolean usePrefix, boolean async, String theme) { ArbitraryDataRenderer renderer = new ArbitraryDataRenderer(resourceId, resourceIdType, service, inPath, - secret58, prefix, usePrefix, async, request, response, context); + secret58, prefix, usePrefix, async, "render", request, response, context); if (theme != null) { renderer.setTheme(theme); diff --git a/src/main/java/org/qortal/arbitrary/ArbitraryDataRenderer.java b/src/main/java/org/qortal/arbitrary/ArbitraryDataRenderer.java index 847f2aa8..4b804f51 100644 --- a/src/main/java/org/qortal/arbitrary/ArbitraryDataRenderer.java +++ b/src/main/java/org/qortal/arbitrary/ArbitraryDataRenderer.java @@ -40,12 +40,13 @@ public class ArbitraryDataRenderer { private final String prefix; private final boolean usePrefix; private final boolean async; + private final String qdnContext; private final HttpServletRequest request; private final HttpServletResponse response; private final ServletContext context; public ArbitraryDataRenderer(String resourceId, ResourceIdType resourceIdType, Service service, String inPath, - String secret58, String prefix, boolean usePrefix, boolean async, + String secret58, String prefix, boolean usePrefix, boolean async, String qdnContext, HttpServletRequest request, HttpServletResponse response, ServletContext context) { this.resourceId = resourceId; @@ -56,6 +57,7 @@ public class ArbitraryDataRenderer { this.prefix = prefix; this.usePrefix = usePrefix; this.async = async; + this.qdnContext = qdnContext; this.request = request; this.response = response; this.context = context; @@ -118,7 +120,7 @@ public class ArbitraryDataRenderer { if (HTMLParser.isHtmlFile(filename)) { // HTML file - needs to be parsed byte[] data = Files.readAllBytes(Paths.get(filePath)); // TODO: limit file size that can be read into memory - HTMLParser htmlParser = new HTMLParser(resourceId, inPath, prefix, usePrefix, data); + HTMLParser htmlParser = new HTMLParser(resourceId, inPath, prefix, usePrefix, data, qdnContext); htmlParser.addAdditionalHeaderTags(); response.addHeader("Content-Security-Policy", "default-src 'self' 'unsafe-inline' 'unsafe-eval'; media-src 'self' blob:; img-src 'self' data: blob:;"); response.setContentType(context.getMimeType(filename));