mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-23 14:42:24 +01:00
warcserver: SOCKS proxy: - add support for running warcserver through a socks proxy specified via SOCKS_HOST and SOCKS_PORT - move socks patch setup, http max_header adjustment to http module - logging: print stack trace only if debugging - add pysocks to extra_requirements, enable in ci - add simple test (not actual proxy) to check that connection through proxy is attempted - docs: add SOCKS proxy section to docs
39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
from .base_config_test import BaseConfigTest, fmod_sl
|
|
|
|
import pywb.warcserver.http as pywb_http
|
|
import os
|
|
import socket
|
|
import gevent
|
|
import pytest
|
|
|
|
|
|
# ============================================================================
|
|
class TestSOCKSProxy(BaseConfigTest):
|
|
@classmethod
|
|
def setup_class(cls):
|
|
os.environ['SOCKS_HOST'] = 'localhost'
|
|
os.environ['SOCKS_PORT'] = '8080'
|
|
|
|
pywb_http.patch_socks()
|
|
import pywb.warcserver.resource.responseloader
|
|
pywb.warcserver.resource.responseloader.SOCKS_PROXIES = pywb_http.SOCKS_PROXIES
|
|
super(TestSOCKSProxy, cls).setup_class('config_test.yaml')
|
|
|
|
@classmethod
|
|
def teardown_class(cls):
|
|
pywb_http.unpatch_socks()
|
|
super(TestSOCKSProxy, cls).teardown_class()
|
|
|
|
def test_socks_proxy_set(self):
|
|
assert pywb_http.SOCKS_PROXIES == {'http': 'socks5h://localhost:8080',
|
|
'https': 'socks5h://localhost:8080'
|
|
}
|
|
|
|
def test_socks_attempt_connect(self, fmod_sl):
|
|
pytest.importorskip('socks')
|
|
# no proxy is set, expect to fail if socks is being used
|
|
resp = self.get('/live/{0}http://httpbin.org/get', fmod_sl, status=400)
|
|
assert resp.status_int == 400
|
|
|
|
|