Made good logging!

Fixed Steam auth as well.
This commit is contained in:
ZKWolf 2023-06-13 21:46:22 +02:00
parent efe2ecd28f
commit 3dfa88a628
8 changed files with 87 additions and 89 deletions

View File

@ -7,20 +7,20 @@ def file_survival_biome_definition_des_mayan():
get_remote_ip()
try:
print("Responded to file survival biome definition des mayan api call POST")
graylog_logger(request.get_json(), "info")
graylog_logger(level="info", handler="general-File-Handle", message=request.get_json())
return jsonify({"status": "success"})
except TimeoutError:
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="general-File-Handle", message=f"Error in file_survival_biome_definition_des_mayan: {e}")
@app.route("/gamenews/messages", methods=["GET"])
def gamenews():
get_remote_ip()
try:
print("Responded to aaaaa api call GET")
print("Responded to game news api call GET")
return jsonify({"news": [
{"contentTags": ["steam", "xbox", "ps4", "grdk", "xsx", "ps5", "egs", "stadia", "switch"],
"description": "It's not The Clown's Bottles making you see double.<br/><br/>From September 1st 11AM ET - September 8th 11AM ET, earn twice the XP from Trials and Emblems.",
@ -31,7 +31,7 @@ def gamenews():
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="general-Game-News", message=f"Error in gamenews: {e}")
@app.route("/api/v1/config/VER_LATEST_CLIENT_DATA", methods=["GET"])
@ -44,7 +44,7 @@ def config_ver_latest_client_data():
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="general-ver-latest-data", message=f"Error in config_ver_latest_client_data: {e}")
@app.route("/api/v1/utils/contentVersion/latest/2.2", methods=["GET"])
@ -60,7 +60,7 @@ def content_version_latest():
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="general-content-version", message=f"Error in content_version_latest: {e}")
@app.route("/gameservers.dev", methods=["POST"])
@ -74,7 +74,7 @@ def gameservers_dev():
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="general-gameserver-dev", message=f"Error in gameservers_dev: {e}")
@app.route("/api/v1/config/UseMirrorsMM_Steam", methods=["GET"])
@ -87,7 +87,7 @@ def config_use_mirrors_mm_steam():
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="general-use-mirrors-mm-steam", message=f"Error in config_use_mirrors_mm_steam: {e}")
@app.route("/crashreport/unreal/CrashReporter/Ping", methods=["GET"])
@ -100,7 +100,7 @@ def crashreporter_ping():
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="general-crashreporter-ping", message=f"Error in crashreporter_ping: {e}")
@app.route("/tex", methods=["GET"])
@ -112,7 +112,7 @@ def tex_get():
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="general-tex", message=f"Error in tex_get: {e}")
@app.route("/")
@ -122,7 +122,7 @@ def root():
return jsonify({"status": "success"})
# return render_template("index.html")
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="general-root", message=f"Error in root: {e}")
@app.route('/favicon.ico')
@ -135,7 +135,7 @@ def favicon():
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="general-favicon", message=f"Error in favicon: {e}")
@app.route("/api/v1/healthcheck", methods=["GET"])
@ -147,7 +147,7 @@ def healthcheck():
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="general-healthcheck", message=f"Error in healthcheck: {e}")
@app.route("/api/v1/services/tex")
@ -163,7 +163,7 @@ def services_tex():
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="general-services-tex", message=f"Error in services_tex: {e}")
@app.route("/api/v1/utils/contentVersion/latest/2.11", methods=["GET"])
@ -177,7 +177,7 @@ def content_version():
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="general-content-version", message=f"Error in content_version: {e}")
@app.route("/api/v1/utils/contentVersion/latest/0", methods=["GET"])
@ -191,7 +191,7 @@ def content_version0():
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="general-content-version0", message=f"Error in content_version0: {e}")
@app.route("/api/v1/utils/contentVersion/latest/1.1", methods=["GET"])
@ -205,7 +205,7 @@ def content_version1():
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="general-content-version1", message=f"Error in content_version1: {e}")
@app.route("/api/v1/consent/eula2", methods=["GET"])
@ -220,7 +220,7 @@ def consent_eula():
"pt-BR", "ru", "sv", "th", "tr", "zh-Hans", "zh-Hant"],
"platform": ["steam", "xbox", "xsx", "switch", "grdk", "stadia"]})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="general-consent-eula", message=f"Error in consent_eula: {e}")
@app.route("/api/v1/consent/eula", methods=["GET"])
@ -235,4 +235,4 @@ def consent_eula0():
"pt-BR", "ru", "sv", "th", "tr", "zh-Hans", "zh-Hant"],
"platform": ["steam", "xbox", "xsx", "switch", "grdk", "stadia"]})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="general-consent-eula0", message=f"Error in consent_eula0: {e}")

