wslink 2.0.4__tar.gz → 2.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. {wslink-2.0.4 → wslink-2.1.0}/PKG-INFO +2 -1
  2. {wslink-2.0.4 → wslink-2.1.0}/README.rst +1 -0
  3. {wslink-2.0.4 → wslink-2.1.0}/setup.cfg +1 -1
  4. {wslink-2.0.4 → wslink-2.1.0}/src/wslink/backends/aiohttp/__init__.py +16 -11
  5. {wslink-2.0.4 → wslink-2.1.0}/src/wslink/protocol.py +1 -0
  6. {wslink-2.0.4 → wslink-2.1.0}/src/wslink.egg-info/PKG-INFO +2 -1
  7. {wslink-2.0.4 → wslink-2.1.0}/MANIFEST.in +0 -0
  8. {wslink-2.0.4 → wslink-2.1.0}/setup.py +0 -0
  9. {wslink-2.0.4 → wslink-2.1.0}/src/wslink/LICENSE +0 -0
  10. {wslink-2.0.4 → wslink-2.1.0}/src/wslink/__init__.py +0 -0
  11. {wslink-2.0.4 → wslink-2.1.0}/src/wslink/backends/__init__.py +0 -0
  12. {wslink-2.0.4 → wslink-2.1.0}/src/wslink/backends/aiohttp/launcher.py +0 -0
  13. {wslink-2.0.4 → wslink-2.1.0}/src/wslink/backends/aiohttp/relay.py +0 -0
  14. {wslink-2.0.4 → wslink-2.1.0}/src/wslink/backends/generic/__init__.py +0 -0
  15. {wslink-2.0.4 → wslink-2.1.0}/src/wslink/backends/generic/core.py +0 -0
  16. {wslink-2.0.4 → wslink-2.1.0}/src/wslink/backends/jupyter/__init__.py +0 -0
  17. {wslink-2.0.4 → wslink-2.1.0}/src/wslink/backends/jupyter/core.py +0 -0
  18. {wslink-2.0.4 → wslink-2.1.0}/src/wslink/backends/tornado/__init__.py +0 -0
  19. {wslink-2.0.4 → wslink-2.1.0}/src/wslink/backends/tornado/core.py +0 -0
  20. {wslink-2.0.4 → wslink-2.1.0}/src/wslink/chunking.py +0 -0
  21. {wslink-2.0.4 → wslink-2.1.0}/src/wslink/launcher.py +0 -0
  22. {wslink-2.0.4 → wslink-2.1.0}/src/wslink/publish.py +0 -0
  23. {wslink-2.0.4 → wslink-2.1.0}/src/wslink/relay.py +0 -0
  24. {wslink-2.0.4 → wslink-2.1.0}/src/wslink/server.py +0 -0
  25. {wslink-2.0.4 → wslink-2.1.0}/src/wslink/ssl_context.py +0 -0
  26. {wslink-2.0.4 → wslink-2.1.0}/src/wslink/uri.py +0 -0
  27. {wslink-2.0.4 → wslink-2.1.0}/src/wslink/websocket.py +0 -0
  28. {wslink-2.0.4 → wslink-2.1.0}/src/wslink.egg-info/SOURCES.txt +0 -0
  29. {wslink-2.0.4 → wslink-2.1.0}/src/wslink.egg-info/dependency_links.txt +0 -0
  30. {wslink-2.0.4 → wslink-2.1.0}/src/wslink.egg-info/requires.txt +0 -0
  31. {wslink-2.0.4 → wslink-2.1.0}/src/wslink.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wslink
3
- Version: 2.0.4
3
+ Version: 2.1.0
4
4
  Summary: Python/JavaScript library for communicating over WebSocket
5
5
  Home-page: https://github.com/kitware/wslink
6
6
  Author: Kitware, Inc.
@@ -65,6 +65,7 @@ Those only apply for the Python server and launcher.
65
65
  * WSLINK_LAUNCHER_DELETE - If set to 1 this will enable the DELETE endpoint for killing a running session
66
66
  * WSLINK_MAX_MSG_SIZE - Number of bytes for a message size (default: 4194304)
67
67
  * WSLINK_HEART_BEAT - Number of seconds between heartbeats (default: 30)
68
+ * WSLINK_HTTP_HEADERS - Path to json file containing HTTP headers to be added
68
69
 
69
70
  License
70
71
  -------
@@ -37,6 +37,7 @@ Those only apply for the Python server and launcher.
37
37
  * WSLINK_LAUNCHER_DELETE - If set to 1 this will enable the DELETE endpoint for killing a running session
38
38
  * WSLINK_MAX_MSG_SIZE - Number of bytes for a message size (default: 4194304)
39
39
  * WSLINK_HEART_BEAT - Number of seconds between heartbeats (default: 30)
40
+ * WSLINK_HTTP_HEADERS - Path to json file containing HTTP headers to be added
40
41
 
41
42
  License
42
43
  -------
@@ -1,5 +1,5 @@
1
1
  [metadata]
