-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.py
81 lines (62 loc) · 1.84 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import web
import map
import re
import base64
urls = (
'/', 'Index',
'/login','Login',
'/game','gameengine'
)
app = web.application(urls, globals())
# little hack so the debug mode works with session
if web.config.get('_session') is None:
store = web.session.DiskStore('sessions')
session = web.session.Session(app,store,
initializer={'room': None})
web.config._session = session
else:
session = web.config._session
render = web.template.render('templates/', base="layout")
allowed = (
('jon','pass1'),
('tom','pass2')
)
class Index(object):
def GET(self):
if web.ctx.env.get('HTTP_AUTHORIZATION') is not None:
return 'this is the index page'
else:
raise web.seeother('/login')
class Login(object):
def GET(self):
auth = web.ctx.env.get('HTTP_AUTHORIZATION')
authreq = False
if auth is None:
authreq = True
else:
auth = re.sub('^Basic','',auth)
username,password = base64.decodestring(auth).split(':')
if (username,password) in allowed:
session.room = map.START
web.seeother('/game')
else:
authreq = True
if authreq:
web.header('www-Authenticate', 'Basic realm = "Auth example"')
web.ctx.status = '401 Unauthorized'
return
class gameengine(object):
def GET(self):
if session.room:
return render.showroom(room=session.room)
else:
#why is there?do you need it?
return render.you_died()
def POST(self):
form = web.input(action=None)
#there is a bug here
if session.room and form.action:
session.room = session.room.go(form.action)
web.seeother("/game")
if __name__ == "__main__":
app.run()