Merge pull request #5073 from FinnStutzenstein/ws404
Closing websocket connections to unknown urls
This commit is contained in:
commit
2f01e46415
@ -1,13 +1,15 @@
|
|||||||
from channels.routing import ProtocolTypeRouter, URLRouter
|
from channels.routing import ProtocolTypeRouter, URLRouter
|
||||||
from django.conf.urls import url
|
from django.conf.urls import url
|
||||||
|
|
||||||
from openslides.utils.consumers import SiteConsumer
|
from openslides.utils.consumers import CloseConsumer, SiteConsumer
|
||||||
from openslides.utils.middleware import AuthMiddlewareStack
|
from openslides.utils.middleware import AuthMiddlewareStack
|
||||||
|
|
||||||
|
|
||||||
application = ProtocolTypeRouter(
|
application = ProtocolTypeRouter(
|
||||||
{
|
{
|
||||||
# WebSocket chat handler
|
# WebSocket chat handler
|
||||||
"websocket": AuthMiddlewareStack(URLRouter([url(r"^ws/$", SiteConsumer)]))
|
"websocket": AuthMiddlewareStack(
|
||||||
|
URLRouter([url(r"^ws/$", SiteConsumer), url(".*", CloseConsumer)])
|
||||||
|
)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
@ -3,6 +3,8 @@ from collections import defaultdict
|
|||||||
from typing import Any, Dict, List, Optional
|
from typing import Any, Dict, List, Optional
|
||||||
from urllib.parse import parse_qs
|
from urllib.parse import parse_qs
|
||||||
|
|
||||||
|
from channels.generic.websocket import AsyncWebsocketConsumer
|
||||||
|
|
||||||
from ..utils.websocket import WEBSOCKET_CHANGE_ID_TOO_HIGH
|
from ..utils.websocket import WEBSOCKET_CHANGE_ID_TOO_HIGH
|
||||||
from . import logging
|
from . import logging
|
||||||
from .auth import async_anonymous_is_enabled
|
from .auth import async_anonymous_is_enabled
|
||||||
@ -217,3 +219,16 @@ class SiteConsumer(ProtocollAsyncJsonWebsocketConsumer):
|
|||||||
|
|
||||||
content = {"change_id": change_id, "data": data}
|
content = {"change_id": change_id, "data": data}
|
||||||
await self.send_json(type="projector", content=content, in_response=in_response)
|
await self.send_json(type="projector", content=content, in_response=in_response)
|
||||||
|
|
||||||
|
|
||||||
|
class CloseConsumer(AsyncWebsocketConsumer):
|
||||||
|
""" Auto-closes the connection """
|
||||||
|
|
||||||
|
groups: List[str] = []
|
||||||
|
|
||||||
|
def __init__(self, args: Dict[str, Any], **kwargs: Any) -> None:
|
||||||
|
logger.info(f'Closing connection to unknown websocket url {args["path"]}')
|
||||||
|
|
||||||
|
async def connect(self) -> None:
|
||||||
|
await self.accept()
|
||||||
|
await self.close()
|
||||||
|
Loading…
Reference in New Issue
Block a user