tuiHoneyPot

front and back end of my TUI honeypot
Log | Files | Refs | README

userpanel.py (1941B)


      1 from flask import Blueprint, render_template, request, abort, redirect, send_file, url_for
      2 from blueprints.utils import crypto
      3 from werkzeug.utils import secure_filename
      4 from . import util
      5 import logging
      6 
      7 user_bp = Blueprint('userpanel', __name__, template_folder='templates', static_folder='static',
      8                     static_url_path='/static/userpanel')
      9 
     10 
     11 @user_bp.route("/", methods=["GET"])
     12 @crypto.require_token
     13 def index(jwt_data):
     14     logging.info(f"User {jwt_data['username']} accessed user panel")
     15     return render_template("userpanel/index.html", userData=jwt_data)
     16 
     17 
     18 @user_bp.route("/upload", methods=["POST"])
     19 @crypto.require_token
     20 def upload(jwt_data):
     21     file = request.files["picture"]
     22     filename = secure_filename(file.filename)
     23 
     24     try:
     25         if file.filename == "" or not util.allowed_extension(filename):
     26             logging.warning(f"User {jwt_data['username']} tried to upload an invalid file")
     27             return abort(400)
     28     except ValueError:
     29         logging.error(f"ValueError exception got triggered by user {jwt_data['username']} while uploading a file")
     30         return abort(400)
     31 
     32     try:
     33         extension = util.get_file_extension(filename)
     34     except ValueError:
     35         logging.error(f"ValueError exception got triggered by user {jwt_data['username']} while uploading a file")
     36         return abort(400)
     37 
     38     file.save("uploads/pictures/custom/" + jwt_data["username"] + "." + extension)
     39     logging.info(f"User {jwt_data['username']} uploaded a file")
     40     return redirect(url_for("userpanel.index"), code=302)
     41 
     42 @user_bp.route("/image/<username>")
     43 @crypto.require_token
     44 def get_image(username, jwt_data):
     45     if jwt_data["username"] != username:
     46         logging.warning(f"User {jwt_data['username']} tried to access the image of user {username}")
     47         return abort(403)
     48 
     49     logging.info(f"User {jwt_data['username']} accessed their image")
     50     return send_file(util.get_user_picture(username))