Spaces:
Sleeping
Sleeping
Richard commited on
Commit ·
b6d41bf
1
Parent(s): 2994705
Add runner token check
Browse files- README.md +3 -1
- wsgi_app.py +9 -1
README.md
CHANGED
|
@@ -22,5 +22,7 @@ It can be started using these commands:
|
|
| 22 |
```shell
|
| 23 |
docker stop mesop-app-runner;
|
| 24 |
docker rm mesop-app;
|
| 25 |
-
docker build -t mesop-app-runner . && docker run --name mesop-app-runner
|
|
|
|
|
|
|
| 26 |
```
|
|
|
|
| 22 |
```shell
|
| 23 |
docker stop mesop-app-runner;
|
| 24 |
docker rm mesop-app;
|
| 25 |
+
docker build -t mesop-app-runner . && docker run --name mesop-app-runner \
|
| 26 |
+
-e MESOP_APP_RUNNER_TOKEN=your-secret-token \
|
| 27 |
+
-d -p 8080:8080 mesop-app-runner;
|
| 28 |
```
|
wsgi_app.py
CHANGED
|
@@ -2,6 +2,7 @@ import base64
|
|
| 2 |
import os
|
| 3 |
import secrets
|
| 4 |
import sys
|
|
|
|
| 5 |
import traceback
|
| 6 |
from dataclasses import dataclass, field
|
| 7 |
from datetime import datetime, timedelta
|
|
@@ -24,6 +25,11 @@ from mesop.server.static_file_serving import configure_static_file_serving
|
|
| 24 |
PAGE_EXPIRATION_MINUTES = 10
|
| 25 |
MAIN_MODULE = "main"
|
| 26 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 27 |
|
| 28 |
@dataclass(frozen=True)
|
| 29 |
class RegisteredModule:
|
|
@@ -60,6 +66,9 @@ def create_app(prod_mode: bool, run_block: Callable[..., None] | None = None) ->
|
|
| 60 |
def exec_route():
|
| 61 |
global registered_modules
|
| 62 |
|
|
|
|
|
|
|
|
|
|
| 63 |
param = request.form.get("code")
|
| 64 |
new_module = RegisteredModule()
|
| 65 |
if param is None:
|
|
@@ -84,7 +93,6 @@ def create_app(prod_mode: bool, run_block: Callable[..., None] | None = None) ->
|
|
| 84 |
# Clean up old registered paths (except main)
|
| 85 |
registered_modules_to_delete = set()
|
| 86 |
for registered_module in registered_modules:
|
| 87 |
-
current_registered_module = registered_module
|
| 88 |
if (
|
| 89 |
registered_module.name != MAIN_MODULE
|
| 90 |
and registered_module.created_at
|
|
|
|
| 2 |
import os
|
| 3 |
import secrets
|
| 4 |
import sys
|
| 5 |
+
import logging
|
| 6 |
import traceback
|
| 7 |
from dataclasses import dataclass, field
|
| 8 |
from datetime import datetime, timedelta
|
|
|
|
| 25 |
PAGE_EXPIRATION_MINUTES = 10
|
| 26 |
MAIN_MODULE = "main"
|
| 27 |
|
| 28 |
+
RUNNER_TOKEN = os.getenv("MESOP_APP_RUNNER_TOKEN")
|
| 29 |
+
if not RUNNER_TOKEN:
|
| 30 |
+
logging.fatal("`MESOP_APP_RUNNER_TOKEN` environment variable neeeds to be specified.")
|
| 31 |
+
sys.exit()
|
| 32 |
+
|
| 33 |
|
| 34 |
@dataclass(frozen=True)
|
| 35 |
class RegisteredModule:
|
|
|
|
| 66 |
def exec_route():
|
| 67 |
global registered_modules
|
| 68 |
|
| 69 |
+
if request.form.get("token", "") != RUNNER_TOKEN:
|
| 70 |
+
return "Tokens do not match.", 400
|
| 71 |
+
|
| 72 |
param = request.form.get("code")
|
| 73 |
new_module = RegisteredModule()
|
| 74 |
if param is None:
|
|
|
|
| 93 |
# Clean up old registered paths (except main)
|
| 94 |
registered_modules_to_delete = set()
|
| 95 |
for registered_module in registered_modules:
|
|
|
|
| 96 |
if (
|
| 97 |
registered_module.name != MAIN_MODULE
|
| 98 |
and registered_module.created_at
|