mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-24 06:59:52 +01:00
proxy tests: verify ssl, add a no-wildcard option (issues with requests and wildcard cert)
This commit is contained in:
parent
bfaad224fa
commit
822a1c03e4
@ -109,6 +109,8 @@ class ProxyRouter(object):
|
|||||||
self.ca = CertificateAuthority(ca_file=ca_file,
|
self.ca = CertificateAuthority(ca_file=ca_file,
|
||||||
certs_dir=certs_dir)
|
certs_dir=certs_dir)
|
||||||
|
|
||||||
|
self.use_wildcard = proxy_options.get('use_wildcard_certs', True)
|
||||||
|
|
||||||
self.proxy_cert_dl_view = proxy_options.get('proxy_cert_download_view')
|
self.proxy_cert_dl_view = proxy_options.get('proxy_cert_download_view')
|
||||||
|
|
||||||
def __call__(self, env):
|
def __call__(self, env):
|
||||||
@ -247,7 +249,10 @@ class ProxyRouter(object):
|
|||||||
|
|
||||||
hostname, port = env['REL_REQUEST_URI'].split(':')
|
hostname, port = env['REL_REQUEST_URI'].split(':')
|
||||||
|
|
||||||
certfile = self.ca.get_wildcard_cert(hostname)
|
if not self.use_wildcard:
|
||||||
|
_, certfile = self.ca.get_cert_for_host(hostname)
|
||||||
|
else:
|
||||||
|
certfile = self.ca.get_wildcard_cert(hostname)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
ssl_sock = ssl.wrap_socket(sock,
|
ssl_sock = ssl.wrap_socket(sock,
|
||||||
|
@ -122,6 +122,9 @@ class ProxyAuthResolver(BaseCollResolver):
|
|||||||
#=================================================================
|
#=================================================================
|
||||||
# Experimental CookieResolver
|
# Experimental CookieResolver
|
||||||
class CookieResolver(BaseCollResolver): # pragma: no cover
|
class CookieResolver(BaseCollResolver): # pragma: no cover
|
||||||
|
|
||||||
|
SESH_COOKIE_NAME = '__pywb_proxy_sesh'
|
||||||
|
|
||||||
def __init__(self, routes, config):
|
def __init__(self, routes, config):
|
||||||
config['pre_connect'] = False
|
config['pre_connect'] = False
|
||||||
super(CookieResolver, self).__init__(routes, config)
|
super(CookieResolver, self).__init__(routes, config)
|
||||||
@ -129,7 +132,7 @@ class CookieResolver(BaseCollResolver): # pragma: no cover
|
|||||||
self.sethost_prefix = '-sethost.' + self.magic_name + '.'
|
self.sethost_prefix = '-sethost.' + self.magic_name + '.'
|
||||||
self.set_prefix = '-set.' + self.magic_name
|
self.set_prefix = '-set.' + self.magic_name
|
||||||
|
|
||||||
self.cookie_name = config.get('cookie_name', '__pywb_coll')
|
self.cookie_name = config.get('cookie_name', self.SESH_COOKIE_NAME)
|
||||||
self.proxy_select_view = config.get('proxy_select_view')
|
self.proxy_select_view = config.get('proxy_select_view')
|
||||||
|
|
||||||
self.extra_headers = config.get('extra_headers')
|
self.extra_headers = config.get('extra_headers')
|
||||||
|
@ -19,6 +19,7 @@ proxy_options:
|
|||||||
|
|
||||||
cookie_resolver: true
|
cookie_resolver: true
|
||||||
use_default_coll: false
|
use_default_coll: false
|
||||||
|
use_wildcard_certs: false
|
||||||
|
|
||||||
root_ca_file: ./tests/pywb_test_ca.pem
|
root_ca_file: ./tests/pywb_test_ca.pem
|
||||||
root_ca_name: pywb Test Cert
|
root_ca_name: pywb Test Cert
|
||||||
|
@ -3,13 +3,14 @@ from pywb.framework.wsgi_wrappers import init_app
|
|||||||
|
|
||||||
from wsgiref.simple_server import make_server
|
from wsgiref.simple_server import make_server
|
||||||
|
|
||||||
|
from pywb.framework.proxy_resolvers import CookieResolver
|
||||||
|
|
||||||
import threading
|
import threading
|
||||||
import requests
|
import requests
|
||||||
import shutil
|
import shutil
|
||||||
import os
|
import os
|
||||||
|
|
||||||
TEST_CONFIG = 'tests/test_config_proxy.yaml'
|
TEST_CONFIG = 'tests/test_config_proxy.yaml'
|
||||||
CA_BUNDLE = 'pywb-ca.pem'
|
|
||||||
|
|
||||||
TEST_CA_DIR = './tests/pywb_test_certs'
|
TEST_CA_DIR = './tests/pywb_test_certs'
|
||||||
TEST_CA_ROOT = './tests/pywb_test_ca.pem'
|
TEST_CA_ROOT = './tests/pywb_test_ca.pem'
|
||||||
@ -55,19 +56,18 @@ class ServeThread(threading.Thread):
|
|||||||
|
|
||||||
|
|
||||||
def test_replay():
|
def test_replay():
|
||||||
|
#cookie_val = CookieResolver.SESH_COOKIE_NAME + '=
|
||||||
resp = requests.get('https://iana.org/',
|
resp = requests.get('https://iana.org/',
|
||||||
proxies=server.proxy_dict,
|
proxies=server.proxy_dict,
|
||||||
verify=False)
|
# headers={'Cookie': cookie_val},
|
||||||
# verify=CA_BUNDLE)
|
verify=TEST_CA_ROOT)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
|
|
||||||
|
|
||||||
def test_replay_static():
|
def test_replay_static():
|
||||||
resp = requests.get('https://pywb.proxy/static/default/wb.js',
|
resp = requests.get('https://pywb.proxy/static/default/wb.js',
|
||||||
proxies=server.proxy_dict,
|
proxies=server.proxy_dict,
|
||||||
headers={'Connection': 'close'},
|
verify=TEST_CA_ROOT)
|
||||||
verify=False)
|
|
||||||
# verify=CA_BUNDLE)
|
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
found = u'function init_banner' in resp.text
|
found = u'function init_banner' in resp.text
|
||||||
assert found, resp.text
|
assert found, resp.text
|
||||||
|
Loading…
x
Reference in New Issue
Block a user