From 3ae0a4ab35e5697b1b46b850216baf86421d3e9e Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Fri, 20 Mar 2020 18:03:34 +0100 Subject: [PATCH 1/4] Add teamspeak docker compose file --- modules/teamspeak/docker-compose.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 modules/teamspeak/docker-compose.yml 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 From 35f70ad3b63d2d4b6c51bcac460a05253f65f7dd Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Sat, 21 Mar 2020 22:28:44 +0100 Subject: [PATCH 2/4] Add your_system_information to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) 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 From 14c58905b8514049b7e222a5f2dd39fc87300d73 Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Sat, 21 Mar 2020 22:29:07 +0100 Subject: [PATCH 3/4] Implement Teamspeak module --- main.py | 4 +++- modules/teamspeak/.gitignore | 3 +++ modules/teamspeak/Teamspeak.py | 30 ++++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 modules/teamspeak/.gitignore create mode 100644 modules/teamspeak/Teamspeak.py 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..63d1863 --- /dev/null +++ b/modules/teamspeak/Teamspeak.py @@ -0,0 +1,30 @@ +import subprocess +from os import path +import time +import re + + +class Teamspeak: + + 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): + subprocess.run("docker-compose logs", shell=True, cwd=path.dirname(__file__)) From 46491d39843d68aa9b7a38dea2bf80b269be9d1d Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Sat, 21 Mar 2020 22:51:22 +0100 Subject: [PATCH 4/4] Add documentation for class and show_logs --- modules/teamspeak/Teamspeak.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/teamspeak/Teamspeak.py b/modules/teamspeak/Teamspeak.py index 63d1863..294bb2c 100644 --- a/modules/teamspeak/Teamspeak.py +++ b/modules/teamspeak/Teamspeak.py @@ -5,6 +5,7 @@ import re class Teamspeak: + """Manage a Docker backed Teamspeak server""" def start(self): """Starts a Teamspeak Server with docker-compose""" @@ -27,4 +28,5 @@ class Teamspeak: 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__))