Guest User

ini

a guest
Mar 22nd, 2018
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.67 KB | None | 0 0
  1. from flask import Flask, request, render_template, abort
  2. import os, requests
  3.  
  4. app = Flask(__name__)
  5.  
  6. class user:
  7.     def __init__(self, username, password):
  8.         self.username = username
  9.         self.__password = password
  10.         self.files = []
  11.     def getPass(self):
  12.         return self.__password
  13.  
  14. users = {}
  15.  
  16. users["admin"] = user("admin", os.environ["FLAG"])
  17.  
  18. @app.errorhandler(500)
  19. def custom500(error):
  20.     return str(error), 500
  21.  
  22. @app.route("/", methods=["GET", "POST"])
  23. def mainpage():
  24.     if request.method == "POST":
  25.         if request.form["action"] == "Login":
  26.             if request.form["username"] in users:
  27.                 if request.form["password"] == users[request.form["username"]].getPass():
  28.                     return render_template("index.html", user=users[request.form["username"]])
  29.                 return "wrong password"
  30.             return "user does not exist"
  31.         elif request.form["action"] == "Signup":
  32.             if request.form["username"] not in users:
  33.                 users[request.form["username"]] = user(request.form["username"], request.form["password"])
  34.                 return render_template("index.html", user=users[request.form["username"]])
  35.             else:
  36.                 return "user already exists"
  37.         elif request.form["action"] == "Add File":
  38.             return addfile()
  39.     return render_template("loggedout.html")
  40.  
  41. #beta feature for viewing info about other users - still testing
  42. @app.route("/user/<username>", methods=['POST'])
  43. def getInfo(username):
  44.     val = getattr(users[username], request.form['field'], None)
  45.     if val != None: return val
  46.     else: return "error"
  47.  
  48. @app.route("/files/<path:file>", methods=["GET"])
  49. def getFile(file):
  50.     if "index.py" in file:
  51.         return "no! bad user! bad!"
  52.     return open(file, "rb").read()
  53.  
  54. def addfile():
  55.     if users[request.form["username"]].getPass() == request.form["password"]:
  56.         if request.form['url'][-1] == "/": downloadurl = request.form['url'][:-1]
  57.         else: downloadurl = request.form['url']
  58.         if downloadurl.split("/")[-1] in os.listdir("."):
  59.             return "file already exists"
  60.         file = requests.get(downloadurl, stream=True)
  61.         f = open(downloadurl.split("/")[-1], "wb")
  62.         first = True
  63.         for chunk in file.iter_content(chunk_size=1024*512):
  64.             if not first: break
  65.             f.write(chunk)
  66.             first = False
  67.         f.close()
  68.         users[request.form["username"]].files.append(downloadurl.split("/")[-1])
  69.         return render_template("index.html", user=users[request.form["username"]])
  70.     return "bad password"
  71.  
  72. if __name__ == "__main__": app.run(host="0.0.0.0")
Add Comment
Please, Sign In to add comment