From 938cdb45a3a807b34bc8117f308218ab7fa817cf Mon Sep 17 00:00:00 2001 From: drunkendog Date: Fri, 25 Aug 2023 19:51:03 +0100 Subject: [PATCH] Modify relaunch-docker, restrict directories from having .. in name Strip newlines in relaunch-docker, add shebang and make relaunch-docker executable --- scripts/setup-generator.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/scripts/setup-generator.py b/scripts/setup-generator.py index deef2b4..e7a43c1 100644 --- a/scripts/setup-generator.py +++ b/scripts/setup-generator.py @@ -1,4 +1,7 @@ -import glob, importlib, sys +import glob +import importlib +import sys +import subprocess with open("setup-template.py", "r") as f: setup_template = f.read() @@ -9,6 +12,9 @@ if len(sys.argv) >= 2: directories = sys.argv[1:] for directory in directories: + if ".." in directory: + raise OSError("Illegal directory path") + if not glob.glob(f"{directory}/manifest.dat"): continue @@ -26,10 +32,12 @@ for directory in directories: if replacement[0] == "#service": with open(f"{directory}/relaunch-docker.sh", "w") as f: - f.write(f"docker pull $(docker inspect {replacement[1]} | jq -r '.[0].Config.Image')\n") - f.write(f"docker stop {replacement[1]}\n") - f.write(f"docker rm {replacement[1]}\n") + f.write("#!/bin/sh\n") + f.write(f"docker pull $(docker inspect {replacement[1].strip()} | jq -r '.[0].Config.Image')\n") + f.write(f"docker stop {replacement[1].strip()}\n") + f.write(f"docker rm {replacement[1].strip()}\n") f.write(f"sh launch-docker.sh\n") + subprocess.run(["chmod", "+x", f"{directory}/relaunch-docker.sh"]) if glob.glob(f"{directory}/parser.py"): should_continue = input(f"Custom instructions found in {directory}, continue? (Y/N) ")