OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright 2013 The Chromium Authors. All rights reserved. | 2 # Copyright 2013 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 """This is a simple HTTP/FTP/TCP/UDP/BASIC_AUTH_PROXY/WEBSOCKET server used for | 6 """This is a simple HTTP/FTP/TCP/UDP/BASIC_AUTH_PROXY/WEBSOCKET server used for |
7 testing Chrome. | 7 testing Chrome. |
8 | 8 |
9 It supports several test URLs, as specified by the handlers in TestPageHandler. | 9 It supports several test URLs, as specified by the handlers in TestPageHandler. |
10 By default, it listens on an ephemeral port and sends the port number back to | 10 By default, it listens on an ephemeral port and sends the port number back to |
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
334 self.SlowServerHandler, | 334 self.SlowServerHandler, |
335 self.ChunkedServerHandler, | 335 self.ChunkedServerHandler, |
336 self.NoContentHandler, | 336 self.NoContentHandler, |
337 self.ServerRedirectHandler, | 337 self.ServerRedirectHandler, |
338 self.CrossSiteRedirectHandler, | 338 self.CrossSiteRedirectHandler, |
339 self.ClientRedirectHandler, | 339 self.ClientRedirectHandler, |
340 self.GetSSLSessionCacheHandler, | 340 self.GetSSLSessionCacheHandler, |
341 self.SSLManySmallRecords, | 341 self.SSLManySmallRecords, |
342 self.GetChannelID, | 342 self.GetChannelID, |
343 self.GetTokenBindingEKM, | 343 self.GetTokenBindingEKM, |
| 344 self.ForwardTokenBindingHeader, |
344 self.GetClientCert, | 345 self.GetClientCert, |
345 self.ClientCipherListHandler, | 346 self.ClientCipherListHandler, |
346 self.CloseSocketHandler, | 347 self.CloseSocketHandler, |
347 self.DefaultResponseHandler] | 348 self.DefaultResponseHandler] |
348 post_handlers = [ | 349 post_handlers = [ |
349 self.EchoTitleHandler, | 350 self.EchoTitleHandler, |
350 self.EchoHandler, | 351 self.EchoHandler, |
351 self.PostOnlyFileHandler, | 352 self.PostOnlyFileHandler, |
352 self.EchoMultipartPostHandler] + get_handlers | 353 self.EchoMultipartPostHandler] + get_handlers |
353 put_handlers = [ | 354 put_handlers = [ |
(...skipping 1171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1525 return False | 1526 return False |
1526 | 1527 |
1527 ekm = self.server.tlsConnection.exportKeyingMaterial( | 1528 ekm = self.server.tlsConnection.exportKeyingMaterial( |
1528 "EXPORTER-Token-Binding", "", False, 32) | 1529 "EXPORTER-Token-Binding", "", False, 32) |
1529 self.send_response(200) | 1530 self.send_response(200) |
1530 self.send_header('Content-Type', 'application/octet-stream') | 1531 self.send_header('Content-Type', 'application/octet-stream') |
1531 self.end_headers() | 1532 self.end_headers() |
1532 self.wfile.write(ekm) | 1533 self.wfile.write(ekm) |
1533 return True | 1534 return True |
1534 | 1535 |
| 1536 def ForwardTokenBindingHeader(self): |
| 1537 """Send a redirect that sets the Include-Referer-Token-Binding-ID |
| 1538 header.""" |
| 1539 |
| 1540 test_name = '/forward-tokbind' |
| 1541 if not self._ShouldHandleRequest(test_name): |
| 1542 return False |
| 1543 |
| 1544 query_char = self.path.find('?') |
| 1545 if query_char < 0 or len(self.path) <= query_char + 1: |
| 1546 self.sendRedirectHelp(test_name) |
| 1547 return True |
| 1548 dest = urllib.unquote(self.path[query_char + 1:]) |
| 1549 |
| 1550 self.send_response(302) |
| 1551 self.send_header('Location', dest) |
| 1552 self.send_header('Include-Referer-Token-Binding-ID', 'true') |
| 1553 self.end_headers() |
| 1554 return True |
| 1555 |
1535 def GetClientCert(self): | 1556 def GetClientCert(self): |
1536 """Send a reply whether a client certificate was provided.""" | 1557 """Send a reply whether a client certificate was provided.""" |
1537 | 1558 |
1538 if not self._ShouldHandleRequest('/client-cert'): | 1559 if not self._ShouldHandleRequest('/client-cert'): |
1539 return False | 1560 return False |
1540 | 1561 |
1541 self.send_response(200) | 1562 self.send_response(200) |
1542 self.send_header('Content-Type', 'text/plain') | 1563 self.send_header('Content-Type', 'text/plain') |
1543 self.end_headers() | 1564 self.end_headers() |
1544 | 1565 |
(...skipping 632 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2177 'an anonymous user.') | 2198 'an anonymous user.') |
2178 self.option_parser.add_option('--disable-channel-id', action='store_true') | 2199 self.option_parser.add_option('--disable-channel-id', action='store_true') |
2179 self.option_parser.add_option('--disable-extended-master-secret', | 2200 self.option_parser.add_option('--disable-extended-master-secret', |
2180 action='store_true') | 2201 action='store_true') |
2181 self.option_parser.add_option('--token-binding-params', action='append', | 2202 self.option_parser.add_option('--token-binding-params', action='append', |
2182 default=[], type='int') | 2203 default=[], type='int') |
2183 | 2204 |
2184 | 2205 |
2185 if __name__ == '__main__': | 2206 if __name__ == '__main__': |
2186 sys.exit(ServerRunner().main()) | 2207 sys.exit(ServerRunner().main()) |
OLD | NEW |