mirror of
https://github.com/jopohl/urh.git
synced 2026-03-03 23:14:00 +01:00
48 lines
1.6 KiB
Python
48 lines
1.6 KiB
Python
from urh.util.Logger import logger
|
|
from subprocess import check_output, call
|
|
import os, sys
|
|
|
|
USE_SUDO = True
|
|
SUPPORTED_IMAGES = ("archlinux", "centos7", "debian8", "ubuntu1404", "ubuntu1604", "kali", "gentoo")
|
|
|
|
def is_image_there(imagename: str) -> bool:
|
|
cmd = ["sudo"] if USE_SUDO else []
|
|
cmd.extend(["docker", "images", "-q", "urh/" + imagename])
|
|
return len(check_output(cmd)) > 0
|
|
|
|
def build_image(imagename: str):
|
|
if imagename not in SUPPORTED_IMAGES:
|
|
logger.error("{} is not a supported docker image".format(imagename))
|
|
sys.exit(1)
|
|
|
|
cmd = ["sudo"] if USE_SUDO else []
|
|
cmd.extend(["docker", "build", "--force-rm", "--no-cache", "--tag", "urh/"+imagename, "."])
|
|
|
|
print(" ".join(cmd))
|
|
|
|
script = __file__ if not os.path.islink(__file__) else os.readlink(__file__)
|
|
os.chdir(os.path.realpath(os.path.join(script, "..", imagename)))
|
|
|
|
call(cmd)
|
|
|
|
def run_image(imagename: str, rebuild=False):
|
|
if not is_image_there(imagename) or rebuild:
|
|
build_image(imagename)
|
|
|
|
cmd = ["sudo"] if USE_SUDO else []
|
|
call(cmd + ["xhost", "+"]) # Allow docker to connect to hosts X Server
|
|
|
|
cmd.extend(["docker", "run", "-e", "DISPLAY=$DISPLAY", "-v", "/tmp/.X11-unix:/tmp/.X11-unix", "urh/"+imagename])
|
|
logger.info("call {}".format(" ".join(cmd)))
|
|
rc = call(" ".join(cmd), shell=True)
|
|
return rc == 0
|
|
|
|
def remove_containers():
|
|
logger.info("removing containers")
|
|
cmd = ["sudo"] if USE_SUDO else []
|
|
cmd.extend(["docker", "rm", "-f", "$({}docker ps -aq)".format("sudo " if USE_SUDO else "")])
|
|
call(" ".join(cmd), shell=True)
|
|
|
|
if __name__ == "__main__":
|
|
run_image("archlinux")
|