mirror of
https://github.com/wolfswolke/DeathGarden_API_Rebirth.git
synced 2026-04-20 22:17:12 -05:00
Added working cookie Auth
This commit is contained in:
parent
52279f5eaa
commit
1a2fb7f91f
|
|
@ -176,7 +176,12 @@ def consent_eula():
|
|||
return jsonify({"message": "Endpoint not found"}), 404
|
||||
try:
|
||||
if request.method == "PUT":
|
||||
userid = request.cookies.get('bhvrSession')
|
||||
|
||||
session_cookie = request.cookies.get("bhvrSession")
|
||||
if not session_cookie:
|
||||
return jsonify({"message": "Endpoint not found"}), 404
|
||||
userid = session_manager.get_user_id(session_cookie)
|
||||
|
||||
try:
|
||||
mongo.eula(userId=userid, get_eula=False, server=mongo_host, db=mongo_db, collection=mongo_collection)
|
||||
return jsonify({"isGiven": True})
|
||||
|
|
@ -188,8 +193,11 @@ def consent_eula():
|
|||
elif request.method == "GET":
|
||||
if request.cookies.get('bhvrSession') is None:
|
||||
return jsonify({"isGiven": True})
|
||||
login_cookie = request.cookies.get('bhvrSession')
|
||||
is_given = mongo.get_data_with_list(login=login_cookie, login_steam=False,
|
||||
session_cookie = request.cookies.get("bhvrSession")
|
||||
if not session_cookie:
|
||||
return jsonify({"message": "Endpoint not found"}), 404
|
||||
userid = session_manager.get_user_id(session_cookie)
|
||||
is_given = mongo.get_data_with_list(login=userid, login_steam=False,
|
||||
items={"eula"},
|
||||
server=mongo_host, db=mongo_db, collection=mongo_collection)
|
||||
if is_given:
|
||||
|
|
|
|||
|
|
@ -52,11 +52,16 @@ def queue():
|
|||
region = request.json.get("region")
|
||||
count_a = request.json.get("countA")
|
||||
count_b = request.json.get("countB")
|
||||
user_id = request.cookies.get("bhvrSession")
|
||||
spoofed_match_id = "0051681e-72ce-46f0-bda2-752e471d0d08"
|
||||
epoch = datetime.now().timestamp()
|
||||
|
||||
session_cookie = request.cookies.get("bhvrSession")
|
||||
if not session_cookie:
|
||||
return jsonify({"message": "Endpoint not found"}), 404
|
||||
userid = session_manager.get_user_id(session_cookie)
|
||||
|
||||
logger.graylog_logger(level="info", handler="logging_queue",
|
||||
message=f"User {user_id} is queueing for {category} in {region} with {count_a} hunters and {count_b} runners")
|
||||
message=f"User {userid} is queueing for {category} in {region} with {count_a} hunters and {count_b} runners")
|
||||
|
||||
# return {"status":"QUEUED","queueData":{"ETA":-10000,"position":0,"stable":False}}
|
||||
# else:
|
||||
|
|
@ -83,7 +88,7 @@ def queue():
|
|||
"playerHistory": ["asdasdasdasdasdasdasd",
|
||||
"dsadasdasdasdasdasddsa"]}}
|
||||
if region == "DEV":
|
||||
all_users = [user_id]
|
||||
all_users = [userid]
|
||||
if additional_user_ids:
|
||||
all_users.append(additional_user_ids)
|
||||
return jsonify(
|
||||
|
|
@ -91,9 +96,9 @@ def queue():
|
|||
"MatchData": {"MatchId": spoofed_match_id, "Category": category, "Rank": rank,
|
||||
"CreationDateTime": epoch, "ExcludeFriends": False,
|
||||
"ExcludeClanMembers": False, "Status": "CREATED",
|
||||
"Creator": user_id,
|
||||
"Creator": userid,
|
||||
"Players": [all_users],
|
||||
"SideA": [user_id],
|
||||
"SideA": [userid],
|
||||
"SideB": [additional_user_ids], "CustomData": {},
|
||||
"Props": {"isDedicated": False, "gameMode": "08d2279d2ed3fba559918aaa08a73fa8-Default",
|
||||
'MatchConfiguration': '/Game/Configuration/MatchConfig/MatchConfig_Demo.MatchConfig_Demo'},
|
||||
|
|
@ -155,9 +160,14 @@ def match_register(match_id):
|
|||
custom_data = request.get_json("customData")
|
||||
if custom_data["sessionSettings"]:
|
||||
session_settings = custom_data["sessionSettings"]
|
||||
user_id = request.cookies.get("bhvrSession")
|
||||
|
||||
session_cookie = request.cookies.get("bhvrSession")
|
||||
if not session_cookie:
|
||||
return jsonify({"message": "Endpoint not found"}), 404
|
||||
userid = session_manager.get_user_id(session_cookie)
|
||||
|
||||
logger.graylog_logger(level="info", handler="match_register",
|
||||
message=f"User {user_id} is registering to match {match_id}")
|
||||
message=f"User {userid} is registering to match {match_id}")
|
||||
return jsonify({"status": "OK"})
|
||||
except Exception as e:
|
||||
logger.graylog_logger(level="error", handler="match_register", message=e)
|
||||
|
|
@ -170,9 +180,14 @@ def match_quit(match_id):
|
|||
check = check_for_game_client("strict")
|
||||
if not check:
|
||||
return jsonify({"message": "Endpoint not found"}), 404
|
||||
user_id = request.cookies.get("bhvrSession")
|
||||
|
||||
session_cookie = request.cookies.get("bhvrSession")
|
||||
if not session_cookie:
|
||||
return jsonify({"message": "Endpoint not found"}), 404
|
||||
userid = session_manager.get_user_id(session_cookie)
|
||||
|
||||
logger.graylog_logger(level="info", handler="logging_queue",
|
||||
message=f"User {user_id} is quieting match {match_id}")
|
||||
message=f"User {userid} is quieting match {match_id}")
|
||||
return jsonify({"status": "OK"})
|
||||
except Exception as e:
|
||||
logger.graylog_logger(level="error", handler="logging_queue", message=e)
|
||||
|
|
@ -190,7 +205,11 @@ def match_create():
|
|||
if not check:
|
||||
return jsonify({"message": "Endpoint not found"}), 404
|
||||
|
||||
userid = request.cookies.get("bhvrSession")
|
||||
session_cookie = request.cookies.get("bhvrSession")
|
||||
if not session_cookie:
|
||||
return jsonify({"message": "Endpoint not found"}), 404
|
||||
userid = session_manager.get_user_id(session_cookie)
|
||||
|
||||
category = request.json.get("category")
|
||||
rank = request.json.get("rank")
|
||||
players_a = request.json.get("playersA")
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
import sys
|
||||
import time
|
||||
|
||||
from flask_definitions import *
|
||||
|
|
@ -62,11 +63,15 @@ def steam_login():
|
|||
{"success": [], "error": []}, "tokenId": "aaaa", "generated": 1687197541,
|
||||
"expire": 1887197541,
|
||||
"userId": "aaaa", "token": "aaaa"})
|
||||
return_val.set_cookie("bhvrSession", return_val.json["id"])
|
||||
session_cookie = session_manager.create_session("Debug_session")
|
||||
return_val.set_cookie("bhvrSession", session_cookie)
|
||||
return return_val
|
||||
try:
|
||||
|
||||
return_val = steam_login_function()
|
||||
return_val.set_cookie("bhvrSession", return_val.json["id"])
|
||||
session_cookie = session_manager.create_session(return_val.json["id"])
|
||||
print(f"Logged in with token: {session_cookie}", file=sys.stderr)
|
||||
return_val.set_cookie("bhvrSession", session_cookie)
|
||||
return return_val
|
||||
except Exception as e:
|
||||
logger.graylog_logger(level="error", handler="steam_login", message=e)
|
||||
|
|
@ -74,7 +79,8 @@ def steam_login():
|
|||
|
||||
elif user_agent.startswith("game=TheExit, engine=UE4, version="):
|
||||
return_val = steam_login_function()
|
||||
return_val.set_cookie("bhvrSession", return_val.json["id"])
|
||||
session_cookie = session_manager.create_session(return_val.json["id"])
|
||||
return_val.set_cookie("bhvrSession", session_cookie)
|
||||
return return_val
|
||||
|
||||
else:
|
||||
|
|
@ -89,7 +95,10 @@ def modifiers():
|
|||
check = check_for_game_client("strict")
|
||||
if not check:
|
||||
return jsonify({"message": "Endpoint not found"}), 404
|
||||
userid = request.cookies.get("bhvrSession")
|
||||
session_cookie = request.cookies.get("bhvrSession")
|
||||
if not session_cookie:
|
||||
return jsonify({"message": "Endpoint not found"}), 404
|
||||
userid = session_manager.get_user_id(session_cookie)
|
||||
steamid, token = mongo.get_data_with_list(login=userid, login_steam=False,
|
||||
items={"token", "steamid"}, server=mongo_host, db=mongo_db,
|
||||
collection=mongo_collection)
|
||||
|
|
@ -109,24 +118,28 @@ def moderation_check_username():
|
|||
if not check:
|
||||
return jsonify({"message": "Endpoint not found"}), 404
|
||||
try:
|
||||
session_cookie = request.cookies.get("bhvrSession")
|
||||
if not session_cookie:
|
||||
return jsonify({"message": "Endpoint not found"}), 404
|
||||
userid = session_manager.get_user_id(session_cookie)
|
||||
print(request.get_json())
|
||||
request_var = request.get_json()
|
||||
userid = request_var["userId"]
|
||||
username = request_var["username"]
|
||||
logger.graylog_logger(level="info", handler="moderation_check_username", message=request.get_json())
|
||||
|
||||
steamid, token = mongo.get_data_with_list(login=userid, login_steam=False,
|
||||
items={"token", "steamid"}, server=mongo_host, db=mongo_db,
|
||||
collection=mongo_collection)
|
||||
steamid = mongo.get_data_with_list(login=userid, login_steam=False,
|
||||
items={"steamid"}, server=mongo_host, db=mongo_db,
|
||||
collection=mongo_collection)
|
||||
if steamid is None:
|
||||
time.sleep(1)
|
||||
request_var = request.get_json()
|
||||
userid = request_var["userId"]
|
||||
username = request_var["username"]
|
||||
steamid, token = mongo.get_data_with_list(login=userid, login_steam=False,
|
||||
items={"token", "steamid"}, server=mongo_host, db=mongo_db,
|
||||
steamid = mongo.get_data_with_list(login=userid, login_steam=False,
|
||||
items={"steamid"}, server=mongo_host, db=mongo_db,
|
||||
collection=mongo_collection)
|
||||
|
||||
return jsonify({"Id": userid, "Token": token,
|
||||
return jsonify({"Id": userid, "Token": session_cookie,
|
||||
"Provider": {"ProviderName": username,
|
||||
"ProviderId": steamid}}) # CLIENT:{"userId": "ID-ID-ID-ID-SEE-AUTH", "username": "Name-Name-Name"}
|
||||
except TimeoutError:
|
||||
|
|
@ -234,7 +247,10 @@ def inventories():
|
|||
try:
|
||||
page = request.args.get('page', default=0, type=int)
|
||||
limit = request.args.get('limit', default=500, type=int)
|
||||
userid = request.cookies.get('bhvrSession')
|
||||
session_cookie = request.cookies.get("bhvrSession")
|
||||
if not session_cookie:
|
||||
return jsonify({"message": "Endpoint not found"}), 404
|
||||
userid = session_manager.get_user_id(session_cookie)
|
||||
if page == 0:
|
||||
return jsonify({"Code": 200, "Message": "OK", "Data": {"PlayerId": userid, "Inventory": [
|
||||
{"ObjectId": "56B7B6F6-473712D0-B7A2F992-BB2C16CD", "Quantity": 1, "LastUpdateAt": 16873773050},
|
||||
|
|
@ -283,7 +299,10 @@ def progression_groups():
|
|||
if not check:
|
||||
return jsonify({"message": "Endpoint not found"}), 404
|
||||
try:
|
||||
userid = request.headers.get("bhvrSession")
|
||||
session_cookie = request.cookies.get("bhvrSession")
|
||||
if not session_cookie:
|
||||
return jsonify({"message": "Endpoint not found"}), 404
|
||||
userid = session_manager.get_user_id(session_cookie)
|
||||
# This is the real code but need to build this first
|
||||
# return jsonify({"UserId": userid, "StateName": "Fstring", "Segment": "Fstring", "ObjectId": "Fstring",
|
||||
# "Version": 1111, "schemaVersion": 1111, "Data": {}})
|
||||
|
|
@ -310,21 +329,24 @@ def ban_status():
|
|||
check = check_for_game_client("strict")
|
||||
if not check:
|
||||
return jsonify({"message": "Endpoint not found"}), 404
|
||||
login_cookie = request.cookies.get("bhvrSession")
|
||||
session_cookie = request.cookies.get("bhvrSession")
|
||||
if not session_cookie:
|
||||
return jsonify({"message": "Endpoint not found"}), 404
|
||||
userid = session_manager.get_user_id(session_cookie)
|
||||
try:
|
||||
time.sleep(0.5)
|
||||
ban_data = mongo.get_data_with_list(login=login_cookie, login_steam=False,
|
||||
ban_data = mongo.get_data_with_list(login=userid, login_steam=False,
|
||||
items={"is_banned", "ban_reason", "ban_start", "ban_expire"},
|
||||
server=mongo_host, db=mongo_db, collection=mongo_collection)
|
||||
if ban_data == None:
|
||||
if ban_data is None:
|
||||
return jsonify({"status": "error"})
|
||||
elif ban_data["is_banned"] == True:
|
||||
elif ban_data["is_banned"]:
|
||||
return jsonify({"IsBanned": ban_data["is_banned"], "BanInfo": {"BanPeriod": 10,
|
||||
"BanReason": ban_data["ban_reason"],
|
||||
"BanStart": ban_data["ban_start"],
|
||||
"BanEnd": ban_data["ban_expire"],
|
||||
"Confirmed": False, "Pending": False}})
|
||||
elif ban_data["is_banned"] == False:
|
||||
elif not ban_data["is_banned"]:
|
||||
return jsonify({"IsBanned": ban_data["is_banned"], "BanInfo": {"BanPeriod": 0,
|
||||
"BanReason": "None",
|
||||
"BanStart": 0,
|
||||
|
|
@ -359,8 +381,12 @@ def wallet_currencies():
|
|||
check = check_for_game_client("strict")
|
||||
if not check:
|
||||
return jsonify({"message": "Endpoint not found"}), 404
|
||||
session_cookie = request.cookies.get("bhvrSession")
|
||||
if not session_cookie:
|
||||
return jsonify({"message": "Endpoint not found"}), 404
|
||||
userid = session_manager.get_user_id(session_cookie)
|
||||
try:
|
||||
currencies = mongo.get_data_with_list(login=request.cookies.get("bhvrSession"), login_steam=False,
|
||||
currencies = mongo.get_data_with_list(login=userid, login_steam=False,
|
||||
items={"currency_blood_cells", "currency_iron", "currency_ink_cells"},
|
||||
server=mongo_host, db=mongo_db, collection=mongo_collection)
|
||||
return jsonify({"List": [{"Currency": "CurrencyA", "Balance": currencies["currency_iron"],
|
||||
|
|
@ -400,7 +426,10 @@ def achievements_get():
|
|||
if not check:
|
||||
return jsonify({"message": "Endpoint not found"}), 404
|
||||
try:
|
||||
userid = request.cookies.get("bhvrSession")
|
||||
session_cookie = request.cookies.get("bhvrSession")
|
||||
if not session_cookie:
|
||||
return jsonify({"message": "Endpoint not found"}), 404
|
||||
userid = session_manager.get_user_id(session_cookie)
|
||||
return jsonify({"UserId": userid, "StateName": "", "Segment": "", "List": [
|
||||
{"ObjectId": "EFAB89E6465D1163D62A07B11048F2B6", "Version": 11, "SchemaVersion": 11, "Data": {}}
|
||||
]})
|
||||
|
|
@ -513,7 +542,7 @@ def extension_progression_init_or_get_groups():
|
|||
"SchemaVersion": 1.1,
|
||||
"Data": {"CharacterId": {"TagName": "Runner.Stalker"},
|
||||
"Equipment": ["Primary Weapon", "Bonus 1", "Bonus 2", "Perk 1",
|
||||
"Perk 2", "Ability01", "Ability02", "Ability03","Sidearm"],
|
||||
"Perk 2", "Ability01", "Ability02", "Ability03", "Sidearm"],
|
||||
"EquippedPerks": ["7CE5AFBF-459102E5-728DCDAA-6F88C0F1",
|
||||
"2DBF9B11-4B82A639-40936396-CBA68BCD"],
|
||||
"EquippedPowers": ["10A8C667-45801664-6E2EFA94-52E3141A",
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
from flask import Flask, jsonify, request, send_from_directory, abort, render_template, url_for
|
||||
from logic.global_handlers import check_for_game_client, load_config
|
||||
from logic.logging_handler import logger
|
||||
from logic.global_handlers import session_manager
|
||||
import json
|
||||
import os
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
from flask_definitions import *
|
||||
import yaml
|
||||
import time
|
||||
import uuid
|
||||
|
||||
|
||||
def _get_remote_ip():
|
||||
|
|
@ -45,3 +47,34 @@ def check_for_game_client(check_type="strict"):
|
|||
_get_remote_ip()
|
||||
return True
|
||||
|
||||
|
||||
class Session_Manager:
|
||||
def __init__(self):
|
||||
self.sessions = {}
|
||||
|
||||
def create_session(self, user_id):
|
||||
session_id = str(uuid.uuid4())
|
||||
expires = time.time() + 3600
|
||||
self.sessions[session_id] = {"session_id": session_id, "expires": expires, "user": user_id}
|
||||
return session_id
|
||||
|
||||
def get_user_id(self, session_id):
|
||||
if session_id not in self.sessions or self.sessions[session_id]["expires"] < time.time():
|
||||
return 401
|
||||
self.clean_sessions()
|
||||
self.extend_session(session_id)
|
||||
return self.sessions[session_id]["user"]
|
||||
|
||||
def extend_session(self, session_id):
|
||||
self.sessions[session_id]["expires"] = time.time() + 3600
|
||||
|
||||
def clean_sessions(self):
|
||||
current_time = time.time()
|
||||
if self.sessions == {}:
|
||||
return
|
||||
expired_sessions = [session_id for session_id, data in self.sessions.items() if data["expires"] < current_time]
|
||||
for session_id in expired_sessions:
|
||||
self.sessions.pop(session_id)
|
||||
|
||||
|
||||
session_manager = Session_Manager()
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ class Mongo:
|
|||
def get_data_with_list(self, login, login_steam, items, server, db, collection):
|
||||
try:
|
||||
document = {}
|
||||
login = str(login)
|
||||
login = f"{login}"
|
||||
self.dyn_server = server
|
||||
self.dyn_db = db
|
||||
self.dyn_collection = collection
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user