· 8 years ago · Jan 22, 2018, 08:44 PM
1# -*- coding: utf-8 -*-
2from flask import (Flask, request, url_for, redirect, session,
3 render_template, abort, flash)
4from unwrap import UnWRAP
5
6SECRET_KEY = "[REDACTED]"
7
8app = Flask(__name__)
9app.debug = True
10app.secret_key = SECRET_KEY # too lazy to make a separate key
11
12unwrap = UnWRAP(SECRET_KEY)
13
14def de_ipv6(address):
15 # ep.io's servers add a ::ffff: on front of the IPv4 address
16 # this gets rid of it
17 if address.startswith("::ffff:"):
18 return address[7:]
19 return address
20
21
22@app.route('/')
23def index():
24 return render_template("index.html", username=session.get("username"))
25
26
27@app.route('/login')
28def login():
29 url = unwrap.build_url(url_for("accept", _external=True),
30 de_ipv6(request.remote_addr))
31 return redirect(url, 303)
32
33
34@app.route('/accept')
35def accept():
36 username, ip = unwrap.verify(request.args)
37 if username is None or ip != de_ipv6(request.remote_addr):
38 flash(u"There was a problem receiving your credentials from UnWRAP. "
39 "Please try again.")
40 else:
41 session['username'] = username
42 flash(u"Welcome, %s! You have been logged in." % username)
43 print "%s just logged in." % username
44 return redirect(url_for('index'))
45
46@app.route('/logout')
47def logout():
48 if 'username' in session:
49 del session['username']
50 flash(u"You were logged out.")
51 return redirect(url_for('index'))
52
53
54if __name__ == '__main__':
55 app.run(debug=True)