knox-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jeffrey E Rodriguez (JIRA)" <>
Subject [jira] [Commented] (KNOX-751) Need rewrite function to capture href information from single page host to rewrite output of node hosts
Date Tue, 06 Sep 2016 17:21:21 GMT


Jeffrey E  Rodriguez commented on KNOX-751:

Hi Larry, yes we plan to contribute a patch. 
The Yarn UI is already leaking the host:port in the current mapping without this function
but we can obfuscate the URL ("encrypt) it. Internally we can reversion the obfuscation. 
So in the page itself  Yarn shows the table of Node Http Address without "encryption".
                  <a href="//"></a>

> Need rewrite function to capture href information from single page host to rewrite output
of node hosts
> -------------------------------------------------------------------------------------------------------
>                 Key: KNOX-751
>                 URL:
>             Project: Apache Knox
>          Issue Type: Bug
>          Components: Server
>    Affects Versions: 0.7.0, 0.8.0, 0.9.0, 0.9.1
>         Environment: All environment support Knox
>            Reporter: Jeffrey E  Rodriguez
>            Assignee: Jeffrey E  Rodriguez
>             Fix For: 0.10.0
> User Interface page rewriting through Knox presents many challenges. One of the challenges
is that a Web page may have more than one link to other hosts of a given type (e.g. Yarn may
have a link to more than one  host) which may be different from the originating one. The main
issue here is that Knox maps a single host to a rewrite and service. If the page has multiple
hosts of a single type the rewrite rules may not be enough without some extra information.
For example, Yarn UI may have links to Node URLs (more than one node) and even through the
Yarn page may be rewritten to include the schema, and hostname as a query parameters so the
dispatcher is able to fetch the correct host like:
> https://localhost:8443/gateway/nodeui/node?scheme=http?host=sandbox1?port=8042
> https://localhost:8443/gateway/nodeui/node?scheme=http?host=sandbox2?port=8042
> https://localhost:8443/gateway/nodeui/node?scheme=http?host=sandbox3?port=8042
> the response pages from each node need to have the right scheme, host, and port attached
to their query parameters.   We need a function that given a request to one of the links above
can save the information needed to rewrite their request output with the query parameters
needed for every response links.
> e.g. 
> if we click link http://localhost:8443/gateway/nodeui/node?scheme=http?host=sandbox2?port=8042
> this can be rewritten as: 
> “/node/node” to 
> https://localhost:8443/gateway/nodeui/node/node?scheme=http?host=sandbox2?port=8042
> These functions are needed:
> $hrefUrl.ur
> $
> $hrefUrl.scheme
> $hrefUrl.port
> $hrefUrl.path
> $hrefUrl.query
> The rewrite would then be something like this:
> {code:xml}
> <rule dir="OUT" name="nodeOut" >
>   <match pattern="{scheme}://{host}:{port}/node/?{**}"/>
>    <rewrite template="{$gateway[url]}/node/node?scheme={hrefUrl.scheme}?host={}?port={hrefUrl.port}?{**}”
> </rule>
> {code}
> This way then we are not only able to request the page as we do today but the output
response would be rewritten to have the information needed to be accessed.
> There is a KNOX-618 ( patch) but after evaluation we think that relying on the “Host”
header still doesn’t provide all the information needed such as the scheme. We have access
to the request object so it may be easier to get the information directly from the href request
than expecting a header. The “Host” header see
section 14.23, only defines host and port. There is no reliable way to get the scheme from
the response headers. Thus we can't really make use of the patch since we would still need
the function to provide us the scheme function. Also there is still more information we may
want such the path and query but those as not as critical to our effort to map all links from
Yarn UI at this point.

This message was sent by Atlassian JIRA

View raw message