| 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 |