Files

92 lines
3.4 KiB
Python

import time
from dockerHandler import DockerHandler
from nginxHandler import NginxHandler
from minecraftServerHandler import MinecraftServerHandler
from requestHandler import RequestHandler
import logging
from FakeMCServer.fake_mc_server import FakeMCServer
import threading
logging.basicConfig(level=logging.INFO)
def init_placeholder_servers():
sleeping = FakeMCServer(port=20000, motd={
"1": "sleeping!", "2": "§aCheck example.com for more information!"})
starting = FakeMCServer(port=20001, motd={
"1": "starting!", "2": "§aCheck example.com for more information!"})
# Create threads for each server initialization
sleeping_thread = threading.Thread(target=sleeping.start_server)
starting_thread = threading.Thread(target=starting.start_server)
# Start the threads
sleeping_thread.start()
starting_thread.start()
def initialize_docker_handler() -> DockerHandler:
logging.info('[INIT] initializing docker handler...')
docker_handler: DockerHandler = DockerHandler('unix://var/run/docker.sock')
logging.info('[INIT] docker handler initialized')
return docker_handler
def initialize_nginx_handler() -> NginxHandler:
logging.info('[INIT] initializing nginx handler...')
nginx_handler: NginxHandler = NginxHandler('/etc/nginx/nginx.conf')
return nginx_handler
def initialize_minecraft_server_handler(docker_handler, nginx_handler) -> MinecraftServerHandler:
logging.info('[INIT] initializing minecraft server handler...')
minecraft_server_handler: MinecraftServerHandler = MinecraftServerHandler(
docker_handler, nginx_handler)
# Find all Minecraft servers and add them to the MinecraftServerHandler instance
for service_name in docker_handler.get_port_map().values():
minecraft_server_handler.add_server(service_name)
logging.info('[INIT] minecraft server handler initialized')
return minecraft_server_handler
def initialize_request_handlers(docker_handler, minecraft_server_handler):
logging.info('[INIT] initializing request handlers...')
# Create a RequestHandler instance for each port
for port in docker_handler.get_port_map().keys():
logging.info(f'[INIT] creating request handler for port {port}')
request_handler: RequestHandler = RequestHandler(
int(port), docker_handler, minecraft_server_handler)
request_handler.start()
logging.info('[INIT] request handlers initialized')
def main() -> None:
try:
logging.info('[INIT] initializing placeholder servers...')
init_placeholder_servers()
logging.info('[INIT] placeholder servers initialized')
docker_handler = initialize_docker_handler()
nginx_handler = initialize_nginx_handler()
minecraft_server_handler = initialize_minecraft_server_handler(
docker_handler, nginx_handler)
nginx_handler.update_config_file(
docker_handler, minecraft_server_handler.active_service_name)
logging.info('[INIT] wait 20 seconds before stopping all servers...')
time.sleep(20)
minecraft_server_handler.stop_all_servers()
initialize_request_handlers(docker_handler, minecraft_server_handler)
except Exception as e:
logging.error(f'An error occurred: {e}')
if __name__ == "__main__":
main()