Richard commited on
Commit
b6d41bf
·
1 Parent(s): 2994705

Add runner token check

Browse files
Files changed (2) hide show
  1. README.md +3 -1
  2. 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 -d -p 8080:8080 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