diff --git a/.gitignore b/.gitignore index 5335deb..343ab4d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ __pycache__ .vscode devenv +your_system_information.txt \ No newline at end of file diff --git a/main.py b/main.py index f1ea7ec..0362dc4 100644 --- a/main.py +++ b/main.py @@ -5,13 +5,15 @@ from modules.install.ToolsInstaller import ToolsInstaller from modules.swap.SwapModule import SwapModule from modules.systemupdate.Systemupdate import Systemupdate from modules.vim.VimModule import VimModule +from modules.teamspeak.Teamspeak import Teamspeak modules = { "helloworld": HelloWorld().run, "install": ToolsInstaller, "swap": SwapModule().run, "update": Systemupdate().run, - "vim": VimModule().run + "vim": VimModule().run, + "teamspeak": Teamspeak } fire.Fire(modules) diff --git a/modules/teamspeak/.gitignore b/modules/teamspeak/.gitignore new file mode 100644 index 0000000..fed9262 --- /dev/null +++ b/modules/teamspeak/.gitignore @@ -0,0 +1,3 @@ +ts3_data +*.tar +*.gz \ No newline at end of file diff --git a/modules/teamspeak/Teamspeak.py b/modules/teamspeak/Teamspeak.py new file mode 100644 index 0000000..294bb2c --- /dev/null +++ b/modules/teamspeak/Teamspeak.py @@ -0,0 +1,32 @@ +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__)) diff --git a/modules/teamspeak/docker-compose.yml b/modules/teamspeak/docker-compose.yml new file mode 100644 index 0000000..169b722 --- /dev/null +++ b/modules/teamspeak/docker-compose.yml @@ -0,0 +1,13 @@ +version: '3.7' +services: + teamspeak: + image: teamspeak + restart: always + ports: + - 9987:9987/udp + - 10011:10011 + - 30033:30033 + volumes: + - ./ts3_data:/var/ts3server + environment: + TS3SERVER_LICENSE: accept \ No newline at end of file