37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
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),
|
|
}
|
|
)
|