From 8977cccbff640b62c46317788250171f6f6cf156 Mon Sep 17 00:00:00 2001 From: jenz Date: Fri, 13 Feb 2026 21:48:37 +0100 Subject: [PATCH] adding support for playerlist info --- server_info/html/servers_info.html | 163 ++++++++++++++++++----------- server_info/python/README.md | 1 + server_info/python/app.py | 47 ++++++--- 3 files changed, 134 insertions(+), 77 deletions(-) diff --git a/server_info/html/servers_info.html b/server_info/html/servers_info.html index 33a1992..0b72b17 100644 --- a/server_info/html/servers_info.html +++ b/server_info/html/servers_info.html @@ -5,96 +5,131 @@ UNLOZE Server Status
-

UNLOZE Server Info

Loading servers...
diff --git a/server_info/python/README.md b/server_info/python/README.md index c7d510e..08325e3 100644 --- a/server_info/python/README.md +++ b/server_info/python/README.md @@ -2,5 +2,6 @@ flask flask_cors waitress werkzeug +python-a2s python app.py diff --git a/server_info/python/app.py b/server_info/python/app.py index 20d13a2..071472b 100644 --- a/server_info/python/app.py +++ b/server_info/python/app.py @@ -1,17 +1,37 @@ -#!/home/nonroot/update_xenforo_server_info/venv/bin/python3 -from flask import Flask -from flask import request -from flask_cors import CORS -from werkzeug.middleware.proxy_fix import ProxyFix -import traceback -import json -from pprint import pprint -from settings import ips, file_path - -app = Flask(__name__) -app.wsgi_app = ProxyFix(app.wsgi_app, x_for=1, x_proto=1) +#!/home/nonroot/update_xenforo_server_info/venv/bin/python3 +from flask import Flask +from flask import request +from flask_cors import CORS +from werkzeug.middleware.proxy_fix import ProxyFix +import traceback +import json +from pprint import pprint +import a2s +from settings import ips, file_path + +app = Flask(__name__) +app.wsgi_app = ProxyFix(app.wsgi_app, x_for=1, x_proto=1) CORS(app) +#AI slop +def get_player_list(ip, port): + address = (ip, int(port)) + try: + # Get player information + players = a2s.players(address) + + player_data = [] + for p in players: + player_data.append({ + "name": p.name, + "score": p.score, + "duration": p.duration # Seconds they've been online + }) + return player_data + except Exception as e: + print(f"Error querying server: {e}") + return [] + #nginx used for reserve proxy @app.route('/', methods = ['POST']) def get_server_info(): @@ -30,7 +50,8 @@ def get_server_info(): map_ = server.split("**")[1].split(" ")[0] players = server.split("(")[1].split(")")[0] ip = server.split("\n[")[1].split("]")[0] - j = {"name": name, "map": map_, "players": players, "ip": ip} + d = get_player_list(ip.split(":")[0], ip.split(":")[1]) + j = {"name": name, "map": map_, "players": players, "ip": ip, "player_infos": d} new_j.append(j) #print(new_j)