import os from importlib import import_module from channels.auth import AuthMiddlewareStack from channels.routing import ProtocolTypeRouter, URLRouter from channels.security.websocket import AllowedHostsOriginValidator, OriginValidator from django.conf import settings from django.core.asgi import get_asgi_application from eusrr_backend.logging_utils import WebSocketLoggingMiddleware os.environ.setdefault("DJANGO_SETTINGS_MODULE", "eusrr_backend.settings") django_asgi_app = get_asgi_application() JWTAuthMiddleware = import_module("eusrr_backend.channels_jwt").JWTAuthMiddleware websocket_urlpatterns = import_module("realtime.routing").websocket_urlpatterns websocket_application = AuthMiddlewareStack( JWTAuthMiddleware(URLRouter(websocket_urlpatterns)) ) if settings.WEBSOCKET_ALLOWED_ORIGINS: websocket_application = OriginValidator( websocket_application, settings.WEBSOCKET_ALLOWED_ORIGINS, ) else: websocket_application = AllowedHostsOriginValidator(websocket_application) application = ProtocolTypeRouter( { "http": django_asgi_app, "websocket": WebSocketLoggingMiddleware(websocket_application), } )