View File

@ -6,13 +6,13 @@ def get_quitter_state():
get_remote_ip()
try:
print("Responded to get quitter state api call POST")
graylog_logger(request.get_json(), "info")
graylog_logger(level="info", handler="logging_getQuitterState", message=request.get_json())
return jsonify({"status": "success"})
except TimeoutError:
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="logging_getQuitterState", message=str(e))
@app.route("/api/v1/extensions/progression/initOrGetGroups", methods=["POST"])
@ -20,14 +20,13 @@ def extension_progression_init_or_get_groups():
get_remote_ip()
try:
print("Responded to extension progression init or get groups api call POST")
print(request.get_json())
graylog_logger(request.get_json(), "info")
graylog_logger(level="info", handler="logging_initOrGetGroups", message=request.get_json())
return jsonify({'data': {'skipProgressionGroups': True, 'skipMetadataGroups': True}})
except TimeoutError:
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="logging_initOrGetGroups", message=str(e))
@app.route("/metrics/client/event", methods=["POST"])
@ -36,13 +35,13 @@ def receive_event():
try:
print("Responded to Metrics api call POST")
data = request.get_json()
graylog_logger(data, "info")
graylog_logger(level="info", handler="logging_client_Event", message=data)
return jsonify({"status": "success"})
except TimeoutError:
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="logging_client_Event", message=str(e))
@app.route("/metrics/httplog/event", methods=["POST"])
@ -50,13 +49,13 @@ def metrics_httplog_event():
get_remote_ip()
try:
data = request.get_json()
graylog_logger(data, "info")
graylog_logger(level="info", handler="logging_httplog_Event", message=data)
return jsonify({"status": "success"})
except TimeoutError:
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="logging_httplog_Event", message=str(e))
@app.route("/api/v1/gameDataAnalytics", methods=["POST"])
@ -65,13 +64,13 @@ def analytics_post():
try:
print("Responded to analytics api call POST")
data = request.get_json()
graylog_logger(data, "info")
graylog_logger(level="info", handler="logging_gameDataAnalytics", message=data)
return jsonify({"status": "success"})
except TimeoutError:
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="logging_gameDataAnalytics", message=str(e))
@app.route("/api/v1/gameDataAnalytics/batch", methods=["POST"])
@ -80,13 +79,13 @@ def analytics_batch_post():
try:
print("Responded to analytics batch api call POST")
data = request.get_json()
graylog_logger(data, "info")
graylog_logger(level="info", handler="logging_gameDataAnalyticsBatch", message=data)
return jsonify({"status": "success"})
except TimeoutError:
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="logging_gameDataAnalyticsBatch", message=str(e))
@app.route("/api/v1/me/richPresence", methods=["POST"])
@ -94,13 +93,13 @@ def me_rich_presence():
get_remote_ip()
try:
print("Responded to me rich presence api call POST")
graylog_logger(request.get_json(), "info")
graylog_logger(level="info", handler="logging_meRichPresence", message=request.get_json())
return jsonify({"status": "success"})
except TimeoutError:
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="logging_meRichPresence", message=str(e))
@app.route("/metrics/server/event", methods=["POST"])
@ -108,13 +107,13 @@ def metrics_server_event():
get_remote_ip()
try:
print("Responded to metrics server event api call POST")
graylog_logger(request.get_json(), "info")
graylog_logger(level="info", handler="logging_server_Event", message=request.get_json())
return jsonify({"status": "success"})
except TimeoutError:
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="logging_server_Event", message=str(e))
@app.route("/crashreport/unreal/CrashReporter/CheckReport", methods=["POST"])
@ -128,4 +127,4 @@ def crashreporter_check_report():
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="logging_crashreporter_CheckReport", message=str(e))

View File

@ -10,7 +10,7 @@ def catalog_get():
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="unknown_catalog", message=str(e))
@app.route("/api/v1/extensions/inventory/unlockSpecialItems", methods=["POST"])
@ -18,10 +18,11 @@ def inventory_unlock_special_items():
get_remote_ip()
try:
print("Responded to Inventory Unlock Special Items event api call POST")
graylog_logger(request.get_json(), "info")
graylog_logger(level="info", handler="unknown_unlockSpecialItems",
message=request.get_json())
return jsonify({"status": "success"})
except TimeoutError:
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="unknown_unlockSpecialItems", message=str(e))

