diff --git a/src/endpoints/logging.py b/src/endpoints/logging.py index fbb8e40..88de37b 100644 --- a/src/endpoints/logging.py +++ b/src/endpoints/logging.py @@ -3,6 +3,30 @@ import uuid from flask_definitions import * +def json_log_validator(data): + cleaned_str = data.decode('utf8') + # base_str = cleaned_str.replace('\n', '') + cleaned_str = cleaned_str.replace('://', '-') + cleaned_str = cleaned_str.replace('"https', 'https') + # cleaned_str = cleaned_str.replace('""', '"') + cleaned_str = cleaned_str.replace('\\', '\\\\') + cleaned_str = cleaned_str.replace(u"\u000D", "") # Carriage Return + cleaned_str = cleaned_str.replace(u"\u000A", "") # Line Feed + cleaned_str = cleaned_str.replace(u"\u0009", "") # Horizontal Tab + cleaned_str = cleaned_str.replace('{""', "{") + cleaned_str = cleaned_str.replace('"":', ":") + cleaned_str = cleaned_str.replace('"url"', "url") + cleaned_str = cleaned_str.replace('"endpoints"', "endpoints") + cleaned_str = cleaned_str.replace('"}],', "}]") + cleaned_str = cleaned_str.replace('"group"', "group") + cleaned_str = cleaned_str.replace('"cf-nel"', "cf-nel") + cleaned_str = cleaned_str.replace('"max_age"', "max_age") + cleaned_str = cleaned_str.replace('"report_to"', "report_to") + cleaned_str = cleaned_str.replace('"success_fraction"', "success_fraction") + cleaned_str = cleaned_str.replace('":443"', ":443") + return cleaned_str + + @app.route("/metrics/client/event", methods=["POST"]) def receive_event(): check_for_game_client() @@ -122,26 +146,68 @@ def crashreporter_check_report(): # Ngl i think it doesnt even care what it gets here... # It Pings, Sends something like "UE4CC-Windows-AB720C3F412E0FF7280F73BBB64245AB_0003" # and then uploads the crashreport to bugsplat - return jsonify({"status":"success","stackKeyId":-1,"crashId":2011,"messageId":-1}) + return jsonify({"status": "success", "stackKeyId": -1, "crashId": 2011, "messageId": -1}) except TimeoutError: return jsonify({"status": "error"}) except Exception as e: logger.graylog_logger(level="error", handler="logging_crashreporter_CheckReport", message=e) -@app.route("/gameservers.dev", methods=["POST", "GET"]) +@app.route("/gameservers.dev", methods=["POST"]) def gameservers_dev(): - check_for_game_client("strict") - return "", 204 + try: + check_for_game_client("strict") + req = request.get_data() + cleaned_str = json_log_validator(req) + try: + data = json.loads(cleaned_str) + logger.graylog_logger(level="info", handler="logging_gameservers_dev", message=data) + except Exception as e: + logger.graylog_logger(level="error", handler="logging_gameservers_dev", message=e) + return jsonify({"status": "error"}), 500 + return "", 204 + except TimeoutError: + return jsonify({"status": "error"}), 500 + except Exception as e: + logger.graylog_logger(level="error", handler="logging_gameservers_dev", message=e) + return jsonify({"status": "error"}), 500 @app.route("/gameservers.uat", methods=["POST"]) def gameservers_uat(): - check_for_game_client("strict") - return "", 204 + try: + check_for_game_client("strict") + req = request.get_data() + cleaned_str = json_log_validator(req) + try: + data = json.loads(cleaned_str) + logger.graylog_logger(level="info", handler="logging_gameservers_uat", message=data) + except Exception as e: + logger.graylog_logger(level="error", handler="logging_gameservers_uat", message=e) + return jsonify({"status": "error"}), 500 + return "", 204 + except TimeoutError: + return jsonify({"status": "error"}), 500 + except Exception as e: + logger.graylog_logger(level="error", handler="logging_gameservers_uat", message=e) + return jsonify({"status": "error"}), 500 -@app.route("/gameservers.live", methods=["POST", "GET"]) +@app.route("/gameservers.live", methods=["POST"]) def gameservers_live(): - check_for_game_client("strict") - return "", 204 + try: + check_for_game_client("strict") + req = request.get_data() + cleaned_str = json_log_validator(req) + try: + data = json.loads(cleaned_str) + logger.graylog_logger(level="info", handler="logging_gameservers_live", message=data) + except Exception as e: + logger.graylog_logger(level="error", handler="logging_gameservers_live", message=e) + return jsonify({"status": "error"}), 500 + return "", 204 + except TimeoutError: + return jsonify({"status": "error"}), 500 + except Exception as e: + logger.graylog_logger(level="error", handler="logging_gameservers_live", message=e) + return jsonify({"status": "error"}), 500