Advertisement
Guest User

Untitled

a guest
Oct 21st, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.92 KB | None | 0 0
  1. import json
  2. import os
  3.  
  4. from flask import Flask, session, g
  5. from flask import render_template
  6. from flask import request
  7. from flask import url_for, send_from_directory
  8. from werkzeug.utils import secure_filename, redirect
  9.  
  10. UPLOAD_FOLDER = 'storage'
  11. ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])
  12.  
  13. app = Flask(__name__)
  14. app.secret_key = b'0293jr i(UHoiawu hft923XDdededededededekakademonaXD'
  15. app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
  16. # json data
  17. user_data = [];
  18. with open('static/userdata/userlist.json') as json_data:
  19.     user_data = json.load(json_data)
  20.     user_data = user_data['users']
  21.  
  22.  
  23. def allowed_file(filename):
  24.     return '.' in filename and \
  25.            filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
  26.  
  27.  
  28. @app.route('/kolendom/login', methods=["GET", "POST"])
  29. def login():
  30.     if request.method == 'POST':
  31.         login = request.form.get('username')
  32.         password = request.form.get('password')
  33.         if login not in user_data:
  34.             return render_template('login.html', login=True)
  35.         if user_data[login] == password:
  36.             session['user'] = login
  37.             return redirect(url_for('user_panel'))
  38.         else:
  39.             return render_template('login.html', password=True)
  40.     else:
  41.         return render_template('login.html')
  42.  
  43.  
  44. @app.route('/kolendom/userpanel', methods=["GET"])
  45. def user_panel():
  46.     if 'user' in session:
  47.         filenames = [f for f in os.listdir('storage/' + session['user']) if
  48.                      os.path.isfile(os.path.join('storage/' + session['user'], f))]
  49.         if len(filenames) == 5:
  50.             return render_template('index.html', filenames=filenames, storage_full=True)
  51.         return render_template('index.html', filenames=filenames)
  52.  
  53.  
  54. @app.route('/kolendom/upload', methods=['POST'])
  55. def upload_file():
  56.     file = request.files['file']
  57.     if file and allowed_file(file.filename):
  58.         filename = secure_filename(file.filename)
  59.         directory = app.config['UPLOAD_FOLDER'] + '/' + session['user'] + '/' + filename
  60.         file.save(directory)
  61.         return redirect(url_for('user_panel'))
  62.     else:
  63.         return redirect(url_for('user_panel'))
  64.  
  65.  
  66. @app.route('/kolendom/download/<path:filename>', methods=['GET'])
  67. def download(filename):
  68.     if 'user' in session:
  69.         directory = app.config['UPLOAD_FOLDER'] + '/' + session['user']
  70.         return send_from_directory(directory, filename=filename, as_attachment=True)
  71.     return redirect(url_for('login'))
  72.  
  73. # @app.before_request
  74. # def before_request():
  75. #     g.user = None
  76. #     if 'user' in session:
  77. #         g.user = session['user']
  78. # logout
  79.  
  80. @app.route("/kolendom/logout")
  81. def logout():
  82.     session.pop(session['user'], None)
  83.     resp = app.make_response(render_template('logout.html'))
  84.     resp.set_cookie('token', expires=0)
  85.     return resp
  86.  
  87.  
  88. if __name__ == '__main__':
  89.     app.run(host='127.0.0.1', port=6387, debug=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement