mirror of
https://github.com/DerTyp7/docker_minecraft_server_auto_starter.git
synced 2025-10-29 12:42:09 +01:00
55 lines
2.3 KiB
Python
55 lines
2.3 KiB
Python
import logging
|
|
from typing import Dict, Optional
|
|
from nginxHandler import NginxHandler
|
|
from dockerHandler import DockerHandler
|
|
from objects.minecraftServer import MinecraftServer
|
|
|
|
|
|
class MinecraftServerHandler:
|
|
def __init__(self, docker_handler: DockerHandler, nginx_handler: NginxHandler):
|
|
logging.info(
|
|
'[MinecraftServerHandler] initializing minecraft server handler...')
|
|
self.minecraft_servers: Dict[str, MinecraftServer] = {}
|
|
self.docker_handler: DockerHandler = docker_handler
|
|
self.nginx_handler: NginxHandler = nginx_handler
|
|
|
|
self.active_service_name: str = ""
|
|
logging.info(
|
|
'[MinecraftServerHandler] minecraft server handler initialized')
|
|
|
|
def add_server(self, service_name: str) -> None:
|
|
logging.info(
|
|
f'[MinecraftServerHandler] adding server {service_name}')
|
|
self.minecraft_servers[service_name] = MinecraftServer(
|
|
self.docker_handler, service_name)
|
|
logging.info(
|
|
f'[MinecraftServerHandler] added server {service_name}')
|
|
|
|
def get_server(self, service_name: str) -> MinecraftServer | None:
|
|
logging.info(f'[MinecraftServerHandler] getting server {service_name}')
|
|
return self.minecraft_servers.get(service_name)
|
|
|
|
def stop_all_servers(self, exclude_service_name: Optional[str] = None) -> None:
|
|
logging.info(f'[MinecraftServerHandler] stopping all servers')
|
|
for service_name, server in self.minecraft_servers.items():
|
|
logging.info(
|
|
f'[MinecraftServerHandler] stopping server {service_name}')
|
|
server.stop()
|
|
|
|
def start_server(self, service_name: str) -> None:
|
|
logging.info(
|
|
f'[MinecraftServerHandler] starting server {service_name}')
|
|
self.stop_all_servers()
|
|
server = self.get_server(service_name)
|
|
if server:
|
|
server.start()
|
|
logging.info(
|
|
f'[MinecraftServerHandler] started server {service_name}')
|
|
self.active_service_name = service_name
|
|
self.nginx_handler.update_config_file(
|
|
self.docker_handler, self.active_service_name)
|
|
self.nginx_handler.print_config()
|
|
else:
|
|
logging.info(
|
|
f'[MinecraftServerHandler] No server found with service name {service_name}')
|