Files
pvv-nixos-config/hosts/ildkule/services/monitoring/gatus/minecraft-checker.nix
T

41 lines
1.3 KiB
Nix

{ lib, pkgs, ... }:
{
services.python-http-handlers."gatus-minecraft-checker" = {
listenStreams = [ "127.0.0.1:1337" ];
libraries = with pkgs.python3Packages; [
mcstatus
];
handler = ''
import json
from mcstatus import JavaServer
class Handler(BaseHTTPRequestHandler):
def do_GET(self):
try:
mcserver = JavaServer.lookup("minecraft.pvv.ntnu.no")
status = mcserver.status()
body = {
"ok": True,
"players": status.players.online,
"version": status.version.name,
"latency": status.latency,
}
data = json.dumps(body).encode()
self.send_response(200)
self.send_header("Content-Type", "application/json")
self.send_header("Content-Length", str(len(data)))
self.end_headers()
self.wfile.write(data)
except Exception as e:
data = json.dumps({"ok": False, "error": str(e)}).encode()
self.send_response(500)
self.end_headers()
self.wfile.write(data)
'';
};
}