]> git.ipfire.org Git - people/ms/webapp.git/blob - webapp.py
Initial import.
[people/ms/webapp.git] / webapp.py
1 #!/usr/bin/python
2
3 import os
4 import socket
5 import time
6
7 import tornado.httpserver
8 import tornado.ioloop
9 import tornado.web
10
11 BASEDIR = os.path.dirname(__file__)
12
13 settings = {
14 "static_path" : os.path.join(BASEDIR, "static"),
15 "template_path" : os.path.join(BASEDIR, "templates"),
16 "login_url" : "/login",
17 "cookie_secret" : "123456789",
18 "xsrf_cookies" : True,
19 }
20
21 class BaseHandler(tornado.web.RequestHandler):
22 def get_current_user(self):
23 return self.get_secure_cookie("user")
24
25 def footer(self):
26 return "%s" % socket.gethostname()
27
28
29 class MainHandler(BaseHandler):
30 def get(self):
31 if not self.current_user:
32 self.redirect("/login")
33 return
34
35 self.render("template.html", title="Testsite", slogan="Security now!",
36 footer=self.footer(), user=self.current_user)
37
38
39 class LoginHandler(BaseHandler):
40 def get(self):
41 self.render("login.html", footer=self.footer())
42
43 def post(self):
44 self.set_secure_cookie("user", self.get_argument("user"))
45 self.redirect("/")
46
47 class LogoutHandler(BaseHandler):
48 def get(self):
49 self.clear_cookie("user")
50 self.render("logout.html", footer=self.footer())
51
52
53 application = tornado.web.Application([
54 (r"/", MainHandler),
55 (r"/login", LoginHandler),
56 (r"/logout", LogoutHandler),
57 ], **settings)
58
59 if __name__ == "__main__":
60 http_server = tornado.httpserver.HTTPServer(application)
61 http_server.listen(8080)
62 tornado.ioloop.IOLoop.instance().start()