diff options
Diffstat (limited to 'ttun_server')
| -rw-r--r-- | ttun_server/__init__.py | 14 | ||||
| -rw-r--r-- | ttun_server/endpoints.py | 8 |
2 files changed, 19 insertions, 3 deletions
diff --git a/ttun_server/__init__.py b/ttun_server/__init__.py index cf589cc..85cdc7d 100644 --- a/ttun_server/__init__.py +++ b/ttun_server/__init__.py | |||
| @@ -2,16 +2,24 @@ import logging | |||
| 2 | import os | 2 | import os |
| 3 | 3 | ||
| 4 | from starlette.applications import Starlette | 4 | from starlette.applications import Starlette |
| 5 | from starlette.routing import Route, WebSocketRoute | 5 | from starlette.routing import Route, WebSocketRoute, Host, Router |
| 6 | 6 | ||
| 7 | from ttun_server.endpoints import Proxy, Tunnel | 7 | from ttun_server.endpoints import Proxy, Tunnel, Health |
| 8 | 8 | ||
| 9 | logging.basicConfig(level=getattr(logging, os.environ.get('LOG_LEVEL', 'INFO'))) | 9 | logging.basicConfig(level=getattr(logging, os.environ.get('LOG_LEVEL', 'INFO'))) |
| 10 | 10 | ||
| 11 | base_router = Router(routes=[ | ||
| 12 | Route('/health/}', Health), | ||
| 13 | WebSocketRoute('/tunnel/', Tunnel) | ||
| 14 | ]) | ||
| 15 | |||
| 16 | proxy_router = Router(routes=[ | ||
| 17 | ]) | ||
| 18 | |||
| 11 | server = Starlette( | 19 | server = Starlette( |
| 12 | debug=True, | 20 | debug=True, |
| 13 | routes=[ | 21 | routes=[ |
| 22 | Host(os.environ['TUNNEL_DOMAIN'], base_router, 'base'), | ||
| 14 | Route('/{path:path}', Proxy), | 23 | Route('/{path:path}', Proxy), |
| 15 | WebSocketRoute('/tunnel/', Tunnel) | ||
| 16 | ] | 24 | ] |
| 17 | ) | 25 | ) |
diff --git a/ttun_server/endpoints.py b/ttun_server/endpoints.py index 5b9e57f..b62313c 100644 --- a/ttun_server/endpoints.py +++ b/ttun_server/endpoints.py | |||
| @@ -48,6 +48,14 @@ class Proxy(HTTPEndpoint): | |||
| 48 | await response(self.scope, self.receive, self.send) | 48 | await response(self.scope, self.receive, self.send) |
| 49 | 49 | ||
| 50 | 50 | ||
| 51 | class Health(HTTPEndpoint): | ||
| 52 | async def get(self) -> None: | ||
| 53 | response = Response(content='OK', status_code=200) | ||
| 54 | |||
| 55 | await response(self.scope, self.receive, self.send) | ||
| 56 | |||
| 57 | |||
| 58 | |||
| 51 | class Tunnel(WebSocketEndpoint): | 59 | class Tunnel(WebSocketEndpoint): |
| 52 | encoding = 'json' | 60 | encoding = 'json' |
| 53 | 61 | ||