View File

@ -5,20 +5,27 @@ from logic.time_handler import get_time
global steam_api_key, mongo_db, mongo_collection, mongo_host
def steam_login_function(appid):
def steam_login_function():
try:
steam_session_token = request.args.get('token')
appid = 555440
response = requests.get(
'https://api.steampowered.com/ISteamUserAuth/AuthenticateUserTicket/v1/?key={}&ticket={}&appid={}'.format(
steam_api_key, steam_session_token, appid))
if response.json() == {"response":{"error":{"errorcode":102,"errordesc":"Ticket for other app"}}}:
appid = 854040
response = requests.get(
'https://api.steampowered.com/ISteamUserAuth/AuthenticateUserTicket/v1/?key={}&ticket={}&appid={}'.format(
steam_api_key, steam_session_token, appid))
steamid = response.json()["response"]["params"]["steamid"]
# owner_id = response.json()["response"]["params"]["result"]["ownersteamid"] # This is providerId
userid, token = user_db_handler(steamid, mongo_host, mongo_db, mongo_collection)
current_time, expire_time = get_time()
graylog_logger("User {} logged in".format(steamid), "info")
print("User {} logged in".format(steamid))
graylog_logger(level="info", handler="steam_login", message="User {} logged in".format(steamid))
# Read: Doc -> AUTH
# You can copy and paste the JSON from the Auth Doc here. If you don't have a steam api key.
# The Client does not validate this and just uses it.
@ -32,7 +39,7 @@ def steam_login_function(appid):
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="steam_login", message=str(e))
@app.route("/api/v1/auth/provider/steam/login", methods=["POST"])
@ -44,25 +51,20 @@ def steam_login():
print("USER AGENT: " + user_agent)
print("####################################################")
if user_agent == "TheExit/++UE4+Release-4.21-CL-0 Windows/6.2.9200.1.256.64bit":
return_val = steam_login_function(854040)
return return_val
elif user_agent.startswith("TheExit/++UE4+Release-4.21-CL-0 Windows"):
if user_agent.startswith("TheExit/++UE4+Release-4.2"):
try:
return_val = steam_login_function(555440)
return_val = steam_login_function()
return return_val
except Exception as e:
print("EXCEPTION: " + str(e))
return_val = steam_login_function(854040)
return return_val
graylog_logger(level="error", handler="steam_login", message=str(e))
abort(401, "Unauthorized")
elif user_agent.startswith("game=TheExit, engine=UE4, version="):
return_val = steam_login_function(854040)
return return_val
else:
graylog_logger("Unauthorized User Agent {} connected from IP {}".format(user_agent, ip), "error")
graylog_logger(level="error", handler="steam_login", message={"text": "Access denied to User Agent", "User-Agent": user_agent, "IP": ip})
abort(401, "Unauthorized")
@ -70,43 +72,38 @@ def steam_login():
def modifiers():
get_remote_ip()
try:
print("Responded to modifiers api call GET")
return jsonify({"status": "success", "modifiers": []}) # Don't know. Added as Placeholder.
except TimeoutError:
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="modifiers_me", message=str(e))
@app.route("/moderation/check/username", methods=["POST"])
def moderation_check_username():
get_remote_ip()
try:
print("Responded to moderation check username api call POST")
graylog_logger(request.get_json(), "info")
graylog_logger(level="info", handler="moderation_check_username", message=request.get_json())
return jsonify({"status": "success",
"isAllowed": "true"}) # CLIENT: {"userId": "ID-ID-ID-ID-SEE-AUTH", "username": "Name-Name-Name"}
except TimeoutError:
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="moderation_check_username", message=str(e))
@app.route("/api/v1/progression/experience", methods=["POST"])
def progression_experience():
get_remote_ip()
try:
print("Responded to progression experience api call POST")
print(request.get_json())
# graylog_logger(request.get_json(), "info")
return jsonify({'groupExperiences': [{'objectId': 'PlayerProgression', 'experience': 0.57, 'version': 1}, {'objectId': 'RunnerProgression', 'experience': 0.555, 'version': 1}, {'objectId': 'HunterProgression', 'experience': 0.67, 'version': 1}]})
except TimeoutError:
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="progression_experience", message=str(e))
@app.route("/api/v1/extensions/challenges/getChallenges", methods=["POST"])
@ -114,13 +111,13 @@ def challenges_get_challenges():
get_remote_ip()
try:
print("Responded to challenges get challenges api call POST")
graylog_logger(request.get_json(), "info")
graylog_logger(level="info", handler="challenges_get_challenges", message=request.get_json())
return jsonify({"status": "success"})
except TimeoutError:
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="getChallanges", message=str(e))
@app.route("/api/v1/inventories", methods=["GET"])
@ -133,7 +130,7 @@ def inventories():
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="inventories", message=str(e))
@app.route("/api/v1/players/me/splinteredstates/ProgressionGroups", methods=["GET"])
@ -146,7 +143,8 @@ def progression_groups():
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="ProgressionGroups", message=str(e))
@app.route("/api/v1/players/ban/status", methods=["GET"])
def ban_status():
@ -158,7 +156,7 @@ def ban_status():
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="ban_status", message=str(e))
@app.route("/api/v1/wallet/currencies", methods=["GET"])
@ -171,17 +169,16 @@ def wallet_currencies():
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="currencies", message=str(e))
@app.route("/api/v1/players/me/splinteredstates/TheExit_Achievements", methods=["GET"])
def achievements_get():
get_remote_ip()
try:
print("Responded to achievements api call GET")
return jsonify({"status": "success", "achievements": []}) # Don't know. Added as Placeholder.
except TimeoutError:
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger("API ERROR: " + str(e), "error")
graylog_logger(level="error", handler="Achievment_handler", message=str(e))

