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