From 23d7242e07f74168933932b4b5624ca47ccccef7 Mon Sep 17 00:00:00 2001 From: ZKWolf Date: Sat, 17 Jun 2023 03:24:44 +0200 Subject: [PATCH] Implemented EULA --- src/endpoints/general.py | 41 ++++++++++++++++++++---------------- src/logic/mongodb_handler.py | 26 ++++++++++++++++++++++- 2 files changed, 48 insertions(+), 19 deletions(-) diff --git a/src/endpoints/general.py b/src/endpoints/general.py index 419c709..d819278 100644 --- a/src/endpoints/general.py +++ b/src/endpoints/general.py @@ -4,6 +4,8 @@ import flask_definitions from flask_definitions import * import os +from logic.mongodb_handler import mongo + @app.route("/gamenews/messages", methods=["GET"]) def gamenews(): @@ -209,24 +211,27 @@ def content_version1(): @app.route("/api/v1/consent/eula2", methods=["PUT", "GET"]) def consent_eula(): get_remote_ip() - if request.method == "PUT": - try: - print("Responded to consent eula api call PUT") - return jsonify({"status": "success"}) - except TimeoutError: - print("Timeout error") - return jsonify({"status": "error"}) - except Exception as e: - logger.graylog_logger(level="error", handler="general-consent-eula", message=f"Error in consent_eula: {e}") - elif request.method == "GET": - try: - print("Responded to consent eula api call GET") - return jsonify({"isGiven": True}) - except TimeoutError: - print("Timeout error") - return jsonify({"status": "error"}) - except Exception as e: - logger.graylog_logger(level="error", handler="general-consent-eula", message=f"Error in consent_eula: {e}") + try: + if request.method == "PUT": + userid = request.cookies.get('bhvrSession') + try: + mongo.eula(userId=userid, get_eula=False, server=mongo_host, db=mongo_db, collection=mongo_collection) + print("Responded to consent eula api call PUT") + return jsonify({"isGiven": True}) + except TimeoutError: + print("Timeout error") + return jsonify({"status": "error"}) + except Exception as e: + logger.graylog_logger(level="error", handler="general-consent-eula", message=f"Error in consent_eula: {e}") + elif request.method == "GET": + userid = request.cookies.get('bhvrSession') + is_given = mongo.eula(userId=userid, get_eula=True, server=mongo_host, db=mongo_db, collection=mongo_collection) + if is_given: + return jsonify({"isGiven": True}) + else: + return jsonify({"isGiven": False}) + except Exception as e: + logger.graylog_logger(level="error", handler="general-consent-eula", message=f"Error in consent_eula: {e}") @app.route("/api/v1/consent/eula", methods=["GET"]) diff --git a/src/logic/mongodb_handler.py b/src/logic/mongodb_handler.py index d21584f..8d6b036 100644 --- a/src/logic/mongodb_handler.py +++ b/src/logic/mongodb_handler.py @@ -32,7 +32,8 @@ class Mongo: new_document = { 'steamid': steamid, 'userId': userId, - 'token': token + 'token': token, + 'eula': False } self.dyn_collection.insert_one(new_document) @@ -63,5 +64,28 @@ class Mongo: print(e) return None, None + def eula(self, userId, get_eula, server, db, collection): + try: + self.dyn_server = server + self.dyn_db = db + self.dyn_collection = collection + client = pymongo.MongoClient(self.dyn_server) + self.dyn_db = client[self.dyn_db] + self.dyn_collection = self.dyn_db[self.dyn_collection] + existing_document = self.dyn_collection.find_one({'userId': userId}) + if existing_document: + if get_eula: + eula = existing_document['eula'] + return eula + else: + self.dyn_collection.update_one({'userId': userId}, {'$set': {'eula': True}}) + return True + else: + print(f"No user found with userId: {userId}") + return False + except Exception as e: + print(e) + return None, None + mongo = Mongo()