from fastapi import FastAPI from pydantic import BaseModel from rcon.battleye import Client import json import os app = FastAPI() # Load credentials credentials_file = 'credentials.json' with open(credentials_file, 'r') as file: credentials = json.load(file) SERVER_ADDRESS = credentials.get('SERVER_ADDRESS', '') SERVER_PORT = credentials.get('SERVER_PORT', 0) RCON_PASSWORD = credentials.get('RCON_PASSWORD', '') class PlayerAction(BaseModel): steamid: str reason: str duration: int @app.get("/players") def list_players(): with Client(SERVER_ADDRESS, SERVER_PORT, passwd=RCON_PASSWORD) as client: response = client.run('players') return {"response": response} @app.post("/kick") def kick_player(action: PlayerAction): with Client(SERVER_ADDRESS, SERVER_PORT, passwd=RCON_PASSWORD) as client: response = client.run(f'kick {action.steamid} {action.reason}') return {"response": response} @app.post("/ban") def ban_player(action: PlayerAction): with Client(SERVER_ADDRESS, SERVER_PORT, passwd=RCON_PASSWORD) as client: response = client.run(f'ban {action.steamid} {action.duration} "{action.reason}"') return {"response": response} @app.post("/unlock") def unlock_server(): with Client(SERVER_ADDRESS, SERVER_PORT, passwd=RCON_PASSWORD) as client: response = client.run('#unlock') return {"response": response} @app.post("/lock") def lock_server(): with Client(SERVER_ADDRESS, SERVER_PORT, passwd=RCON_PASSWORD) as client: response = client.run('#lock') return {"response": response}