the upcoming 2.0 version
https://redmine.lighttpd.net/projects/lighttpd2
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.5 KiB
65 lines
1.5 KiB
# -*- coding: utf-8 -*- |
|
|
|
from base import * |
|
from requests import * |
|
|
|
class TestSimple(CurlRequest): |
|
URL = "/test.txt" |
|
EXPECT_RESPONSE_CODE = 200 |
|
config = """ |
|
req_header.overwrite "Host" => "basic-gets"; |
|
self_proxy; |
|
""" |
|
no_docroot = True |
|
|
|
# need vhost for next test |
|
class TestEncodedURL(CurlRequest): |
|
URL = "/some%2Ffile?abc" |
|
EXPECT_RESPONSE_BODY = "/dest%2Ffile?abc" |
|
EXPECT_RESPONSE_CODE = 200 |
|
no_docroot = True |
|
config = """ |
|
rewrite_raw "/some(%2F.*)" => "/dest$1"; |
|
respond 200 => "%{req.raw_path}"; |
|
""" |
|
|
|
# backend gets encoded %2F and rewrites again |
|
class TestProxiedRewrittenEncodedURL(CurlRequest): |
|
URL = "/foo%2Ffile?abc" |
|
EXPECT_RESPONSE_BODY = "/dest%2Ffile?abc" |
|
EXPECT_RESPONSE_CODE = 200 |
|
no_docroot = True |
|
config = """ |
|
rewrite_raw "/foo(.*)" => "/some$1"; |
|
req_header.overwrite "Host" => "encodedurl.mod-proxy"; |
|
self_proxy; |
|
""" |
|
|
|
# backend gets decoded %2F and doesn't rewrite again |
|
class TestProxiedRewrittenDecodedURL(CurlRequest): |
|
URL = "/foo%2Ffile?abc" |
|
EXPECT_RESPONSE_BODY = "/some/file?abc" |
|
EXPECT_RESPONSE_CODE = 200 |
|
no_docroot = True |
|
config = """ |
|
rewrite "/foo(.*)" => "/some$1"; |
|
req_header.overwrite "Host" => "encodedurl.mod-proxy"; |
|
self_proxy; |
|
""" |
|
|
|
class Test(GroupTest): |
|
group = [ |
|
TestSimple, |
|
TestEncodedURL, |
|
TestProxiedRewrittenEncodedURL, |
|
TestProxiedRewrittenDecodedURL, |
|
] |
|
|
|
def Prepare(self): |
|
self.plain_config = """ |
|
setup {{ module_load "mod_proxy"; }} |
|
|
|
self_proxy = {{ |
|
proxy "127.0.0.2:{self_port}"; |
|
}}; |
|
""".format(self_port = Env.port)
|
|
|