2016-04-29 16:45:58 -07:00
|
|
|
#!/usr/bin/python3
|
|
|
|
|
|
|
|
|
|
import argparse
|
2016-05-03 13:38:58 -07:00
|
|
|
from gevent import pywsgi
|
2016-04-29 16:45:58 -07:00
|
|
|
import ssl
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
parser = argparse.ArgumentParser(description='iconograph https_server')
|
|
|
|
|
parser.add_argument(
|
|
|
|
|
'--ca-cert',
|
|
|
|
|
dest='ca_cert',
|
|
|
|
|
action='store',
|
|
|
|
|
required=True)
|
|
|
|
|
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()
|
|
|
|
|
|
|
|
|
|
|
2016-05-03 14:09:45 -07:00
|
|
|
class ImageRequestHandler(object):
|
|
|
|
|
|
|
|
|
|
def __call__(self, env, start_response):
|
|
|
|
|
print(env['PATH_INFO'])
|
|
|
|
|
start_response('200 OK', [('Content-Type', 'text/plain')])
|
|
|
|
|
return [b'foo']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ImageServer(object):
|
2016-04-29 16:45:58 -07:00
|
|
|
|
|
|
|
|
def __init__(self, listen_host, listen_port, server_key, server_cert, ca_cert):
|
|
|
|
|
|
2016-05-03 14:09:45 -07:00
|
|
|
self._handler = ImageRequestHandler()
|
2016-05-03 13:38:58 -07:00
|
|
|
|
|
|
|
|
self._httpd = pywsgi.WSGIServer(
|
|
|
|
|
(listen_host, listen_port),
|
2016-05-03 14:09:45 -07:00
|
|
|
self._handler,
|
2016-04-29 16:45:58 -07:00
|
|
|
keyfile=server_key,
|
|
|
|
|
certfile=server_cert,
|
|
|
|
|
ca_certs=ca_cert,
|
|
|
|
|
cert_reqs=ssl.CERT_REQUIRED,
|
|
|
|
|
ssl_version=ssl.PROTOCOL_TLSv1_2)
|
|
|
|
|
|
|
|
|
|
def Serve(self):
|
|
|
|
|
self._httpd.serve_forever()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def main():
|
2016-05-03 14:09:45 -07:00
|
|
|
server = ImageServer(
|
2016-04-29 16:45:58 -07:00
|
|
|
FLAGS.listen_host,
|
|
|
|
|
FLAGS.listen_port,
|
|
|
|
|
FLAGS.server_key,
|
|
|
|
|
FLAGS.server_cert,
|
|
|
|
|
FLAGS.ca_cert)
|
|
|
|
|
server.Serve()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
main()
|