Start of a real app framework

This commit is contained in:
Ian Gulliver
2016-04-03 12:14:26 -07:00
parent 4d75a25856
commit 3e16887e0f

View File

@@ -1,20 +1,65 @@
#!/usr/bin/python3 #!/usr/bin/python3
import argparse
from http import server from http import server
import socket import socket
import ssl import ssl
parser = argparse.ArgumentParser(description='certserver')
parser.add_argument(
'--listen-host',
dest='listen_host',
action='store',
default='::')
parser.add_argument(
'--listen-port',
dest='listen_port',
type=int,
action='store',
default=443)
parser.add_argument(
'--server-key',
dest='server_key',
action='store',
required=True)
parser.add_argument(
'--server-cert',
dest='server_cert',
action='store',
required=True)
FLAGS = parser.parse_args()
class HTTPServer6(server.HTTPServer): class HTTPServer6(server.HTTPServer):
address_family = socket.AF_INET6 address_family = socket.AF_INET6
httpd = HTTPServer6(('', 4443), server.SimpleHTTPRequestHandler)
httpd.socket = ssl.wrap_socket( class CertServer(object):
httpd.socket,
keyfile='/home/flamingcow/ca/client/private/test1.key.pem', def __init__(self, listen_host, listen_port, server_key, server_cert):
certfile='/home/flamingcow/ca/client/certs/test1.cert.pem', self._httpd = HTTPServer6((listen_host, listen_port), server.SimpleHTTPRequestHandler)
server_side=True, self._httpd.socket = ssl.wrap_socket(
cert_reqs=ssl.CERT_REQUIRED, self._httpd.socket,
ssl_version=ssl.PROTOCOL_TLSv1_2, keyfile=server_key,
ciphers='ECDHE-ECDSA-AES256-GCM-SHA384') certfile=server_cert,
httpd.serve_forever() server_side=True,
cert_reqs=ssl.CERT_REQUIRED,
ssl_version=ssl.PROTOCOL_TLSv1_2,
ciphers='ECDHE-ECDSA-AES256-GCM-SHA384')
def Serve(self):
self._httpd.serve_forever()
def main():
server = CertServer(
FLAGS.listen_host,
FLAGS.listen_port,
FLAGS.server_key,
FLAGS.server_cert)
server.Serve()
if __name__ == '__main__':
main()