2
- version = 2.0.4
2
+ version = 2.1.0
3
3
 
4
4
  [egg_info]
5
5
  tag_build =
@@ -1,8 +1,9 @@
1
- import asyncio
2
1
  import os
3
2
  import logging
4
3
  import sys
5
4
  import uuid
5
+ import json
6
+ from pathlib import Path
6
7
 
7
8
  from wslink.protocol import WslinkHandler, AbstractWebApp
8
9
 
@@ -12,8 +13,13 @@ import aiohttp.web as aiohttp_web
12
13
 
13
14
 
14
15
  # 4MB is the default inside aiohttp
16
+ MSG_OVERHEAD = int(os.environ.get("WSLINK_MSG_OVERHEAD", 4096))
15
17
  MAX_MSG_SIZE = int(os.environ.get("WSLINK_MAX_MSG_SIZE", 4194304))
16
18
  HEART_BEAT = int(os.environ.get("WSLINK_HEART_BEAT", 30)) # 30 seconds
19
+ HTTP_HEADERS: str | None = os.environ.get("WSLINK_HTTP_HEADERS") # path to json file
20
+
21
+ if HTTP_HEADERS and Path(HTTP_HEADERS).exists():
22
+ HTTP_HEADERS: dict = json.loads(Path(HTTP_HEADERS).read_text())
17
23
 
18
24
  logger = logging.getLogger(__name__)
19
25
 
@@ -34,17 +40,13 @@ def _fix_path(path):
34
40
  return path
35
41
 
36
42
 
37
- # -----------------------------------------------------------------------------
38
- # Needed for WASM/sharedArrayBuffer
39
- # => we should find a way to dynamically provided needed header
40
43
  # -----------------------------------------------------------------------------
41
44
  @aiohttp_web.middleware
42
- async def shared_array_buffer_headers(request: aiohttp_web.Request, handler):
45
+ async def http_headers(request: aiohttp_web.Request, handler):
43
46
  response: aiohttp_web.Response = await handler(request)
44
- response.headers.setdefault("Cross-Origin-Opener-Policy", "same-origin")
45
- response.headers.setdefault("Cross-Origin-Embedder-Policy", "require-corp")
46
- response.headers.setdefault("Access-Control-Allow-Origin", "*")
47
- response.headers.setdefault("Cache-Control", "no-store")
47
+ for k, v in HTTP_HEADERS.items():
48
+ response.headers.setdefault(k, v)
49
+
48
50
  return response
49
51
 
50
52
 
@@ -52,7 +54,10 @@ async def shared_array_buffer_headers(request: aiohttp_web.Request, handler):
52
54
  class WebAppServer(AbstractWebApp):
53
55
  def __init__(self, server_config):
54
56
  AbstractWebApp.__init__(self, server_config)
55
- self.set_app(aiohttp_web.Application(middlewares=[shared_array_buffer_headers]))
57
+ if HTTP_HEADERS:
58
+ self.set_app(aiohttp_web.Application(middlewares=[http_headers]))
59
+ else:
60
+ self.set_app(aiohttp_web.Application())
56
61
  self._ws_handlers = []
57
62
  self._site = None
58
63
  self._runner = None
@@ -212,7 +217,7 @@ class AioHttpWsHandler(WslinkHandler):
212
217
  async def handleWsRequest(self, request):
213
218
  client_id = str(uuid.uuid4()).replace("-", "")
214
219
  current_ws = aiohttp_web.WebSocketResponse(
215
- max_msg_size=MAX_MSG_SIZE, heartbeat=HEART_BEAT
220
+ max_msg_size=MSG_OVERHEAD + MAX_MSG_SIZE, heartbeat=HEART_BEAT
216
221
  )
217
222
  self.connections[client_id] = current_ws
218
223
 
@@ -252,6 +252,7 @@ class WslinkHandler(object):
252
252
 
253
253
  async def onMessage(self, is_binary, msg, client_id):
254
254
  if not is_binary:
255
+ logger.critical("wslink is not expecting text message:\n> %s", msg.data)
255
256
  return
256
257
 
257
258
  full_message = self.unchunkers[client_id].process_chunk(msg.data)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wslink
3
- Version: 2.0.4
3
+ Version: 2.1.0
4
4
  Summary: Python/JavaScript library for communicating over WebSocket
5
5
  Home-page: https://github.com/kitware/wslink
6
6
  Author: Kitware, Inc.
@@ -65,6 +65,7 @@ Those only apply for the Python server and launcher.
65
65
  * WSLINK_LAUNCHER_DELETE - If set to 1 this will enable the DELETE endpoint for killing a running session
66
66
  * WSLINK_MAX_MSG_SIZE - Number of bytes for a message size (default: 4194304)
67
67
  * WSLINK_HEART_BEAT - Number of seconds between heartbeats (default: 30)
68
+ * WSLINK_HTTP_HEADERS - Path to json file containing HTTP headers to be added
68
69
 
69
70
  License
70
71
  -------
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes