75 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/usr/bin/env python
 | |
| 
 | |
| """Simple HTTP Server With Upload and SSL.
 | |
| This module builds on BaseHTTPServer by implementing the standard GET
 | |
| and HEAD requests in a fairly straightforward manner.
 | |
| 
 | |
| Create a certificate using the hostname or IP address as the common name with
 | |
| the following command: openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
 | |
| Enter that path under /path/to/cert
 | |
| """
 | |
| 
 | |
| __version__ = "0.2"
 | |
| __all__ = ["SimpleHTTPRequestHandler"]
 | |
| __author__ = "bones7456"
 | |
| __home_page__ = "http://li2z.cn/"
 | |
| __ssl_addition__ = 'rhmoult'
 | |
| 
 | |
| import sys
 | |
| import os
 | |
| import argparse
 | |
| import ssl  # Modification by rmoulton
 | |
| 
 | |
| try:
 | |
|     from cStringIO import StringIO
 | |
|     from SocketServer import ThreadingMixIn
 | |
|     from BaseHTTPServer import HTTPServer
 | |
|     from SimpleHTTPServer import SimpleHTTPRequestHandler
 | |
| except ImportError:
 | |
|     from StringIO import StringIO
 | |
|     from socketserver import ThreadingMixIn
 | |
|     from http.server import SimpleHTTPRequestHandler, HTTPServer
 | |
| 
 | |
| class ThreadingSimpleServer(ThreadingMixIn, HTTPServer):
 | |
|     pass
 | |
| 
 | |
| def main(HandlerClass=SimpleHTTPRequestHandler, ServerClass=HTTPServer, protocol="HTTP/1.0"):
 | |
| 
 | |
|     parser = argparse.ArgumentParser(description='Listen and receive the incoming audit records')
 | |
|     parser.add_argument('--port', type=int, help='the port number to listen on')
 | |
|     parser.add_argument('--dir', help='the port number to listen on')
 | |
| 
 | |
|     args = parser.parse_args()
 | |
| 
 | |
|     if args.port:
 | |
|         port = args.port
 | |
|     else:
 | |
|         port = 8000
 | |
| 
 | |
|     if args.dir:
 | |
|         os.chdir(args.dir)
 | |
| 
 | |
|     server_address = ('', port)
 | |
| 
 | |
|     server = ThreadingSimpleServer(server_address, SimpleHTTPRequestHandler)
 | |
| 
 | |
|     server.socket = ssl.wrap_socket(server.socket, certfile='/path/to/cert', server_side=True, cert_reqs=CERT_REQUIRED, ssl_version=PROTOCOL_TLSv1_2)
 | |
| 
 | |
|     try:
 | |
|         while 1:
 | |
|             sys.stdout.flush()
 | |
|             server.handle_request()
 | |
|     except KeyboardInterrupt:
 | |
|         print("Finished")
 | |
|     #HandlerClass.protocol_version = protocol
 | |
|     #httpd = ServerClass(server_address, HandlerClass)
 | |
| 
 | |
|     #sa = httpd.socket.getsockname()
 | |
|     #print "Serving HTTP on", sa[0], "port", sa[1], "..."
 | |
|     #httpd.socket = ssl.wrap_socket(httpd.socket, certfile='/path/to/cert', server_side=True)
 | |
|     #httpd.serve_forever()
 | |
| 
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     main()
 |