Guest User

Untitled

a guest
Apr 3rd, 2018
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.61 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