aboutsummaryrefslogtreecommitdiff
path: root/catapult/telemetry/third_party/web-page-replay
diff options
context:
space:
mode:
Diffstat (limited to 'catapult/telemetry/third_party/web-page-replay')
-rw-r--r--catapult/telemetry/third_party/web-page-replay/README.chromium2
-rw-r--r--catapult/telemetry/third_party/web-page-replay/certutils.py1
-rw-r--r--catapult/telemetry/third_party/web-page-replay/codereview.settings3
-rw-r--r--catapult/telemetry/third_party/web-page-replay/dnsproxy.py11
-rw-r--r--catapult/telemetry/third_party/web-page-replay/httpclient_test.py10
-rwxr-xr-xcatapult/telemetry/third_party/web-page-replay/replay.py10
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)