Add env var to override index.html file location.
Change-Id: Ib4bad82aefa5c2dea56d2f882105cbe9883f9ae4
diff --git a/edgetpuvision/streaming/server.py b/edgetpuvision/streaming/server.py
index ff11517..cd0c2d2 100644
--- a/edgetpuvision/streaming/server.py
+++ b/edgetpuvision/streaming/server.py
@@ -78,23 +78,30 @@
else:
return 'application/octet-stream'
-def _read_asset(path):
+BASE_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), 'assets'))
+
+def _asset_path(path):
if path == '/':
- path = 'index.html'
+ value = os.environ.get('SERVER_INDEX_HTML')
+ if value is not None:
+ return value
+ path = 'index.html'
elif path[0] == '/':
path = path[1:]
- base_path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'assets'))
- asset_path = os.path.abspath(os.path.join(base_path, path))
+ asset_path = os.path.abspath(os.path.join(BASE_PATH, path))
+ if os.path.commonpath((BASE_PATH, asset_path)) != BASE_PATH:
+ return None
- if os.path.commonpath((base_path, asset_path)) != base_path:
- return None, None
+ return asset_path
- try:
- with open(asset_path, 'rb') as f:
- return f.read(), _file_content_type(path)
- except Exception:
- return None, None
+def _read_asset(path):
+ asset_path = _asset_path(path)
+ if asset_path is not None:
+ with contextlib.suppress(Exception):
+ with open(asset_path, 'rb') as f:
+ return f.read(), _file_content_type(asset_path)
+ return None, None
class HTTPRequest(BaseHTTPRequestHandler):