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 21 matching lines...) Expand all Loading... |
32 import tlslite | 32 import tlslite |
33 import tlslite.api | 33 import tlslite.api |
34 | 34 |
35 try: | 35 try: |
36 import hashlib | 36 import hashlib |
37 _new_md5 = hashlib.md5 | 37 _new_md5 = hashlib.md5 |
38 except ImportError: | 38 except ImportError: |
39 import md5 | 39 import md5 |
40 _new_md5 = md5.new | 40 _new_md5 = md5.new |
41 | 41 |
| 42 if sys.platform == 'win32': |
| 43 import msvcrt |
| 44 |
42 SERVER_HTTP = 0 | 45 SERVER_HTTP = 0 |
43 SERVER_FTP = 1 | 46 SERVER_FTP = 1 |
44 | 47 |
45 debug_output = sys.stderr | 48 debug_output = sys.stderr |
46 def debug(str): | 49 def debug(str): |
47 debug_output.write(str + "\n") | 50 debug_output.write(str + "\n") |
48 debug_output.flush() | 51 debug_output.flush() |
49 | 52 |
50 class StoppableHTTPServer(BaseHTTPServer.HTTPServer): | 53 class StoppableHTTPServer(BaseHTTPServer.HTTPServer): |
51 """This is a specialization of of BaseHTTPServer to allow it | 54 """This is a specialization of of BaseHTTPServer to allow it |
(...skipping 1171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1223 | 1226 |
1224 # Define a customized banner (string returned when client connects) | 1227 # Define a customized banner (string returned when client connects) |
1225 ftp_handler.banner = ("pyftpdlib %s based ftpd ready." % | 1228 ftp_handler.banner = ("pyftpdlib %s based ftpd ready." % |
1226 pyftpdlib.ftpserver.__ver__) | 1229 pyftpdlib.ftpserver.__ver__) |
1227 | 1230 |
1228 # Instantiate FTP server class and listen to 127.0.0.1:port | 1231 # Instantiate FTP server class and listen to 127.0.0.1:port |
1229 address = ('127.0.0.1', port) | 1232 address = ('127.0.0.1', port) |
1230 server = pyftpdlib.ftpserver.FTPServer(address, ftp_handler) | 1233 server = pyftpdlib.ftpserver.FTPServer(address, ftp_handler) |
1231 print 'FTP server started on port %d...' % port | 1234 print 'FTP server started on port %d...' % port |
1232 | 1235 |
| 1236 # Notify the parent that we've started. (BaseServer subclasses |
| 1237 # bind their sockets on construction.) |
| 1238 if options.startup_pipe is not None: |
| 1239 if sys.platform == 'win32': |
| 1240 fd = msvcrt.open_osfhandle(options.startup_pipe, 0) |
| 1241 else: |
| 1242 fd = options.startup_pipe |
| 1243 startup_pipe = os.fdopen(fd, "w") |
| 1244 startup_pipe.write("READY") |
| 1245 startup_pipe.close() |
| 1246 |
1233 try: | 1247 try: |
1234 server.serve_forever() | 1248 server.serve_forever() |
1235 except KeyboardInterrupt: | 1249 except KeyboardInterrupt: |
1236 print 'shutting down server' | 1250 print 'shutting down server' |
1237 server.stop = True | 1251 server.stop = True |
1238 | 1252 |
1239 if __name__ == '__main__': | 1253 if __name__ == '__main__': |
1240 option_parser = optparse.OptionParser() | 1254 option_parser = optparse.OptionParser() |
1241 option_parser.add_option("-f", '--ftp', action='store_const', | 1255 option_parser.add_option("-f", '--ftp', action='store_const', |
1242 const=SERVER_FTP, default=SERVER_HTTP, | 1256 const=SERVER_FTP, default=SERVER_HTTP, |
(...skipping 13 matching lines...) Expand all Loading... |
1256 help='Specify that the client certificate request ' | 1270 help='Specify that the client certificate request ' |
1257 'should indicate that it supports the CA contained ' | 1271 'should indicate that it supports the CA contained ' |
1258 'in the specified certificate file') | 1272 'in the specified certificate file') |
1259 option_parser.add_option('', '--file-root-url', default='/files/', | 1273 option_parser.add_option('', '--file-root-url', default='/files/', |
1260 help='Specify a root URL for files served.') | 1274 help='Specify a root URL for files served.') |
1261 option_parser.add_option('', '--never-die', default=False, | 1275 option_parser.add_option('', '--never-die', default=False, |
1262 action="store_true", | 1276 action="store_true", |
1263 help='Prevent the server from dying when visiting ' | 1277 help='Prevent the server from dying when visiting ' |
1264 'a /kill URL. Useful for manually running some ' | 1278 'a /kill URL. Useful for manually running some ' |
1265 'tests.') | 1279 'tests.') |
| 1280 option_parser.add_option('', '--startup-pipe', type='int', |
| 1281 dest='startup_pipe', |
| 1282 help='File handle of pipe to parent process') |
1266 options, args = option_parser.parse_args() | 1283 options, args = option_parser.parse_args() |
1267 | 1284 |
1268 sys.exit(main(options, args)) | 1285 sys.exit(main(options, args)) |
OLD | NEW |