Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/endpoints/unknown.py
This commit is contained in:
ZKWolf 2023-06-15 18:30:07 +02:00
commit da104e7fc2
8 changed files with 88 additions and 109 deletions

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(level="info", handler="logging_getQuitterState", message=request.get_json())
logger.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(level="error", handler="logging_getQuitterState", message=str(e))
logger.graylog_logger(level="error", handler="logging_getQuitterState", message=str(e))
@app.route("/api/v1/extensions/progression/initOrGetGroups", methods=["POST"])
@ -20,13 +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")
graylog_logger(level="info", handler="logging_initOrGetGroups", message=request.get_json())
logger.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(level="error", handler="logging_initOrGetGroups", message=str(e))
logger.graylog_logger(level="error", handler="logging_initOrGetGroups", message=str(e))
@app.route("/metrics/client/event", methods=["POST"])
@ -35,13 +35,13 @@ def receive_event():
try:
print("Responded to Metrics api call POST")
data = request.get_json()
graylog_logger(level="info", handler="logging_client_Event", message=data)
logger.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(level="error", handler="logging_client_Event", message=str(e))
logger.graylog_logger(level="error", handler="logging_client_Event", message=str(e))
@app.route("/metrics/httplog/event", methods=["POST"])
@ -49,13 +49,13 @@ def metrics_httplog_event():
get_remote_ip()
try:
data = request.get_json()
graylog_logger(level="info", handler="logging_httplog_Event", message=data)
logger.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(level="error", handler="logging_httplog_Event", message=str(e))
logger.graylog_logger(level="error", handler="logging_httplog_Event", message=str(e))
@app.route("/api/v1/gameDataAnalytics", methods=["POST"])
@ -64,13 +64,13 @@ def analytics_post():
try:
print("Responded to analytics api call POST")
data = request.get_json()
graylog_logger(level="info", handler="logging_gameDataAnalytics", message=data)
logger.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(level="error", handler="logging_gameDataAnalytics", message=str(e))
logger.graylog_logger(level="error", handler="logging_gameDataAnalytics", message=str(e))
@app.route("/api/v1/gameDataAnalytics/batch", methods=["POST"])
@ -79,13 +79,13 @@ def analytics_batch_post():
try:
print("Responded to analytics batch api call POST")
data = request.get_json()
graylog_logger(level="info", handler="logging_gameDataAnalyticsBatch", message=data)
logger.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(level="error", handler="logging_gameDataAnalyticsBatch", message=str(e))
logger.graylog_logger(level="error", handler="logging_gameDataAnalyticsBatch", message=str(e))
@app.route("/api/v1/me/richPresence", methods=["POST"])
@ -93,13 +93,13 @@ def me_rich_presence():
get_remote_ip()
try:
print("Responded to me rich presence api call POST")
graylog_logger(level="info", handler="logging_meRichPresence", message=request.get_json())
logger.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(level="error", handler="logging_meRichPresence", message=str(e))
logger.graylog_logger(level="error", handler="logging_meRichPresence", message=str(e))
@app.route("/metrics/server/event", methods=["POST"])
@ -107,13 +107,13 @@ def metrics_server_event():
get_remote_ip()
try:
print("Responded to metrics server event api call POST")
graylog_logger(level="info", handler="logging_server_Event", message=request.get_json())
logger.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(level="error", handler="logging_server_Event", message=str(e))
logger.graylog_logger(level="error", handler="logging_server_Event", message=str(e))
@app.route("/crashreport/unreal/CrashReporter/CheckReport", methods=["POST"])
@ -127,7 +127,7 @@ def crashreporter_check_report():
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger(level="error", handler="logging_crashreporter_CheckReport", message=str(e))
logger.graylog_logger(level="error", handler="logging_crashreporter_CheckReport", message=str(e))
@app.route("/metrics/matchmaking/event", methods=["POST"])
@ -135,13 +135,13 @@ def metrics_matchmaking_event():
get_remote_ip()
try:
print("Responded to metrics matchmaking event api call POST")
graylog_logger(level="info", handler="logging_matchmaking_Event", message=request.get_json())
logger.graylog_logger(level="info", handler="logging_matchmaking_Event", message=request.get_json())
return jsonify({"status": "success"})
except TimeoutError:
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger(level="error", handler="logging_matchmaking_Event", message=str(e))
logger.graylog_logger(level="error", handler="logging_matchmaking_Event", message=str(e))
@app.route("/api/v1/extensions/progression/playerEndOfMatch", methods=["POST"])
@ -149,13 +149,13 @@ def progression_player_end_of_match():
get_remote_ip()
try:
print("Responded to progression player end of match api call POST")
graylog_logger(level="info", handler="logging_playerEndOfMatch", message=request.get_json())
logger.graylog_logger(level="info", handler="logging_playerEndOfMatch", message=request.get_json())
return jsonify({"status": "success"})
except TimeoutError:
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger(level="error", handler="logging_playerEndOfMatch", message=str(e))
logger.graylog_logger(level="error", handler="logging_playerEndOfMatch", message=str(e))
@app.route("/api/v1/extensions/challenges/executeChallengeProgressionOperationBatch", methods=["POST"])
@ -163,13 +163,15 @@ def challenges_execute_challenge_progression_operation_batch():
get_remote_ip()
try:
print("Responded to challenges execute challenge progression operation batch api call POST")
graylog_logger(level="info", handler="logging_executeChallengeProgressionOperationBatch", message=request.get_json())
logger.graylog_logger(level="info", handler="logging_executeChallengeProgressionOperationBatch",
message=request.get_json())
return jsonify({"status": "success"})
except TimeoutError:
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger(level="error", handler="logging_executeChallengeProgressionOperationBatch", message=str(e))
logger.graylog_logger(level="error", handler="logging_executeChallengeProgressionOperationBatch",
message=str(e))
@app.route("/api/v1/queue", methods=["POST"])
@ -177,13 +179,13 @@ def queue():
get_remote_ip()
try:
print("Responded to queue api call POST")
graylog_logger(level="info", handler="logging_queue", message=request.get_json())
logger.graylog_logger(level="info", handler="logging_queue", message=request.get_json())
return jsonify({"status": "success"})
except TimeoutError:
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger(level="error", handler="logging_queue", message=str(e))
logger.graylog_logger(level="error", handler="logging_queue", message=str(e))
@app.route("/api/v1/extensions/challenges/getChallengeProgressionBatch", methods=["POST"])
@ -194,11 +196,12 @@ def challenges_get_challenge_progression_batch():
print(request.headers)
print("##############################################")
print("Responded to challenges get challenge progression batch api call POST")
graylog_logger(level="info", handler="logging_getChallengeProgressionBatch", message=request.get_json())
logger.graylog_logger(level="info", handler="logging_getChallengeProgressionBatch",
message=request.get_json())
return jsonify({"status": "success"})
except TimeoutError:
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger(level="error", handler="logging_getChallengeProgressionBatch", message=str(e))
logger.graylog_logger(level="error", handler="logging_getChallengeProgressionBatch", 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(level="error", handler="unknown_catalog", message=str(e))
logger.graylog_logger(level="error", handler="unknown_catalog", message=str(e))
@app.route("/api/v1/extensions/inventory/unlockSpecialItems", methods=["POST"])
@ -18,36 +18,10 @@ def inventory_unlock_special_items():
get_remote_ip()
try:
print("Responded to Inventory Unlock Special Items event api call POST")
graylog_logger(level="info", handler="unknown_unlockSpecialItems",
message=request.get_json())
logger.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(level="error", handler="unknown_unlockSpecialItems", message=str(e))
@app.errorhandler(404)
def debug_404(e):
print("##################################################################################")
print("DEBUG 404")
print("##################################################################################")
print('HTTP Headers:')
for header in request.headers:
print(f'{header[0]}: {header[1]}')
print('Cookies:')
for key, value in request.cookies.items():
print(f'{key}: {value}')
print('Endpoint: ', request.endpoint)
print('Path: ', request.path)
print('Method: ', request.method)
if request.json:
print('JSON Payload:')
print(request.json)
print("##################################################################################")
return jsonify({"status": "error", "code": 404})
logger.graylog_logger(level="error", handler="unknown_unlockSpecialItems", message=str(e))

View File

@ -25,7 +25,7 @@ def steam_login_function():
userid, token = user_db_handler(steamid, mongo_host, mongo_db, mongo_collection)
current_time, expire_time = get_time()
graylog_logger(level="info", handler="steam_login", message="User {} logged in".format(steamid))
logger.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.
@ -39,7 +39,7 @@ def steam_login_function():
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger(level="error", handler="steam_login", message=str(e))
logger.graylog_logger(level="error", handler="steam_login", message=str(e))
@app.route("/api/v1/auth/provider/steam/login", methods=["POST"])
@ -56,7 +56,7 @@ def steam_login():
return_val = steam_login_function()
return return_val
except Exception as e:
graylog_logger(level="error", handler="steam_login", message=str(e))
logger.graylog_logger(level="error", handler="steam_login", message=str(e))
abort(401, "Unauthorized")
elif user_agent.startswith("game=TheExit, engine=UE4, version="):
@ -64,7 +64,8 @@ def steam_login():
return return_val
else:
graylog_logger(level="error", handler="steam_login", message={"text": "Access denied to User Agent", "User-Agent": user_agent, "IP": ip})
logger.graylog_logger(level="error", handler="steam_login", message={"text": "Access denied to User Agent",
"User-Agent": user_agent, "IP": ip})
abort(401, "Unauthorized")
@ -76,21 +77,21 @@ def modifiers():
except TimeoutError:
return jsonify({"status": "error"})
except Exception as e:
graylog_logger(level="error", handler="modifiers_me", message=str(e))
logger.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:
graylog_logger(level="info", handler="moderation_check_username", message=request.get_json())
logger.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"}
"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(level="error", handler="moderation_check_username", message=str(e))
logger.graylog_logger(level="error", handler="moderation_check_username", message=str(e))
@app.route("/api/v1/progression/experience", methods=["POST"])
@ -98,12 +99,14 @@ def progression_experience():
get_remote_ip()
try:
# 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}]})
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(level="error", handler="progression_experience", message=str(e))
logger.graylog_logger(level="error", handler="progression_experience", message=str(e))
@app.route("/api/v1/extensions/challenges/getChallenges", methods=["POST"])
@ -111,13 +114,13 @@ def challenges_get_challenges():
get_remote_ip()
try:
print("Responded to challenges get challenges api call POST")
graylog_logger(level="info", handler="challenges_get_challenges", message=request.get_json())
logger.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(level="error", handler="getChallanges", message=str(e))
logger.graylog_logger(level="error", handler="getChallanges", message=str(e))
@app.route("/api/v1/inventories", methods=["GET"])
@ -130,7 +133,7 @@ def inventories():
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger(level="error", handler="inventories", message=str(e))
logger.graylog_logger(level="error", handler="inventories", message=str(e))
@app.route("/api/v1/players/me/splinteredstates/ProgressionGroups", methods=["GET"])
@ -143,7 +146,7 @@ def progression_groups():
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger(level="error", handler="ProgressionGroups", message=str(e))
logger.graylog_logger(level="error", handler="ProgressionGroups", message=str(e))
@app.route("/api/v1/players/ban/status", methods=["GET"])
@ -156,7 +159,7 @@ def ban_status():
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger(level="error", handler="ban_status", message=str(e))
logger.graylog_logger(level="error", handler="ban_status", message=str(e))
@app.route("/api/v1/wallet/currencies", methods=["GET"])
@ -169,7 +172,7 @@ def wallet_currencies():
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger(level="error", handler="currencies", message=str(e))
logger.graylog_logger(level="error", handler="currencies", message=str(e))
@app.route("/api/v1/players/me/splinteredstates/TheExit_Achievements", methods=["GET"])
@ -186,4 +189,4 @@ def achievements_get():
print("Timeout error")
return jsonify({"status": "error"})
except Exception as e:
graylog_logger(level="error", handler="Achievment_handler", message=str(e))
logger.graylog_logger(level="error", handler="Achievment_handler", message=str(e))

View File

@ -1,6 +1,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
from logic.logging_handler import logger
app = Flask(__name__)

View File

@ -14,4 +14,4 @@ def get_remote_ip():
def load_config():
with open('config//api_config.yaml', 'r') as f:
config_file = yaml.safe_load(f)
return config_file
return config_file

View File

@ -1,33 +1,34 @@
import logging
import graypy
my_logger = logging.getLogger('deathgarden_api')
class Logger:
def __init__(self):
self.my_logger = logging.getLogger('deathgarden_api')
self.dynamic_use_graylog = False
def setup_graylog(use_graylog, graylog_server):
if use_graylog:
my_logger.setLevel(logging.DEBUG)
handler = graypy.GELFUDPHandler(graylog_server, 12201)
my_logger.addHandler(handler)
my_logger.info({"level": "info", "handler": "api", "message": {"event": "api started."}})
else:
print("Graylog disabled. Not sending any Logs.")
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({"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})
def setup_graylog(self, use_graylog, graylog_server):
self.dynamic_use_graylog = use_graylog
if self.dynamic_use_graylog:
self.my_logger.setLevel(logging.DEBUG)
handler = graypy.GELFUDPHandler(graylog_server, 12201)
self.my_logger.addHandler(handler)
self.my_logger.info({"level": "info", "handler": "api", "message": {"event": "api started."}})
else:
print("ERROR: No valid log level specified.")
else:
print("Graylog disabled. Not sending any Logs.")
print("Graylog disabled. Not sending any Logs.")
def graylog_logger(self, level, handler, message):
use_graylog = True
if use_graylog:
log_methods = {"debug": self.my_logger.debug, "warning": self.my_logger.warning,
"error": self.my_logger.error, "info": self.my_logger.info}
log_method = log_methods.get(level)
if log_method:
log_method({"level": level, "handler": handler, "message": message})
else:
print("ERROR: No valid log level specified.")
else:
print("Graylog disabled. Not sending any Logs.")
logger = Logger()

View File

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

View File

@ -7,8 +7,6 @@
from threading import Thread
import time
from logic.logging_handler import setup_graylog
from flask_definitions import *
import endpoints.unknown
import endpoints.user_handeling
@ -34,7 +32,7 @@ def keep_alive():
time.sleep(100)
except (KeyboardInterrupt, SystemExit):
print('Received keyboard interrupt, quitting threads.')
graylog_logger(level="info", handler="api", message={"event": "api stopped."})
logger.graylog_logger(level="info", handler="api", message={"event": "api stopped."})
# ------------------------------------------------------- #
@ -45,5 +43,5 @@ def keep_alive():
# ------------------------------------------------------- #
# main
# ------------------------------------------------------- #
setup_graylog(use_graylog, graylog_server)
logger.setup_graylog(use_graylog, graylog_server)
keep_alive()