|
|
|
@ -411,26 +411,24 @@ def setup(config_options): |
|
|
|
|
|
|
|
|
|
return provision |
|
|
|
|
|
|
|
|
|
@defer.inlineCallbacks |
|
|
|
|
def reprovision_acme(): |
|
|
|
|
async def reprovision_acme(): |
|
|
|
|
""" |
|
|
|
|
Provision a certificate from ACME, if required, and reload the TLS |
|
|
|
|
certificate if it's renewed. |
|
|
|
|
""" |
|
|
|
|
reprovisioned = yield defer.ensureDeferred(do_acme()) |
|
|
|
|
reprovisioned = await do_acme() |
|
|
|
|
if reprovisioned: |
|
|
|
|
_base.refresh_certificate(hs) |
|
|
|
|
|
|
|
|
|
@defer.inlineCallbacks |
|
|
|
|
def start(): |
|
|
|
|
async def start(): |
|
|
|
|
try: |
|
|
|
|
# Run the ACME provisioning code, if it's enabled. |
|
|
|
|
if hs.config.acme_enabled: |
|
|
|
|
acme = hs.get_acme_handler() |
|
|
|
|
# Start up the webservices which we will respond to ACME |
|
|
|
|
# challenges with, and then provision. |
|
|
|
|
yield defer.ensureDeferred(acme.start_listening()) |
|
|
|
|
yield defer.ensureDeferred(do_acme()) |
|
|
|
|
await acme.start_listening() |
|
|
|
|
await do_acme() |
|
|
|
|
|
|
|
|
|
# Check if it needs to be reprovisioned every day. |
|
|
|
|
hs.get_clock().looping_call(reprovision_acme, 24 * 60 * 60 * 1000) |
|
|
|
@ -439,8 +437,8 @@ def setup(config_options): |
|
|
|
|
if hs.config.oidc_enabled: |
|
|
|
|
oidc = hs.get_oidc_handler() |
|
|
|
|
# Loading the provider metadata also ensures the provider config is valid. |
|
|
|
|
yield defer.ensureDeferred(oidc.load_metadata()) |
|
|
|
|
yield defer.ensureDeferred(oidc.load_jwks()) |
|
|
|
|
await oidc.load_metadata() |
|
|
|
|
await oidc.load_jwks() |
|
|
|
|
|
|
|
|
|
_base.start(hs, config.listeners) |
|
|
|
|
|
|
|
|
@ -456,7 +454,7 @@ def setup(config_options): |
|
|
|
|
reactor.stop() |
|
|
|
|
sys.exit(1) |
|
|
|
|
|
|
|
|
|
reactor.callWhenRunning(start) |
|
|
|
|
reactor.callWhenRunning(lambda: defer.ensureDeferred(start())) |
|
|
|
|
|
|
|
|
|
return hs |
|
|
|
|
|
|
|
|
|