<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<service role="RANGERUI" name="rangerui" version="0.5.0">
    <policies>
        <policy role="webappsec"/>
        <policy role="authentication" name="Anonymous"/>
        <policy role="rewrite"/>
        <policy role="authorization"/>
    </policies>
    <routes>
        <route path="/ranger">
            <rewrite apply="RANGERUI/rangerui/inbound/root" to="request.url"/>
            <rewrite apply="RANGERUI/rangerui/outbound/links" to="response.body"/>
            <rewrite apply="RANGERUI/rangerui/outbound/headers" to="response.headers"/>
        </route>
        <route path="/ranger/**">
            <rewrite apply="RANGERUI/rangerui/inbound/path" to="request.url"/>
            <rewrite apply="RANGERUI/rangerui/outbound/links" to="response.body"/>
            <rewrite apply="RANGERUI/rangerui/outbound/headers" to="response.headers"/>
        </route>
        <route path="/ranger/**?**">
            <rewrite apply="RANGERUI/rangerui/inbound/query" to="request.url"/>
            <rewrite apply="RANGERUI/rangerui/outbound/links" to="response.body"/>
            <rewrite apply="RANGERUI/rangerui/outbound/headers" to="response.headers"/>
        </route>
    </routes>
    <dispatch classname="org.apache.hadoop.gateway.dispatch.PassAllHeadersDispatch"/>
</service>
