Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(178)

Side by Side Diff: net/tools/testserver/testserver.py

Issue 723343002: Update from https://crrev.com/304121 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/tools/quic/end_to_end_test.cc ('k') | net/udp/udp_socket_win.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 1958 matching lines...) Expand 10 before | Expand all | Expand 10 after
1969 1969
1970 return my_data_dir 1970 return my_data_dir
1971 1971
1972 def create_server(self, server_data): 1972 def create_server(self, server_data):
1973 port = self.options.port 1973 port = self.options.port
1974 host = self.options.host 1974 host = self.options.host
1975 1975
1976 if self.options.server_type == SERVER_HTTP: 1976 if self.options.server_type == SERVER_HTTP:
1977 if self.options.https: 1977 if self.options.https:
1978 pem_cert_and_key = None 1978 pem_cert_and_key = None
1979 ocsp_der = None
1979 if self.options.cert_and_key_file: 1980 if self.options.cert_and_key_file:
1980 if not os.path.isfile(self.options.cert_and_key_file): 1981 if not os.path.isfile(self.options.cert_and_key_file):
1981 raise testserver_base.OptionError( 1982 raise testserver_base.OptionError(
1982 'specified server cert file not found: ' + 1983 'specified server cert file not found: ' +
1983 self.options.cert_and_key_file + ' exiting...') 1984 self.options.cert_and_key_file + ' exiting...')
1984 pem_cert_and_key = file(self.options.cert_and_key_file, 'r').read() 1985 pem_cert_and_key = file(self.options.cert_and_key_file, 'r').read()
1985 else: 1986 else:
1986 # generate a new certificate and run an OCSP server for it. 1987 # generate a new certificate and run an OCSP server for it.
1987 self.__ocsp_server = OCSPServer((host, 0), OCSPHandler) 1988 self.__ocsp_server = OCSPServer((host, 0), OCSPHandler)
1988 print ('OCSP server started on %s:%d...' % 1989 print ('OCSP server started on %s:%d...' %
1989 (host, self.__ocsp_server.server_port)) 1990 (host, self.__ocsp_server.server_port))
1990 1991
1991 ocsp_der = None
1992 ocsp_state = None 1992 ocsp_state = None
1993 1993
1994 if self.options.ocsp == 'ok': 1994 if self.options.ocsp == 'ok':
1995 ocsp_state = minica.OCSP_STATE_GOOD 1995 ocsp_state = minica.OCSP_STATE_GOOD
1996 elif self.options.ocsp == 'revoked': 1996 elif self.options.ocsp == 'revoked':
1997 ocsp_state = minica.OCSP_STATE_REVOKED 1997 ocsp_state = minica.OCSP_STATE_REVOKED
1998 elif self.options.ocsp == 'invalid': 1998 elif self.options.ocsp == 'invalid':
1999 ocsp_state = minica.OCSP_STATE_INVALID 1999 ocsp_state = minica.OCSP_STATE_INVALID
2000 elif self.options.ocsp == 'unauthorized': 2000 elif self.options.ocsp == 'unauthorized':
2001 ocsp_state = minica.OCSP_STATE_UNAUTHORIZED 2001 ocsp_state = minica.OCSP_STATE_UNAUTHORIZED
2002 elif self.options.ocsp == 'unknown': 2002 elif self.options.ocsp == 'unknown':
2003 ocsp_state = minica.OCSP_STATE_UNKNOWN 2003 ocsp_state = minica.OCSP_STATE_UNKNOWN
2004 else: 2004 else:
2005 raise testserver_base.OptionError('unknown OCSP status: ' + 2005 raise testserver_base.OptionError('unknown OCSP status: ' +
2006 self.options.ocsp_status) 2006 self.options.ocsp_status)
2007 2007
2008 (pem_cert_and_key, ocsp_der) = minica.GenerateCertKeyAndOCSP( 2008 (pem_cert_and_key, ocsp_der) = minica.GenerateCertKeyAndOCSP(
2009 subject = "127.0.0.1", 2009 subject = "127.0.0.1",
2010 ocsp_url = ("http://%s:%d/ocsp" % 2010 ocsp_url = ("http://%s:%d/ocsp" %
2011 (host, self.__ocsp_server.server_port)), 2011 (host, self.__ocsp_server.server_port)),
2012 ocsp_state = ocsp_state, 2012 ocsp_state = ocsp_state,
2013 serial = self.options.cert_serial) 2013 serial = self.options.cert_serial)
2014 2014
2015 self.__ocsp_server.ocsp_response = ocsp_der 2015 if self.options.ocsp_server_unavailable:
2016 # SEQUENCE containing ENUMERATED with value 3 (tryLater).
2017 self.__ocsp_server.ocsp_response = '30030a0103'.decode('hex')
2018 else:
2019 self.__ocsp_server.ocsp_response = ocsp_der
2016 2020
2017 for ca_cert in self.options.ssl_client_ca: 2021 for ca_cert in self.options.ssl_client_ca:
2018 if not os.path.isfile(ca_cert): 2022 if not os.path.isfile(ca_cert):
2019 raise testserver_base.OptionError( 2023 raise testserver_base.OptionError(
2020 'specified trusted client CA file not found: ' + ca_cert + 2024 'specified trusted client CA file not found: ' + ca_cert +
2021 ' exiting...') 2025 ' exiting...')
2022 2026
2023 stapled_ocsp_response = None 2027 stapled_ocsp_response = None
2024 if self.__ocsp_server and self.options.staple_ocsp_response: 2028 if self.options.staple_ocsp_response:
2025 stapled_ocsp_response = self.__ocsp_server.ocsp_response 2029 stapled_ocsp_response = ocsp_der
2026 2030
2027 server = HTTPSServer((host, port), TestPageHandler, pem_cert_and_key, 2031 server = HTTPSServer((host, port), TestPageHandler, pem_cert_and_key,
2028 self.options.ssl_client_auth, 2032 self.options.ssl_client_auth,
2029 self.options.ssl_client_ca, 2033 self.options.ssl_client_ca,
2030 self.options.ssl_client_cert_type, 2034 self.options.ssl_client_cert_type,
2031 self.options.ssl_bulk_cipher, 2035 self.options.ssl_bulk_cipher,
2032 self.options.ssl_key_exchange, 2036 self.options.ssl_key_exchange,
2033 self.options.enable_npn, 2037 self.options.enable_npn,
2034 self.options.record_resume, 2038 self.options.record_resume,
2035 self.options.tls_intolerant, 2039 self.options.tls_intolerant,
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
2262 action='store_const', 2266 action='store_const',
2263 help='Enable server support for the NPN ' 2267 help='Enable server support for the NPN '
2264 'extension. The server will advertise ' 2268 'extension. The server will advertise '
2265 'support for exactly one protocol, http/1.1') 2269 'support for exactly one protocol, http/1.1')
2266 self.option_parser.add_option('--file-root-url', default='/files/', 2270 self.option_parser.add_option('--file-root-url', default='/files/',
2267 help='Specify a root URL for files served.') 2271 help='Specify a root URL for files served.')
2268 # TODO(ricea): Generalize this to support basic auth for HTTP too. 2272 # TODO(ricea): Generalize this to support basic auth for HTTP too.
2269 self.option_parser.add_option('--ws-basic-auth', action='store_true', 2273 self.option_parser.add_option('--ws-basic-auth', action='store_true',
2270 dest='ws_basic_auth', 2274 dest='ws_basic_auth',
2271 help='Enable basic-auth for WebSocket') 2275 help='Enable basic-auth for WebSocket')
2276 self.option_parser.add_option('--ocsp-server-unavailable',
2277 dest='ocsp_server_unavailable',
2278 default=False, action='store_true',
2279 help='If set, the OCSP server will return '
2280 'a tryLater status rather than the actual '
2281 'OCSP response.')
2272 2282
2273 2283
2274 if __name__ == '__main__': 2284 if __name__ == '__main__':
2275 sys.exit(ServerRunner().main()) 2285 sys.exit(ServerRunner().main())
OLDNEW
« no previous file with comments | « net/tools/quic/end_to_end_test.cc ('k') | net/udp/udp_socket_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698