diff --git a/server_info/html/servers.json b/server_info/html/servers.json new file mode 100644 index 0000000..b29ecfc --- /dev/null +++ b/server_info/html/servers.json @@ -0,0 +1 @@ +[{"name": "UNLOZE.com/stoat | Zombie Escape | Stage: [Purple] | Nosteam", "map": "ze_minimal_v4_1", "players": "65/65", "ip": "51.195.188.106:27015"}, {"name": "UNLOZE.com/stoat | [ZRiot: Day 8/12] BOSS - Nightmares | Ranking", "map": "zr_roblox_crossroads_scythx", "players": "1/65", "ip": "51.195.188.106:27016"}, {"name": "UNLOZE | Minigames | FastDL | Ranking", "map": "mg_GumObstacle", "players": "2/41", "ip": "51.195.188.106:27017"}, {"name": "UNLOZE.com/stoat | Zombie Escape 2 | UK", "map": "ze_random_v9", "players": "7/65", "ip": "51.195.188.106:27035"}, {"name": "UNLOZE Sven Server", "map": "sandstone", "players": "0/32", "ip": "51.195.188.106:27025"}] diff --git a/server_info/html/servers_info.html b/server_info/html/servers_info.html new file mode 100644 index 0000000..33a1992 --- /dev/null +++ b/server_info/html/servers_info.html @@ -0,0 +1,102 @@ + + + + + + UNLOZE Server Status + + + + +
+

UNLOZE Server Info

+
Loading servers...
+
+ + + + + + diff --git a/server_info/python/README.md b/server_info/python/README.md new file mode 100644 index 0000000..c7d510e --- /dev/null +++ b/server_info/python/README.md @@ -0,0 +1,6 @@ +flask +flask_cors +waitress +werkzeug + +python app.py diff --git a/server_info/python/app.py b/server_info/python/app.py new file mode 100644 index 0000000..20d13a2 --- /dev/null +++ b/server_info/python/app.py @@ -0,0 +1,46 @@ +#!/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) +CORS(app) + +#nginx used for reserve proxy +@app.route('/', methods = ['POST']) +def get_server_info(): + real_ip = request.headers.get('X-Real-IP', request.remote_addr) + #ipv4 and ipv6 checks + if real_ip != ips[0] and not real_ip.startswith(ips[1]): + return "invalid" + try: + content = request.get_json() + server_content = content["content"].split("###") + del server_content[0] #removing # UNLOZE Server Info + + new_j = [] + for server in server_content: + name = server.split("\n")[0].strip() + 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} + new_j.append(j) + + #print(new_j) + with open(file_path, 'w') as file: + json.dump(new_j, file, ensure_ascii=False) + except: + err = traceback.format_exc() + print("err: ", err) + return "" + +if __name__ == "__main__": + from waitress import serve + serve(app, host="127.0.0.1", port=5085, threads = 1) diff --git a/server_info/python/settings.py b/server_info/python/settings.py new file mode 100644 index 0000000..a3552bf --- /dev/null +++ b/server_info/python/settings.py @@ -0,0 +1,2 @@ +ips = ["", ""] +file_path = "" diff --git a/server_info/systemctl/server_info.service b/server_info/systemctl/server_info.service new file mode 100644 index 0000000..28169ba --- /dev/null +++ b/server_info/systemctl/server_info.service @@ -0,0 +1,11 @@ +[Unit] +Description=flask app that receives server_info + +[Service] +Type=simple +User=nonroot +Environment=PYTHONUNBUFFERED=1 +Environment=PATH=/home/nonroot/update_xenforo_server_info/venv/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games +WorkingDirectory=/home/nonroot/update_xenforo_server_info +ExecStart=/home/nonroot/update_xenforo_server_info/app.py +Restart=always diff --git a/server_info/systemctl/server_info.timer b/server_info/systemctl/server_info.timer new file mode 100644 index 0000000..4d723bb --- /dev/null +++ b/server_info/systemctl/server_info.timer @@ -0,0 +1,8 @@ +[Unit] +Description=Flask app for server_info receiving + +[Timer] +OnCalendar=*-*-1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 00:00:00 + +[Install] +WantedBy=multi-user.target