diff --git a/src/endpoints/logging.py b/src/endpoints/logging.py index 0bcd250..db9928d 100644 --- a/src/endpoints/logging.py +++ b/src/endpoints/logging.py @@ -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)) diff --git a/src/endpoints/unknown.py b/src/endpoints/unknown.py index 3350479..f76d73f 100644 --- a/src/endpoints/unknown.py +++ b/src/endpoints/unknown.py @@ -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)) diff --git a/src/endpoints/user_handeling.py b/src/endpoints/user_handeling.py index 7d372bf..a99c76c 100644 --- a/src/endpoints/user_handeling.py +++ b/src/endpoints/user_handeling.py @@ -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)) diff --git a/src/flask_definitions.py b/src/flask_definitions.py index b745975..d150d48 100644 --- a/src/flask_definitions.py +++ b/src/flask_definitions.py @@ -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__) diff --git a/src/logic/global_handlers.py b/src/logic/global_handlers.py index 96af078..0f6c20a 100644 --- a/src/logic/global_handlers.py +++ b/src/logic/global_handlers.py @@ -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 \ No newline at end of file + return config_file diff --git a/src/logic/logging_handler.py b/src/logic/logging_handler.py index 02e68a3..1e075c1 100644 --- a/src/logic/logging_handler.py +++ b/src/logic/logging_handler.py @@ -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() diff --git a/src/logic/mongodb_handler.py b/src/logic/mongodb_handler.py index 4c8a640..9e99fd2 100644 --- a/src/logic/mongodb_handler.py +++ b/src/logic/mongodb_handler.py @@ -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 diff --git a/src/start_app.py b/src/start_app.py index 89e3e9c..9aa2eee 100644 --- a/src/start_app.py +++ b/src/start_app.py @@ -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()