View File

@ -2,7 +2,6 @@ from flask import Flask, jsonify, request, send_from_directory, abort
from logic.global_handlers import get_remote_ip, load_config
from logic.logging_handler import graylog_logger
app = Flask(__name__)
config = load_config()

View File

@ -1,31 +1,33 @@
import logging
import graypy
my_logger = logging.getLogger('deathgarden_api')
def setup_graylog(use_graylog, graylog_server):
if use_graylog:
global my_logger
my_logger = logging.getLogger('deathgarden_api')
my_logger.setLevel(logging.DEBUG)
handler = graypy.GELFUDPHandler(graylog_server, 12201)
my_logger.addHandler(handler)
my_logger.debug('Started Death Garden API')
my_logger.info({"level": "info", "handler": "api", "message": {"event": "api started."}})
else:
print("Graylog disabled. Not sending any Logs.")
def graylog_logger(message, level):
def graylog_logger(level, handler, message):
use_graylog = True
if use_graylog:
if handler == "mongodb":
my_logger.info({"level": level, "handler": handler, "message": message})
if level == "debug":
my_logger.debug(message)
if level == "warning":
my_logger.warning(message)
if level == "error":
my_logger.error(message)
if level == "info":
my_logger.info(message)
my_logger.debug({"level": level, "handler": handler, "message": message})
elif level == "warning":
my_logger.warning({"level": level, "handler": handler, "message": message})
elif level == "error":
my_logger.error({"level": level, "handler": handler, "message": message})
elif level == "info":
my_logger.info({"level": level, "handler": handler, "message": message})
else:
print("No valid log level specified.")
print("ERROR: No valid log level specified.")
else:
print("Graylog disabled. Not sending any Logs.")
print("Graylog disabled. Not sending any Logs.")

View File

@ -1,7 +1,6 @@
import pymongo
import uuid
import logging
logger = logging.getLogger(__name__)
from logic.logging_handler import graylog_logger
def user_db_handler(steamid, server, db, collection):
@ -28,7 +27,8 @@ def user_db_handler(steamid, server, db, collection):
}
collection.insert_one(new_document)
graylog_logger(level="info", handler="mongodb", message=f"New user added to database: {steamid}")
return userId, token
except Exception as e:
logger.error("Error in mongodb_handler -> " + str(e))
graylog_logger(level="error", handler="mongodb", message=f"Error in mongodb_handler: {e}")
return None, None

View File

@ -34,7 +34,7 @@ def keep_alive():
time.sleep(100)
except (KeyboardInterrupt, SystemExit):
print('Received keyboard interrupt, quitting threads.')
# graylog_logger("Api shutting down do to keyboard interrupt.", "info")
graylog_logger(level="info", handler="api", message={"event": "api stopped."})
# ------------------------------------------------------- #