import subprocess from os import path import time import re class Teamspeak: """Manage a Docker backed Teamspeak server""" def start(self): """Starts a Teamspeak Server with docker-compose""" show_creds = False if path.exists(path.join(path.dirname(__file__), "ts3_data")) else True subprocess.run("docker-compose up -d", shell=True, cwd=path.dirname(__file__)) if show_creds: logs = subprocess.check_output("docker-compose logs", shell=True, cwd=path.dirname(__file__)).decode("UTF-8") while re.search(r"token", logs) is None: time.sleep(2) logs = subprocess.check_output("docker-compose logs", shell=True, cwd=path.dirname(__file__)).decode("UTF-8") print("Server Query Admin Account: " + re.search(r"loginname=.*", logs).group(0)) print("Server Admin Token: " + re.search(r"token=(.*)", logs).group(1)) def stop(self): """Stops the Teamspeak Server with docker-compose""" subprocess.run("docker-compose down -v", shell=True, cwd=path.dirname(__file__)) def pack_data(self, name="ts3_data.tar.gz"): """Pack all user data of the server started with this script as tar file""" subprocess.run(f"tar -zcvf {name} ts3_data", shell=True, cwd=path.dirname(__file__)) def show_logs(self): """show the logs of the running Teamspeak server""" subprocess.run("docker-compose logs", shell=True, cwd=path.dirname(__file__))