mirror of
https://github.com/wolfswolke/DeathGarden_API_Rebirth.git
synced 2026-03-21 17:54:09 -05:00
Added a BAN Admin tool for easy usage as EPOCH has been used wrong often.
This commit is contained in:
parent
6999311c42
commit
31915f1a5e
|
|
@ -193,6 +193,48 @@ def tick_circle():
|
|||
logger.graylog_logger(level="error", handler="general-tick-circle-png", message=e)
|
||||
|
||||
|
||||
@app.route("/admin/ban", methods=["POST", "GET"])
|
||||
def admin_ban():
|
||||
if request.method == "POST":
|
||||
login_token = sanitize_input(request.form.get("login_token"))
|
||||
if login_token is None:
|
||||
return jsonify({"status": "error", "message": "No api token found"}), 401
|
||||
if login_token not in allowed_tokens:
|
||||
ip = check_for_game_client("remote")
|
||||
logger.graylog_logger(level="error", handler="web_admin_ban", message={"IP": ip, "message": "Invalid api token"})
|
||||
error_message = "Invalid api token"
|
||||
return render_template('ban.html', error=error_message)
|
||||
chosen_date = sanitize_input(request.form.get("datetime"))
|
||||
ban_reason = sanitize_input(request.form.get("ban_reason"))
|
||||
steam_id = sanitize_input(request.form.get("steam_id"))
|
||||
if not chosen_date or not ban_reason or not steam_id:
|
||||
error_message = "Please fill out all fields."
|
||||
return render_template('ban.html', error=error_message)
|
||||
try:
|
||||
create_epoch, expire_epoch = create_ban_time(chosen_date)
|
||||
except Exception as e:
|
||||
logger.graylog_logger(level="error", handler="web_admin_ban", message=e)
|
||||
error_message = "An Error occurred. Are you sure the date is correct?"
|
||||
return render_template('ban.html', error=error_message)
|
||||
ret = mongo.write_data_with_list(login=steam_id,
|
||||
login_steam=True,
|
||||
items_dict={"is_banned": True,
|
||||
"ban_reason": ban_reason,
|
||||
"ban_start": create_epoch,
|
||||
"ban_expire": expire_epoch})
|
||||
if ret:
|
||||
success_message = "User banned successfully."
|
||||
return render_template('ban.html', success=success_message)
|
||||
else:
|
||||
error_message = "An Error occurred. Are you sure the SteamID is correct?"
|
||||
return render_template('ban.html', error=error_message)
|
||||
|
||||
elif request.method == "GET":
|
||||
return render_template('ban.html')
|
||||
else:
|
||||
return abort(405)
|
||||
|
||||
|
||||
@app.route("/debug", methods=["Get"])
|
||||
def debug_root():
|
||||
check_for_game_client("soft")
|
||||
|
|
@ -263,7 +305,8 @@ def debug_mirrors_write():
|
|||
return jsonify({"status": "error", "message": "No Steamid found."}), 400
|
||||
|
||||
logger.graylog_logger(level="info", handler="logging_debug_mirror_write",
|
||||
message={"IP": check_for_game_client("remote"), "steamid": steam_user_id, "data": data_b})
|
||||
message={"IP": check_for_game_client("remote"), "steamid": steam_user_id,
|
||||
"data": data_b})
|
||||
|
||||
return_val = mongo.write_data_with_list(login=steam_user_id, login_steam=True, items_dict=data_b)
|
||||
|
||||
|
|
@ -373,7 +416,8 @@ def updater_files():
|
|||
@app.route("/updater/files/pak/", methods=["GET"])
|
||||
def updater_pak():
|
||||
try:
|
||||
return send_from_directory(os.path.join(app.root_path, 'files'), 'TheExitRebirthBackendAPI-WindowsNoEditor_P.pak')
|
||||
return send_from_directory(os.path.join(app.root_path, 'files'),
|
||||
'TheExitRebirthBackendAPI-WindowsNoEditor_P.pak')
|
||||
except TimeoutError:
|
||||
return jsonify({"status": "error"})
|
||||
except Exception as e:
|
||||
|
|
@ -383,7 +427,8 @@ def updater_pak():
|
|||
@app.route("/updater/files/sig/", methods=["GET"])
|
||||
def updater_sig():
|
||||
try:
|
||||
return send_from_directory(os.path.join(app.root_path, 'files'), 'TheExitRebirthBackendAPI-WindowsNoEditor_P.sig')
|
||||
return send_from_directory(os.path.join(app.root_path, 'files'),
|
||||
'TheExitRebirthBackendAPI-WindowsNoEditor_P.sig')
|
||||
except TimeoutError:
|
||||
return jsonify({"status": "error"})
|
||||
except Exception as e:
|
||||
|
|
@ -497,7 +542,7 @@ def download(file_id):
|
|||
#file = file_handler.get_file(file_id)
|
||||
file = None
|
||||
if file is None:
|
||||
return jsonify({"status": "error", "message": "File not found."}), 404
|
||||
return jsonify({"status": "error", "message": "File not found."}), 404
|
||||
return file
|
||||
except TimeoutError:
|
||||
return jsonify({"status": "error"})
|
||||
|
|
@ -532,4 +577,4 @@ def sha256(file_id):
|
|||
except TimeoutError:
|
||||
return jsonify({"status": "error"})
|
||||
except Exception as e:
|
||||
logger.graylog_logger(level="error", handler="web-sha256", message=e)
|
||||
logger.graylog_logger(level="error", handler="web-sha256", message=e)
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ from logic.global_handlers import check_for_game_client
|
|||
from logic.global_handlers import sanitize_input
|
||||
from logic.mongodb_handler import mongo
|
||||
from logic.webhook_handler import discord_webhook
|
||||
from logic.time_handler import get_lifetime
|
||||
from logic.time_handler import get_lifetime, create_ban_time
|
||||
# from logic.challenge_handler import get_progression_batch, update_progression_batch, get_time_based_challenges
|
||||
from logic.hash_handler import hash_handler
|
||||
from logic.challenge_handler_new import new_challenge_handler, get_challenge_ids_from_inventory
|
||||
|
|
|
|||
|
|
@ -45,3 +45,12 @@ def get_lifetime(challenge_type):
|
|||
except Exception as e:
|
||||
logger.error("Error in time_handler -> " + str(e))
|
||||
return None
|
||||
|
||||
|
||||
def create_ban_time(date):
|
||||
date_string = date.replace('%3A', ':')
|
||||
date_object = datetime.datetime.strptime(date_string, "%Y-%m-%dT%H:%M")
|
||||
epoch_time = int(date_object.timestamp())
|
||||
|
||||
current_epoch_time = int(datetime.datetime.now().timestamp())
|
||||
return current_epoch_time, epoch_time
|
||||
|
|
|
|||
98
src/templates/ban.html
Normal file
98
src/templates/ban.html
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Admin Ban Tool</title>
|
||||
<style>
|
||||
body {
|
||||
background-color: #333;
|
||||
color: white;
|
||||
font-family: Arial, sans-serif;
|
||||
}
|
||||
|
||||
form {
|
||||
width: 50%;
|
||||
margin: 0 auto;
|
||||
background-color: #444;
|
||||
padding: 20px;
|
||||
border-radius: 10px;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
|
||||
label {
|
||||
display: block;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
input[type="text"],
|
||||
input[type="datetime-local"] {
|
||||
width: 100%;
|
||||
padding: 8px;
|
||||
margin-bottom: 15px;
|
||||
border-radius: 5px;
|
||||
border: 1px solid #666;
|
||||
background-color: #555;
|
||||
color: white;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
input[type="submit"] {
|
||||
background-color: #007bff;
|
||||
color: white;
|
||||
padding: 10px 20px;
|
||||
border: none;
|
||||
border-radius: 5px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
input[type="submit"]:hover {
|
||||
background-color: #0056b3;
|
||||
}
|
||||
|
||||
.success {
|
||||
background-color: #28a745;
|
||||
color: white;
|
||||
padding: 10px;
|
||||
margin-bottom: 15px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.error {
|
||||
background-color: #dc3545;
|
||||
color: white;
|
||||
padding: 10px;
|
||||
margin-bottom: 15px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
{% if success %}
|
||||
<div class="success">
|
||||
{{ success }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if error %}
|
||||
<div class="error">
|
||||
{{ error }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<h2 style="text-align: center;">Administration Tool: Ban User</h2>
|
||||
<form method="POST">
|
||||
<label for="datetime">Ban end:</label>
|
||||
<input type="datetime-local" id="datetime" name="datetime" required><br><br>
|
||||
|
||||
<label for="ban_reason">Ban Reason:</label>
|
||||
<input type="text" id="ban_reason" name="ban_reason" required><br><br>
|
||||
|
||||
<label for="login_token">API Token:</label>
|
||||
<input type="text" id="login_token" name="login_token" required><br><br>
|
||||
|
||||
<label for="steam_id">Steam ID:</label>
|
||||
<input type="text" id="steam_id" name="steam_id" required><br><br>
|
||||
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Reference in New Issue
Block a user