This repository has been archived on 2024-05-31. You can view files and clone it, but cannot push or open issues or pull requests.
authentik/passbook/providers/proxy/controllers/docker.py

35 lines
1.5 KiB
Python
Raw Normal View History

2020-10-03 22:36:12 +00:00
"""Proxy Provider Docker Contoller"""
from typing import Dict
from urllib.parse import urlparse
2020-10-03 22:36:12 +00:00
from passbook.outposts.controllers.docker import DockerController
from passbook.outposts.models import DockerServiceConnection, Outpost
from passbook.providers.proxy.models import ProxyProvider
2020-10-03 22:36:12 +00:00
class ProxyDockerController(DockerController):
"""Proxy Provider Docker Contoller"""
def __init__(self, outpost: Outpost, connection: DockerServiceConnection):
super().__init__(outpost, connection)
2020-10-03 22:36:12 +00:00
self.deployment_ports = {
"http": 4180,
"https": 4443,
}
def _get_labels(self) -> Dict[str, str]:
hosts = []
for proxy_provider in ProxyProvider.objects.filter(outpost__in=[self.outpost]):
proxy_provider: ProxyProvider
external_host_name = urlparse(proxy_provider.external_host)
2020-10-18 16:46:13 +00:00
hosts.append(f"`{external_host_name}`")
traefik_name = f"pb-outpost-{self.outpost.pk.hex}"
return {
2020-10-18 16:46:13 +00:00
"traefik.enable": "true",
f"traefik.http.routers.{traefik_name}-router.rule": f"Host({','.join(hosts)})",
f"traefik.http.routers.{traefik_name}-router.tls": "true",
f"traefik.http.routers.{traefik_name}-router.service": f"{traefik_name}-service",
f"traefik.http.services.{traefik_name}-service.loadbalancer.healthcheck.path": "/",
f"traefik.http.services.{traefik_name}-service.loadbalancer.server.port": "4180",
}