diff options
Diffstat (limited to 'catapult/telemetry/third_party/web-page-replay')
6 files changed, 26 insertions, 11 deletions
diff --git a/catapult/telemetry/third_party/web-page-replay/README.chromium b/catapult/telemetry/third_party/web-page-replay/README.chromium index 6b1905d4..0a1b6575 100644 --- a/catapult/telemetry/third_party/web-page-replay/README.chromium +++ b/catapult/telemetry/third_party/web-page-replay/README.chromium @@ -1,7 +1,7 @@ Name: chromite Short Name: webpagereplay URL: https://github.com/chromium/web-page-replay -Version: 191fd2f2f224ce6e4d5b7fec78e16493559fbb36 (commit hash) +Version: 6cffdf1fb6c9a6d5dccbcc9cc18b8738a538eeba (commit hash) License: BSD License File: NOT_SHIPPED Security Critical: no diff --git a/catapult/telemetry/third_party/web-page-replay/certutils.py b/catapult/telemetry/third_party/web-page-replay/certutils.py index 73bfdf4e..46c31a81 100644 --- a/catapult/telemetry/third_party/web-page-replay/certutils.py +++ b/catapult/telemetry/third_party/web-page-replay/certutils.py @@ -130,6 +130,7 @@ def generate_dummy_ca_cert(subject='_WebPageReplayCert'): ca_cert.set_pubkey(key) ca_cert.add_extensions([ crypto.X509Extension('basicConstraints', True, 'CA:TRUE'), + crypto.X509Extension('subjectAltName', False, 'DNS:' + subject), crypto.X509Extension('nsCertType', True, 'sslCA'), crypto.X509Extension('extendedKeyUsage', True, ('serverAuth,clientAuth,emailProtection,' diff --git a/catapult/telemetry/third_party/web-page-replay/codereview.settings b/catapult/telemetry/third_party/web-page-replay/codereview.settings new file mode 100644 index 00000000..f0c2b126 --- /dev/null +++ b/catapult/telemetry/third_party/web-page-replay/codereview.settings @@ -0,0 +1,3 @@ +# This file is used by gcl to get repository specific information. +CODE_REVIEW_SERVER: codereview.chromium.org +PROJECT: web-page-replay diff --git a/catapult/telemetry/third_party/web-page-replay/dnsproxy.py b/catapult/telemetry/third_party/web-page-replay/dnsproxy.py index a913d841..171b9966 100644 --- a/catapult/telemetry/third_party/web-page-replay/dnsproxy.py +++ b/catapult/telemetry/third_party/web-page-replay/dnsproxy.py @@ -34,11 +34,16 @@ class DnsProxyException(Exception): pass +DEFAULT_DNS_PORT = 53 + + class RealDnsLookup(object): - def __init__(self, name_servers): - if '127.0.0.1' in name_servers: + def __init__(self, name_servers, dns_forwarding, proxy_host, proxy_port): + if (proxy_host in name_servers and proxy_port == DEFAULT_DNS_PORT and + dns_forwarding): raise DnsProxyException( - 'Invalid nameserver: 127.0.0.1 (causes an infinte loop)') + 'Invalid nameserver: %s (causes an infinte loop)'.format( + proxy_host)) self.resolver = resolver.get_default_resolver() self.resolver.nameservers = name_servers self.dns_cache_lock = threading.Lock() diff --git a/catapult/telemetry/third_party/web-page-replay/httpclient_test.py b/catapult/telemetry/third_party/web-page-replay/httpclient_test.py index 30b92095..709ce47c 100644 --- a/catapult/telemetry/third_party/web-page-replay/httpclient_test.py +++ b/catapult/telemetry/third_party/web-page-replay/httpclient_test.py @@ -182,16 +182,17 @@ class RealHttpFetchGetConnectionTest(unittest.TestCase): def test_ssl_get_connection_with_proxy_tunnels_to_host(self): """HTTPS (SSL) connection with proxy tunnels to target host.""" self.set_https_proxy(host='proxy.com', port=8443) - connection = self.fetch._get_connection('example.com', None, is_ssl=True) + connection = self.fetch._get_connection('example.com', 9443, is_ssl=True) self.assertEqual('example.com', connection._tunnel_host) # host name - self.assertEqual(None, connection._tunnel_port) # host port + self.assertEqual(9443, connection._tunnel_port) # host port class ActualNetworkFetchTest(test_utils.RealNetworkFetchTest): def testFetchNonSSLRequest(self): real_dns_lookup = dnsproxy.RealDnsLookup( - name_servers=[platformsettings.get_original_primary_nameserver()]) + name_servers=[platformsettings.get_original_primary_nameserver()], + dns_forwarding=False, proxy_host='127.0.0.1', proxy_port=5353) fetch = httpclient.RealHttpFetch(real_dns_lookup) request = httparchive.ArchivedHttpRequest( command='GET', host='google.com', full_path='/search?q=dogs', @@ -201,7 +202,8 @@ class ActualNetworkFetchTest(test_utils.RealNetworkFetchTest): def testFetchSSLRequest(self): real_dns_lookup = dnsproxy.RealDnsLookup( - name_servers=[platformsettings.get_original_primary_nameserver()]) + name_servers=[platformsettings.get_original_primary_nameserver()], + dns_forwarding=False, proxy_host='127.0.0.1', proxy_port=5353) fetch = httpclient.RealHttpFetch(real_dns_lookup) request = httparchive.ArchivedHttpRequest( command='GET', host='google.com', full_path='/search?q=dogs', diff --git a/catapult/telemetry/third_party/web-page-replay/replay.py b/catapult/telemetry/third_party/web-page-replay/replay.py index 3371f82c..f748ef73 100755 --- a/catapult/telemetry/third_party/web-page-replay/replay.py +++ b/catapult/telemetry/third_party/web-page-replay/replay.py @@ -315,8 +315,6 @@ def replay(options, replay_filename): if options.server: AddDnsForward(server_manager, options.server) else: - real_dns_lookup = dnsproxy.RealDnsLookup( - name_servers=[platformsettings.get_original_primary_nameserver()]) if options.record: httparchive.HttpArchive.AssertWritable(replay_filename) if options.append and os.path.exists(replay_filename): @@ -329,7 +327,6 @@ def replay(options, replay_filename): http_archive = httparchive.HttpArchive.Load(replay_filename) logging.info('Loaded %d responses from %s', len(http_archive), replay_filename) - server_manager.AppendRecordCallback(real_dns_lookup.ClearCache) server_manager.AppendRecordCallback(http_archive.clear) ipfw_dns_host = None @@ -340,6 +337,13 @@ def replay(options, replay_filename): ipfw_dns_host = platformsettings.get_server_ip_address( options.server_mode) + real_dns_lookup = dnsproxy.RealDnsLookup( + name_servers=[platformsettings.get_original_primary_nameserver()], + dns_forwarding=options.dns_forwarding, + proxy_host=ipfw_dns_host, + proxy_port=options.dns_port) + server_manager.AppendRecordCallback(real_dns_lookup.ClearCache) + if options.dns_forwarding: if not options.server_mode and ipfw_dns_host == '127.0.0.1': AddDnsForward(server_manager, ipfw_dns_host) |