Added SSL support and ability to change bind host and port.
This commit is contained in:
+18
-4
@@ -23,6 +23,7 @@ import io
|
|||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import shlex
|
import shlex
|
||||||
|
import ssl
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from aiohttp import web, StreamReader
|
from aiohttp import web, StreamReader
|
||||||
@@ -333,11 +334,18 @@ async def start_background_tasks(app):
|
|||||||
app["debug_tasks"] = loop.create_task(run_init_script(app, app["scripts"]))
|
app["debug_tasks"] = loop.create_task(run_init_script(app, app["scripts"]))
|
||||||
|
|
||||||
|
|
||||||
async def start_kapow_server(scripts):
|
async def start_kapow_server(bind, scripts, certfile=None, keyfile=None):
|
||||||
user_app = web.Application(client_max_size=1024**3)
|
user_app = web.Application(client_max_size=1024**3)
|
||||||
user_runner = web.AppRunner(user_app)
|
user_runner = web.AppRunner(user_app)
|
||||||
await user_runner.setup()
|
await user_runner.setup()
|
||||||
user_site = web.TCPSite(user_runner, '0.0.0.0', 8080)
|
|
||||||
|
ssl_context = None
|
||||||
|
if certfile and keyfile:
|
||||||
|
ssl_context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
|
||||||
|
ssl_context.load_cert_chain(certfile, keyfile)
|
||||||
|
|
||||||
|
ip, port = bind.split(':')
|
||||||
|
user_site = web.TCPSite(user_runner, ip, int(port), ssl_context=ssl_context)
|
||||||
await user_site.start()
|
await user_site.start()
|
||||||
|
|
||||||
control_app = web.Application(client_max_size=1024**3)
|
control_app = web.Application(client_max_size=1024**3)
|
||||||
@@ -375,9 +383,15 @@ def kapow(ctx):
|
|||||||
|
|
||||||
|
|
||||||
@kapow.command()
|
@kapow.command()
|
||||||
|
@click.option("--certfile", default=None)
|
||||||
|
@click.option("--keyfile", default=None)
|
||||||
|
@click.option("--bind", default="0.0.0.0:8080")
|
||||||
@click.argument("scripts", nargs=-1)
|
@click.argument("scripts", nargs=-1)
|
||||||
def server(scripts):
|
def server(certfile, keyfile, bind, scripts):
|
||||||
loop.run_until_complete(start_kapow_server(scripts))
|
if bool(certfile) ^ bool(keyfile):
|
||||||
|
print("For SSL both 'certfile' and 'keyfile' should be provided.")
|
||||||
|
sys.exit(1)
|
||||||
|
loop.run_until_complete(start_kapow_server(bind, scripts, certfile, keyfile))
|
||||||
loop.run_forever()
|
loop.run_forever()
|
||||||
|
|
||||||
@kapow.group()
|
@kapow.group()
|
||||||
|
|||||||
Reference in New Issue
Block a user