RewriteEngine On

# These rules are disabled so our site specific ReWrite rules will work,
# these are located in site-misc-directives.
# This rule is meant for autotest installations under a single directory,
# such as when pulling the code from git or from a tarball.
# RewriteCond /usr/local/autotest/results -d
# RewriteRule ^/results(.*) /usr/local/autotest/results/$1

# This rule is meant for autotest installations from a package such as RPM.
# RewriteCond /var/lib/autotest/results -d
# RewriteRule ^/results(.*) /var/lib/autotest/results/$1

Alias /results "/usr/local/autotest/results"
<Location "/results">
    IndexHeadInsert "<img src='/afe/header.png'/><hr/>"
    Options +Indexes +FollowSymLinks +MultiViews
    <IfVersion >= 2.4>
        Require all granted
    </IfVersion>
    <IfVersion <= 2.2.99>
        Order allow,deny
        Allow from all
    </IfVersion>
</Location>

<LocationMatch "/results.*\.(log|DEBUG|INFO|WARNING|ERROR)$">
    ForceType "text/plain; authoritative=true"
</LocationMatch>

# This rule is meant for autotest installations under a single directory,
# such as when pulling the code from git or from a tarball.
RewriteCond /usr/local/autotest/tko -d
RewriteRule ^/tko(.*) /usr/local/autotest/tko/$1

# These rules serve the tko interface when installed together with autotest
# libraries on python site-packages. Covers python versions 2.4 through 2.7.
RewriteCond /usr/lib/python2.7/site-packages/autotest/tko -d
RewriteRule ^/tko(.*) /usr/lib/python2.7/site-packages/autotest/tko/$1

RewriteCond /usr/lib/python2.6/site-packages/autotest/tko -d
RewriteRule ^/tko(.*) /usr/lib/python2.6/site-packages/autotest/tko/$1

RewriteCond /usr/lib/python2.5/site-packages/autotest/tko -d
RewriteRule ^/tko(.*) /usr/lib/python2.5/site-packages/autotest/tko/$1

RewriteCond /usr/lib/python2.4/site-packages/autotest/tko -d
RewriteRule ^/tko(.*) /usr/lib/python2.4/site-packages/autotest/tko/$1

<Location "/tko">
    Options +ExecCGI +Indexes +MultiViews +SymLinksIfOwnerMatch
    DirectoryIndex compose_query.cgi
    <IfVersion >= 2.4>
        Require all granted
    </IfVersion>
    # Non existing version, safeguard against new 2.2 releases
    <IfVersion <= 2.2.99>
        Order allow,deny
        Allow from all
    </IfVersion>
</Location>
