import logging import os from fastapi import FastAPI from starlette.middleware.authentication import AuthenticationMiddleware from starlette.routing import Host, Route, WebSocketRoute, Mount from authentication.backend import BearerTokenAuthBackend from authentication.endpoints import authentication, oauth from management.endpoints import management from proxy import app as proxy_app from ttun_server.endpoints import health from ttun_server.websockets import tunnel logging.basicConfig(level=getattr(logging, os.environ.get('LOG_LEVEL', 'INFO'))) app = FastAPI( debug=True, routes=[ Mount('/management/', app=management), Mount('/auth/', app=authentication), Mount('/oauth/', app=oauth), WebSocketRoute( '/tunnel/', endpoint=tunnel, ), Route('/health/', endpoint=health), Host(f'{{subdomain}}.{os.environ['TUNNEL_DOMAIN']}', app=proxy_app) ], ) app.add_middleware(AuthenticationMiddleware, backend=BearerTokenAuthBackend()) try: from ._version import version __version__ = version except ImportError: __version__ = 'development'