Skip to content

Commit

Permalink
feat: dependencies update
Browse files Browse the repository at this point in the history
  • Loading branch information
KiraLT committed Dec 27, 2022
1 parent 32f1e2a commit 56c67e5
Show file tree
Hide file tree
Showing 5 changed files with 614 additions and 706 deletions.
6 changes: 6 additions & 0 deletions .github/workflows/create-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,12 @@ jobs:
- name: Install dependencies
run: poetry install

- name: Run tests
run: poetry run task test

- name: Run build tests
run: poetry run task test-build

- name: Semantic Release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand Down
60 changes: 34 additions & 26 deletions app/handler.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#!/usr/bin/env python3

import shutil
from certbot._internal.plugins import disco as plugins_disco

from app.settings import load_settings
from app.services.certbot import obtain_certbot_certs
Expand All @@ -10,32 +11,39 @@
def handler(_event, _context):
settings = load_settings()

try:
shutil.rmtree(str(settings.CERTBOT_DIR), ignore_errors=True)

# Load secret names early to check if aws client is configured correctly
secret_names = list_secret_names()

certs = obtain_certbot_certs(
emails=settings.CERTBOT_EMAILS,
domains=settings.CERTBOT_DOMAINS,
dns_plugin=settings.CERTBOT_DNS_PLUGIN,
certbot_dir=settings.CERTBOT_DIR,
certbot_server=settings.CERTBOT_SERVER,
preferred_chain=settings.CERTBOT_PREFERRED_CHAIN,
extra_args=settings.CERTBOT_EXTRA_ARGS,
credentials=settings.CERTBOT_CREDENTIALS,
propagation_seconds=settings.CERTBOT_PROPAGATION_SECONDS,
)

upload_certs_as_secrets(
certs,
name=settings.AWS_SECRET_NAME,
secret_names=secret_names,
description=settings.AWS_SECRET_DESCRIPTION,
)
finally:
shutil.rmtree(str(settings.CERTBOT_DIR), ignore_errors=True)
if settings.TESTMODE:
plugins = list(plugins_disco.PluginsRegistry.find_all())
dns_plugins = [v for v in plugins if v.startswith('dns-')]

if len(dns_plugins) != 14:
raise Exception('Failed to discover all certbot DNS plugins')
else:
try:
shutil.rmtree(str(settings.CERTBOT_DIR), ignore_errors=True)

# Load secret names early to check if aws client is configured correctly
secret_names = list_secret_names()

certs = obtain_certbot_certs(
emails=settings.CERTBOT_EMAILS,
domains=settings.CERTBOT_DOMAINS,
dns_plugin=settings.CERTBOT_DNS_PLUGIN,
certbot_dir=settings.CERTBOT_DIR,
certbot_server=settings.CERTBOT_SERVER,
preferred_chain=settings.CERTBOT_PREFERRED_CHAIN,
extra_args=settings.CERTBOT_EXTRA_ARGS,
credentials=settings.CERTBOT_CREDENTIALS,
propagation_seconds=settings.CERTBOT_PROPAGATION_SECONDS,
)

upload_certs_as_secrets(
certs,
name=settings.AWS_SECRET_NAME,
secret_names=secret_names,
description=settings.AWS_SECRET_DESCRIPTION,
)
finally:
shutil.rmtree(str(settings.CERTBOT_DIR), ignore_errors=True)

return "Certificates obtained and uploaded successfully."

Expand Down
2 changes: 2 additions & 0 deletions app/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ class Settings:
CERTBOT_EXTRA_ARGS: list[str] = None
CERTBOT_CREDENTIALS: str = None
CERTBOT_PROPAGATION_SECONDS: str = None
TESTMODE: bool = False


def read_env(
Expand Down Expand Up @@ -60,4 +61,5 @@ def load_settings() -> Settings:
CERTBOT_EXTRA_ARGS=read_env("CERTBOT_EXTRA_ARGS", multi=True, delimiter=" "),
CERTBOT_CREDENTIALS=read_env("CERTBOT_CREDENTIALS"),
CERTBOT_PROPAGATION_SECONDS=read_env("CERTBOT_PROPAGATION_SECONDS"),
TESTMODE=read_env('TESTMODE') == 'true'
)

0 comments on commit 56c67e5

Please sign in to comment.