simple server info page for xenforo node page
This commit is contained in:
@@ -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)
|
||||
Reference in New Issue
Block a user