fix
This commit is contained in:
+30
-3
@@ -1,9 +1,36 @@
|
||||
DEPLOY_SCRIPT = "/tools/deploy-app.sh"
|
||||
|
||||
# Holé názvy shell skriptů, které smí Portál zařadit jako Worker run_script job.
|
||||
# Worker přijímá v poli script_name jen HOLÝ název bez cesty (adresář scripts/ si doplní sám)
|
||||
# a cokoli s cestou ("scripts/...", "../...", absolutní cesta) odmítne hláškou
|
||||
# "Invalid script name". Stejné pravidlo má i portál sám v
|
||||
# app/routes/scheduled_scripts.validate_script_name. Tuto množinu validujeme i tady, ať
|
||||
# nezaložíme job, který Worker stejně zahodí (přesně na tom padal job 221).
|
||||
ALLOWED_WORKER_SCRIPTS = {
|
||||
"deploy-app.sh",
|
||||
"delete-app.sh",
|
||||
"deploy-core-service.sh",
|
||||
"generate-caddyfile.sh",
|
||||
"redeploy-enabled-apps.sh",
|
||||
"backup-appfactory.sh",
|
||||
}
|
||||
|
||||
# Mazání aplikace NEPROVÁDÍ portál přímo – běží bez práv k workspace, takže rm padá na
|
||||
# "Permission denied". Portál jen zařadí run_script job a Worker spustí tento skript
|
||||
# v appfactory-tools s právy serveru. Prefix "scripts/" je povinný, jinak ho worker hledá
|
||||
# ve špatné složce (stejná konvence jako app/routes/runtime.py).
|
||||
DELETE_APP_SCRIPT_NAME = "scripts/delete-app.sh"
|
||||
# v appfactory-tools/scripts/ s právy serveru.
|
||||
# POZOR: holý název, NE "scripts/delete-app.sh" – cesta v názvu = "Invalid script name".
|
||||
DELETE_APP_SCRIPT_NAME = "delete-app.sh"
|
||||
|
||||
|
||||
def is_allowed_worker_script(script_name: str) -> bool:
|
||||
"""True jen pro holý, povolený název skriptu pro Worker run_script job.
|
||||
Odmítne prázdný název, název nekončící .sh, název s cestou ("/", "\\", "..") i název
|
||||
mimo allowlist – tedy přesně případy, na které Worker hlásí "Invalid script name"."""
|
||||
if not script_name or not script_name.endswith(".sh"):
|
||||
return False
|
||||
if "/" in script_name or "\\" in script_name or ".." in script_name:
|
||||
return False
|
||||
return script_name in ALLOWED_WORKER_SCRIPTS
|
||||
BACKUP_SCRIPT = "/tools/backup-appfactory.sh"
|
||||
RESTORE_SCRIPT = "/tools/restore-appfactory.sh"
|
||||
GENERATE_COMPOSE_SCRIPT = "/tools/generate-apps-compose.sh"
|
||||
|
||||
Reference in New Issue
Block a user