zeroflag opened a new pull request, #769: URL: https://github.com/apache/knox/pull/769
## What changes were proposed in this pull request? Ozone SCM UI uses placeholders such as `{{typestat.portval.toLowerCase()}}` in the HTML which are supposed to be replaced by JavaScript code. However this is the same syntax what knox uses for template variables. If no escaping is used knox will populate the the template variable with an empty string since it has no value. But escaping `{` didn't work originally in rewrite templates (so `\{x\}` resulted literally `\{x\}`). ## How was this patch tested? sandbox topology: ```xml <service> <role>OZONE-SCM</role> <url>http://localhost:1701</url> </service> ``` service.xml ```xml <service role="OZONE-SCM" name="ozone-scm" version="1.2.0"> <metadata> <type>UI</type> <context>/ozone-scm/index.html?host={{BACKEND_HOST}}</context> <shortDesc>OZONE SCM UI</shortDesc> </metadata> <routes> <route path="/ozone-scm/index.html"> <rewrite apply="OZONE-SCM/ozone-scm/inbound/request" to="request.url"/> <rewrite apply="OZONE-SCM/ozone-scm/outbound/response" to="response.body"/> </route> </routes> <dispatch classname="org.apache.knox.gateway.dispatch.URLDecodingDispatch" ha-classname="org.apache.knox.gateway.dispatch.URLDecodingDispatch"/> </service> ```` rewrite.xml ```xml <rules> <rule dir="IN" name="OZONE-SCM/ozone-scm/inbound/request" pattern="*://*:*/**/ozone-scm/{path=**}?host={host}?{**}"> <rewrite template="{host}/{path=**}?{**}"/> </rule> <rule dir="OUT" name="OZONE-SCM/ozone-scm/outbound/datanode/address"> <rewrite template="{gateway.url}/ozone-scm/datanode/index.html?host=\{\{typestat.portval.toLowerCase()\}\}://\{\{typestat.hostname\}\}:\{\{typestat.portno\}\}"/> </rule> <filter name="OZONE-SCM/ozone-scm/outbound/response"> <content type="*/html"> <apply path="\{\{typestat\.portval\.toLowerCase\(\)\}\}\:\/\/\{\{typestat\.hostname\}\}\:\{\{typestat\.portno\}\}" rule="OZONE-SCM/ozone-scm/outbound/datanode/address"/> </content> </filter> </rules> ``` Http server to emulate the service ```smalltalk Teapot on GET: 'index.html' -> '<a href="{{typestat.portval.toLowerCase()}}://{{typestat.hostname}}:{{typestat.portno}}">{{typestat.hostname}}</a>'; start. ``` URL to check: https://localhost:8443/gateway/sandbox/ozone-scm/index.html?host=http://localhost:1701 Result: ```html <a href="https://localhost:8443/gateway/sandbox/ozone-scm/datanode/index.html?host={{typestat.portval.toLowerCase()}}://{{typestat.hostname}}:{{typestat.portno}}">{{typestat.hostname}}</a> ``` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@knox.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org