55 lines
1.5 KiB
Python
55 lines
1.5 KiB
Python
import inspect
|
|
import logging
|
|
import os
|
|
import re
|
|
import subprocess
|
|
from typing import Dict, Any
|
|
|
|
from pyhttpd.certs import CertificateSpec
|
|
from pyhttpd.conf import HttpdConf
|
|
from pyhttpd.env import HttpdTestEnv, HttpdTestSetup
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
class ProxyTestSetup(HttpdTestSetup):
|
|
|
|
def __init__(self, env: 'HttpdTestEnv'):
|
|
super().__init__(env=env)
|
|
self.add_source_dir(os.path.dirname(inspect.getfile(ProxyTestSetup)))
|
|
self.add_modules(["proxy", "proxy_http", "proxy_balancer", "lbmethod_byrequests"])
|
|
|
|
|
|
class ProxyTestEnv(HttpdTestEnv):
|
|
|
|
def __init__(self, pytestconfig=None):
|
|
super().__init__(pytestconfig=pytestconfig)
|
|
self.add_httpd_conf([
|
|
])
|
|
self._d_reverse = f"reverse.{self.http_tld}"
|
|
self._d_forward = f"forward.{self.http_tld}"
|
|
self._d_mixed = f"mixed.{self.http_tld}"
|
|
|
|
self.add_httpd_log_modules(["proxy", "proxy_http", "proxy_balancer", "lbmethod_byrequests", "ssl"])
|
|
self.add_cert_specs([
|
|
CertificateSpec(domains=[
|
|
self._d_forward, self._d_reverse, self._d_mixed
|
|
]),
|
|
CertificateSpec(domains=[f"noh2.{self.http_tld}"], key_type='rsa2048'),
|
|
])
|
|
|
|
def setup_httpd(self, setup: HttpdTestSetup = None):
|
|
super().setup_httpd(setup=ProxyTestSetup(env=self))
|
|
|
|
@property
|
|
def d_forward(self):
|
|
return self._d_forward
|
|
|
|
@property
|
|
def d_reverse(self):
|
|
return self._d_reverse
|
|
|
|
@property
|
|
def d_mixed(self):
|
|
return self._d_mixed
|