Refactor is_safe_name and read_app_info functions for improved readability
Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
parent
ce60fc8f5c
commit
3b48f38d89
1 changed files with 18 additions and 18 deletions
36
panel-api.py
36
panel-api.py
|
|
@ -407,30 +407,30 @@ INDEX_HTML = """<!doctype html>
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
def is_safe_name(name):
|
def is_safe_name(name):
|
||||||
return re.match(r"^[a-z0-9]([a-z0-9-]*[a-z0-9])?$", name) is not None
|
return re.match(r"^[a-z0-9]([a-z0-9-]*[a-z0-9])?$", name) is not None
|
||||||
|
|
||||||
|
|
||||||
def read_app_info(name):
|
def read_app_info(name):
|
||||||
if not is_safe_name(name):
|
if not is_safe_name(name):
|
||||||
return None, {"ok": False, "error": "invalid app name"}
|
return None, {"ok": False, "error": "invalid app name"}
|
||||||
|
|
||||||
result = run_panelctl(["show", name])
|
result = run_panelctl(["show", name])
|
||||||
if not result["ok"]:
|
if not result["ok"]:
|
||||||
return None, result
|
return None, result
|
||||||
|
|
||||||
app = parse_env_blob(result["stdout"])
|
app = parse_env_blob(result["stdout"])
|
||||||
compose_file = app.get("APP_COMPOSE_FILE", "")
|
compose_file = app.get("APP_COMPOSE_FILE", "")
|
||||||
if not compose_file:
|
if not compose_file:
|
||||||
return None, {"ok": False, "error": "missing APP_COMPOSE_FILE in manifest"}
|
return None, {"ok": False, "error": "missing APP_COMPOSE_FILE in manifest"}
|
||||||
|
|
||||||
base_stacks = os.path.join(BASE_DIR, "stacks") + os.sep
|
base_stacks = os.path.join(BASE_DIR, "stacks") + os.sep
|
||||||
norm_compose = os.path.abspath(compose_file)
|
norm_compose = os.path.abspath(compose_file)
|
||||||
if not norm_compose.startswith(base_stacks):
|
if not norm_compose.startswith(base_stacks):
|
||||||
return None, {"ok": False, "error": "compose path is outside allowed base directory"}
|
return None, {"ok": False, "error": "compose path is outside allowed base directory"}
|
||||||
|
|
||||||
app["APP_COMPOSE_FILE"] = norm_compose
|
app["APP_COMPOSE_FILE"] = norm_compose
|
||||||
return app, None
|
return app, None
|
||||||
|
|
||||||
|
|
||||||
def run_panelctl(args):
|
def run_panelctl(args):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue