diff --git a/console.py b/console.py new file mode 100644 index 0000000..a5c876a --- /dev/null +++ b/console.py @@ -0,0 +1,37 @@ +from os import environ +from threading import Lock, Thread +from sseclient import SSEClient +from dotenv import load_dotenv +from requests import post + +load_dotenv() +MCSMGR_ADDRESS = environ.get("MCSMGR_ADDRESS", "http://localhost:8000") +MCSMGR_PASSWORD = environ.get("MCSMGR_PASSWORD", "SuperSecretPassword") +MINECRAFT_SERVER_COMMAND = environ.get( + "MINECRAFT_SERVER_COMMAND", "java -jar fabric.jar nogui") +MINECRAFT_SERVER_ADDRESS = environ.get("MINECRAFT_SERVER_ADDRESS", "localhost") +MINECRAFT_SERVER_RCON_PORT = int( + environ.get("MINECRAFT_SERVER_RCON_PORT", "25575")) +MINECRAFT_SERVER_RCON_PASSWORD = environ.get( + "MINECRAFT_SERVER_RCON_PASSWORD", "SuperSecretPassword") + + +post(MCSMGR_ADDRESS+"/start") + + +def logger(): + for msg in SSEClient(MCSMGR_ADDRESS+"/logs", json={"password": MCSMGR_PASSWORD}): + print(msg.data) + + +t = Thread(target=logger, daemon=True) +t.start() + +try: + while True: + cmd = input() + response = post(MCSMGR_ADDRESS+"/command", json={ + "password": MCSMGR_PASSWORD, "cmd": cmd}) + print(eval(response.text).rstrip("\n")) +except (KeyboardInterrupt, EOFError): + t.join() diff --git a/requirements.txt b/requirements.txt index 8419296..4e59aaa 100644 --- a/requirements.txt +++ b/requirements.txt @@ -20,6 +20,7 @@ requests==2.32.5 setuptools==80.9.0 six==1.17.0 sniffio==1.3.1 +sseclient==0.0.27 starlette==0.47.3 typing-inspection==0.4.1 typing_extensions==4.15.0