コード例 #1
0
ファイル: proxy.py プロジェクト: netbsd8/doh-proxy
def main():
    args = parse_args()
    logger = utils.configure_logger('doh-proxy', args.level)
    ssl_ctx = utils.create_ssl_context(args, http2=True)
    loop = asyncio.get_event_loop()
    for addr in args.listen_address:
        coro = loop.create_server(
            lambda: H2Protocol(upstream_resolver=args.upstream_resolver,
                               upstream_port=args.upstream_port,
                               uri=args.uri,
                               logger=logger,
                               debug=args.debug),
            host=addr,
            port=args.port,
            ssl=ssl_ctx)
        server = loop.run_until_complete(coro)

        # Serve requests until Ctrl+C is pressed
        logger.info('Serving on {}'.format(server))
    try:
        loop.run_forever()
    except KeyboardInterrupt:
        pass

    # Close the server
    server.close()
    loop.run_until_complete(server.wait_closed())
    loop.close()
コード例 #2
0
def setup_ssl(parser: ArgumentParser, options: Namespace):
    """ Setup the SSL Context """
    ssl_context = None

    # If SSL is wanted, both certfile and keyfile must
    # be passed
    if bool(options.certfile) ^ bool(options.keyfile):
        parser.error("To use SSL both --certfile and --keyfile must be passed")
    elif options.certfile and options.keyfile:
        ssl_context = utils.create_ssl_context(options)

    return ssl_context
コード例 #3
0
ファイル: test_utils.py プロジェクト: shahbazn/doh-proxy
 def test_proxy_ssl_context_http2_enabled(self):
     """ Test a ssl context with http2 enabled """
     ssl_context = utils.create_ssl_context(self.args, http2=True)
     self.assertIsInstance(ssl_context, ssl.SSLContext)
     # enable http2
     self.assertEqual(ssl_context.set_alpn_protocols.called, 1)
コード例 #4
0
ファイル: test_utils.py プロジェクト: shahbazn/doh-proxy
 def test_proxy_ssl_context(self):
     """ Test a default ssl context, it should have http2 disabled """
     ssl_context = utils.create_ssl_context(self.args)
     self.assertIsInstance(ssl_context, ssl.SSLContext)
     # don't enable http2
     self.assertEqual(ssl_context.set_alpn_protocols.called, 0)