OLD | NEW |
1 #!/usr/bin/python2.4 | 1 #!/usr/bin/python2.4 |
2 # Copyright (c) 2006-2010 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2006-2010 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 server used for testing Chrome. | 6 """This is a simple HTTP server used for testing Chrome. |
7 | 7 |
8 It supports several test URLs, as specified by the handlers in TestPageHandler. | 8 It supports several test URLs, as specified by the handlers in TestPageHandler. |
9 It defaults to living on localhost:8888. | 9 It defaults to living on localhost:8888. |
10 It can use https if you specify the flag --https=CERT where CERT is the path | 10 It can use https if you specify the flag --https=CERT where CERT is the path |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 try: | 75 try: |
76 tlsConnection.handshakeServer(certChain=self.cert_chain, | 76 tlsConnection.handshakeServer(certChain=self.cert_chain, |
77 privateKey=self.private_key, | 77 privateKey=self.private_key, |
78 sessionCache=self.session_cache) | 78 sessionCache=self.session_cache) |
79 tlsConnection.ignoreAbruptClose = True | 79 tlsConnection.ignoreAbruptClose = True |
80 return True | 80 return True |
81 except tlslite.api.TLSError, error: | 81 except tlslite.api.TLSError, error: |
82 print "Handshake failure:", str(error) | 82 print "Handshake failure:", str(error) |
83 return False | 83 return False |
84 | 84 |
85 class ForkingHTTPServer(SocketServer.ForkingMixIn, StoppableHTTPServer): | |
86 """This is a specialization of of StoppableHTTPServer which serves each | |
87 request in a separate process""" | |
88 pass | |
89 | |
90 class ForkingHTTPSServer(SocketServer.ForkingMixIn, HTTPSServer): | |
91 """This is a specialization of of HTTPSServer which serves each | |
92 request in a separate process""" | |
93 pass | |
94 | |
95 class TestPageHandler(BaseHTTPServer.BaseHTTPRequestHandler): | 85 class TestPageHandler(BaseHTTPServer.BaseHTTPRequestHandler): |
96 | 86 |
97 def __init__(self, request, client_address, socket_server): | 87 def __init__(self, request, client_address, socket_server): |
98 self._connect_handlers = [ | 88 self._connect_handlers = [ |
99 self.RedirectConnectHandler, | 89 self.RedirectConnectHandler, |
100 self.ServerAuthConnectHandler, | 90 self.ServerAuthConnectHandler, |
101 self.DefaultConnectResponseHandler] | 91 self.DefaultConnectResponseHandler] |
102 self._get_handlers = [ | 92 self._get_handlers = [ |
103 self.KillHandler, | 93 self.KillHandler, |
104 self.NoCacheMaxAgeTimeHandler, | 94 self.NoCacheMaxAgeTimeHandler, |
(...skipping 1088 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1193 | 1183 |
1194 # Try to free up the port if there's an orphaned old instance. | 1184 # Try to free up the port if there's an orphaned old instance. |
1195 TryKillingOldServer(port) | 1185 TryKillingOldServer(port) |
1196 | 1186 |
1197 if options.server_type == SERVER_HTTP: | 1187 if options.server_type == SERVER_HTTP: |
1198 if options.cert: | 1188 if options.cert: |
1199 # let's make sure the cert file exists. | 1189 # let's make sure the cert file exists. |
1200 if not os.path.isfile(options.cert): | 1190 if not os.path.isfile(options.cert): |
1201 print 'specified cert file not found: ' + options.cert + ' exiting...' | 1191 print 'specified cert file not found: ' + options.cert + ' exiting...' |
1202 return | 1192 return |
1203 if options.forking: | 1193 server = HTTPSServer(('127.0.0.1', port), TestPageHandler, options.cert) |
1204 server_class = ForkingHTTPSServer | |
1205 else: | |
1206 server_class = HTTPSServer | |
1207 server = server_class(('127.0.0.1', port), TestPageHandler, options.cert) | |
1208 print 'HTTPS server started on port %d...' % port | 1194 print 'HTTPS server started on port %d...' % port |
1209 else: | 1195 else: |
1210 if options.forking: | 1196 server = StoppableHTTPServer(('127.0.0.1', port), TestPageHandler) |
1211 server_class = ForkingHTTPServer | |
1212 else: | |
1213 server_class = StoppableHTTPServer | |
1214 server = server_class(('127.0.0.1', port), TestPageHandler) | |
1215 print 'HTTP server started on port %d...' % port | 1197 print 'HTTP server started on port %d...' % port |
1216 | 1198 |
1217 server.data_dir = MakeDataDir() | 1199 server.data_dir = MakeDataDir() |
1218 server.file_root_url = options.file_root_url | 1200 server.file_root_url = options.file_root_url |
1219 MakeDumpDir(server.data_dir) | 1201 MakeDumpDir(server.data_dir) |
1220 | 1202 |
1221 # means FTP Server | 1203 # means FTP Server |
1222 else: | 1204 else: |
1223 my_data_dir = MakeDataDir() | 1205 my_data_dir = MakeDataDir() |
1224 | 1206 |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1256 except KeyboardInterrupt: | 1238 except KeyboardInterrupt: |
1257 print 'shutting down server' | 1239 print 'shutting down server' |
1258 server.stop = True | 1240 server.stop = True |
1259 | 1241 |
1260 if __name__ == '__main__': | 1242 if __name__ == '__main__': |
1261 option_parser = optparse.OptionParser() | 1243 option_parser = optparse.OptionParser() |
1262 option_parser.add_option("-f", '--ftp', action='store_const', | 1244 option_parser.add_option("-f", '--ftp', action='store_const', |
1263 const=SERVER_FTP, default=SERVER_HTTP, | 1245 const=SERVER_FTP, default=SERVER_HTTP, |
1264 dest='server_type', | 1246 dest='server_type', |
1265 help='FTP or HTTP server: default is HTTP.') | 1247 help='FTP or HTTP server: default is HTTP.') |
1266 option_parser.add_option('--forking', action='store_true', default=False, | |
1267 dest='forking', | |
1268 help='Serve each request in a separate process.') | |
1269 option_parser.add_option('', '--port', default='8888', type='int', | 1248 option_parser.add_option('', '--port', default='8888', type='int', |
1270 help='Port used by the server.') | 1249 help='Port used by the server.') |
1271 option_parser.add_option('', '--data-dir', dest='data_dir', | 1250 option_parser.add_option('', '--data-dir', dest='data_dir', |
1272 help='Directory from which to read the files.') | 1251 help='Directory from which to read the files.') |
1273 option_parser.add_option('', '--https', dest='cert', | 1252 option_parser.add_option('', '--https', dest='cert', |
1274 help='Specify that https should be used, specify ' | 1253 help='Specify that https should be used, specify ' |
1275 'the path to the cert containing the private key ' | 1254 'the path to the cert containing the private key ' |
1276 'the server should use.') | 1255 'the server should use.') |
1277 option_parser.add_option('', '--file-root-url', default='/files/', | 1256 option_parser.add_option('', '--file-root-url', default='/files/', |
1278 help='Specify a root URL for files served.') | 1257 help='Specify a root URL for files served.') |
1279 option_parser.add_option('', '--never-die', default=False, | 1258 option_parser.add_option('', '--never-die', default=False, |
1280 action="store_true", | 1259 action="store_true", |
1281 help='Prevent the server from dying when visiting ' | 1260 help='Prevent the server from dying when visiting ' |
1282 'a /kill URL. Useful for manually running some ' | 1261 'a /kill URL. Useful for manually running some ' |
1283 'tests.') | 1262 'tests.') |
1284 options, args = option_parser.parse_args() | 1263 options, args = option_parser.parse_args() |
1285 | 1264 |
1286 sys.exit(main(options, args)) | 1265 sys.exit(main(options, args)) |
OLD | NEW |