def withdraw_(): check = wallet.check() if not check: return redirect("/") if request.method == "POST": if request.form.get("email"): email = request.form['email'] check = db.members.find_one({"email":email}) if check: flash("Email already exists in our database.") return redirect("/account/edit") db.members.update({"email":session['login']}, {"$set":{"email":email}}) flash("Email updated successfully!") return redirect("/account/edit") if request.form.get("password"): password = protect.protect(request.form['password']) confirm = protect.protect(request.form['verifypassword']) if password != confirm: flash("Passwords do not match.") return redirect("/account/edit") else: db.members.update({"email":session['login']}, {"$set":{"password":password}}) flash("Password updated successfully.") return redirect("/account/edit") return render_template("edit.html", user=check, admin=check['admin'])
def register_(): if "login" in session: return redirect("/") if request.method == "POST": email = request.form['email'] password = protect.protect(request.form['password']) confirm = protect.protect(request.form['confirmpassword']) rsname = request.form['rsname'] check = db.members.find_one({"email":email}) if check: flash("Email already taken.") return redirect("/register/") elif db.members.find_one({"rsname":rsname}): flash("Runescape name already taken.") return redirect("/register/") elif password != confirm: flash("Passwords do not match.") return redirect("/register/") else: db.members.insert({"email":email, "password":password, "rsname":rsname, "wallet":0, "admin":False, "verified":False}) session['login'] = email return redirect("/") return render_template("register.html")
def save(g, mode='B'): """ Save the program to stream g in (A)scii, (B)ytecode or (P)rotected mode. """ if state.basic_state.protected and mode != 'P': raise error.RunError(5) current = state.basic_state.bytecode.tell() # skip first \x00 in bytecode, replace with appropriate magic number state.basic_state.bytecode.seek(1) if mode == 'B': # binary bytecode mode g.write('\xff') last = '' while True: nxt = state.basic_state.bytecode.read(1) if not nxt: break g.write(nxt) last = nxt if last != '\x1a': g.write('\x1a') elif mode == 'P': # protected mode g.write('\xfe') protect.protect(state.basic_state.bytecode, g) g.write('\x1a') else: # ascii mode while True: current_line, output, _ = tokenise.detokenise_line(state.basic_state.bytecode) if current_line == -1 or (current_line > max_list_line): break output = str(output) if utf8_files: output = unicodepage.UTF8Converter().to_utf8(output) g.write(output + '\r\n') # close with ^Z if we're in GW-BASIC text file mode to match GW-BASIC files exactly # don't do this in UTF8-mode as it's a bit odd to have a legacy end-of-file marker in a UTF8 text. if not utf8_files: g.write('\x1a') state.basic_state.bytecode.seek(current) g.close()
def save(g): """ Save the program to stream g in (A)scii, (B)ytecode or (P)rotected mode. """ mode = g.filetype if state.basic_state.protected and mode != 'P': raise error.RunError(error.IFC) current = state.basic_state.bytecode.tell() # skip first \x00 in bytecode state.basic_state.bytecode.seek(1) if mode == 'B': # binary bytecode mode g.write(state.basic_state.bytecode.read()) elif mode == 'P': # protected mode protect.protect(state.basic_state.bytecode, g) else: # ascii mode while True: current_line, output, _ = tokenise.detokenise_line(state.basic_state.bytecode) if current_line == -1 or (current_line > max_list_line): break g.write_line(str(output)) state.basic_state.bytecode.seek(current)
def save(g): """ Save the program to stream g in (A)scii, (B)ytecode or (P)rotected mode. """ mode = g.filetype if state.basic_state.protected and mode != 'P': raise error.RunError(error.IFC) current = state.basic_state.bytecode.tell() # skip first \x00 in bytecode state.basic_state.bytecode.seek(1) if mode == 'B': # binary bytecode mode g.write(state.basic_state.bytecode.read()) elif mode == 'P': # protected mode protect.protect(state.basic_state.bytecode, g) else: # ascii mode while True: current_line, output, _ = tokenise.detokenise_line( state.basic_state.bytecode) if current_line == -1 or (current_line > max_list_line): break g.write_line(str(output)) state.basic_state.bytecode.seek(current)
def login_(): if "session" in session: return redirect("/") if request.method == "POST": email = request.form['email'] password = protect.protect(request.form['password']) check = db.members.find_one({"email":email, "password":password}) if not check: flash("Invalid Login") return redirect("/login/") else: session['login'] = email return redirect("/") return render_template("login.html")
def post(): if not check_login(): if request.method == "POST": username = request.form['username'] password = protect.protect(request.form['password']) if db.find("admin", {"username":username, "password":password}): session['login'] = username return redirect("/post/") else: return "Login Failed" return render_template("login.html", config=config.data) else: if request.method == "POST": title = request.form['title'] post = Markup(request.form['post'].replace("\n", "<br/>").replace("\r", " ")) db.insert("posts", {"title":title, "post":post, "by":config.data['name'], "date":"{0}/{1}/{2}".format(datetime.datetime.now().timetuple()[1], datetime.datetime.now().timetuple()[2], datetime.datetime.now().timetuple()[0])}) return redirect("/") return render_template("post.html", config=config.data)
import landerdb import protect import getpass data = { "blog_title":"Frankie's Blog", "blog_description":"", "admin":"frankie", "name":"Frankie", "db":"ambel.db", "debug":True, } if __name__ == "__main__": db = landerdb.Connect(data['db']) db.insert("admin", {"username":data['admin'], "password":protect.protect(getpass.getpass("Admin Password: "******"name":data['name']}) db.insert("posts", {}) db.remove("posts", {})