]> git.ipfire.org Git - people/shoehn/ipfire.org.git/blame - www/webapp/__init__.py
Merge branch 'planet' into next
[people/shoehn/ipfire.org.git] / www / webapp / __init__.py
CommitLineData
81675874 1#/usr/bin/python
2
3import os.path
8ccd2ff0
MT
4import simplejson
5
6simplejson._default_decoder = simplejson.JSONDecoder(encoding="latin-1")
81675874 7
8import tornado.locale
9import tornado.options
10import tornado.web
11
d0d074e0 12from db import HashDatabase, UserDatabase
8ccd2ff0
MT
13from handlers import *
14from ui_modules import *
81675874 15
16BASEDIR = os.path.join(os.path.dirname(__file__), "..")
17
18tornado.locale.load_translations(os.path.join(BASEDIR, "translations"))
19tornado.options.enable_pretty_logging()
20
21class Application(tornado.web.Application):
22 def __init__(self):
81675874 23 settings = dict(
24 cookie_secret = "aXBmaXJlY29va2llc2VjcmV0Cg==",
25 #debug = True,
26 gzip = True,
d0d074e0 27 login_url = "/login",
81675874 28 template_path = os.path.join(BASEDIR, "templates"),
29 ui_modules = {
30 "Build" : BuildModule,
31 "Menu" : MenuModule,
32 "MenuItem" : MenuItemModule,
33 "NewsItem" : NewsItemModule,
d0d074e0 34 "PlanetEntry" : PlanetEntryModule,
81675874 35 "ReleaseItem" : ReleaseItemModule,
36 "SidebarBanner" : SidebarBannerModule,
37 "SidebarItem" : SidebarItemModule,
38 "SidebarRelease" : SidebarReleaseModule,
39 },
40 xsrf_cookies = True,
41 )
5cf160e0 42
ae0228e1
MT
43 tornado.web.Application.__init__(self, **settings)
44
4cb3de1c
MT
45 # Initialize database connections
46 self.hash_db = HashDatabase()
d0d074e0
MT
47 self.planet_db = tornado.database.Connection("172.28.1.150", "planet", user="planet")
48 self.user_db = UserDatabase()
4cb3de1c 49
ae0228e1
MT
50 self.settings["static_path"] = static_path = os.path.join(BASEDIR, "static")
51 static_handlers = [
52 (r"/static/(.*)", tornado.web.StaticFileHandler, dict(path = static_path)),
53 (r"/(favicon\.ico)", tornado.web.StaticFileHandler, dict(path = static_path)),
54 (r"/(robots\.txt)", tornado.web.StaticFileHandler, dict(path = static_path)),
55 ]
56
d4dc517c 57 self.add_handlers(r"(dev|www)\.ipfire\.(at|org)", [
81675874 58 # Entry sites that lead the user to index
59 (r"/", MainHandler),
60 (r"/[A-Za-z]{2}/?", MainHandler),
61 #
62 (r"/[A-Za-z]{2}/index", IndexHandler),
63 (r"/[A-Za-z]{2}/news", NewsHandler),
64 (r"/[A-Za-z]{2}/builds", BuildHandler),
81675874 65 # Download sites
66 (r"/[A-Za-z]{2}/downloads?", DownloadHandler),
67 (r"/[A-Za-z]{2}/downloads?/all", DownloadAllHandler),
68 (r"/[A-Za-z]{2}/downloads?/development", DownloadDevelopmentHandler),
3add293a 69 (r"/[A-Za-z]{2}/downloads?/mirrors", DownloadMirrorHandler),
81675874 70 (r"/[A-Za-z]{2}/downloads?/torrents", DownloadTorrentHandler),
e48d9ae6
MT
71 # RSS feed
72 (r"/([A-Za-z]{2})/news.rss", RSSHandler),
73 (r"/data/feeds/main-([A-Za-z]{2}).rss", RSSHandler),
81675874 74 # Always the last rule
75 (r"/[A-Za-z]{2}/(.*)", StaticHandler),
ae0228e1 76 ] + static_handlers)
81675874 77
5cf160e0 78 # download.ipfire.org
ae0228e1 79 self.add_handlers(r"download\.ipfire\.org", [
3add293a
MT
80 (r"/", tornado.web.RedirectHandler, { "url" : "http://www.ipfire.org/" }),
81 (r"/(favicon\.ico)", tornado.web.StaticFileHandler, dict(path = static_path)),
82 (r"/(.*)", DownloadFileHandler),
83 ])
5cf160e0 84
d0d074e0
MT
85 # planet.ipfire.org
86 self.add_handlers(r"planet\.ipfire\.org", [
87 (r"/", MainHandler),
88 (r"/[A-Za-z]{2}/?", MainHandler),
89 (r"/[A-Za-z]{2}/index", PlanetMainHandler),
90 (r"/post/([A-Za-z0-9_-]+)", PlanetPostingHandler),
91 (r"/user/([a-z0-9]+)", PlanetUserHandler),
92 ] + static_handlers)
93
5cf160e0 94 # source.ipfire.org
ae0228e1 95 self.add_handlers(r"source\.ipfire\.org", [
5cf160e0 96 (r"/", MainHandler),
fdb59cb9 97 (r"/[A-Za-z]{2}/?", MainHandler),
e2b0b0e4 98 (r"/[A-Za-z]{2}/index", SourceHandler),
7c1dc100 99 (r"(/source.*|/toolchains/.*)", SourceDownloadHandler),
ae0228e1 100 ] + static_handlers)
5cf160e0
MT
101
102 # torrent.ipfire.org
ae0228e1 103 self.add_handlers(r"torrent\.ipfire\.org", [
5cf160e0 104 (r"/", MainHandler),
fdb59cb9 105 (r"/[A-Za-z]{2}/?", MainHandler),
5cf160e0 106 (r"/[A-Za-z]{2}/index", DownloadTorrentHandler),
ae0228e1 107 ] + static_handlers)
5cf160e0
MT
108
109 # tracker.ipfire.org
ae0228e1 110 self.add_handlers(r"tracker\.ipfire\.org", [
5cf160e0 111 (r"/", MainHandler),
fdb59cb9 112 (r"/[A-Za-z]{2}/?", MainHandler),
5cf160e0 113 (r"/[A-Za-z]{2}/index", DownloadTorrentHandler),
43d991f6 114 (r"/a.*", TrackerAnnounceHandler),
e2afbd6a 115 (r"/scrape", TrackerScrapeHandler),
ae0228e1
MT
116 ] + static_handlers)
117
d0d074e0
MT
118 # admin.ipfire.org
119 self.add_handlers(r"admin\.ipfire\.org", [
120 (r"/", AdminIndexHandler),
121 (r"/login", AuthLoginHandler),
122 (r"/logout", AuthLogoutHandler),
123 # Accounts
124 (r"/accounts", AdminAccountsHandler),
125 (r"/accounts/edit/([0-9]+)", AdminAccountsEditHandler),
126 # Planet
127 (r"/planet", AdminPlanetHandler),
128 (r"/planet/compose", AdminPlanetComposeHandler),
129 (r"/planet/edit/([0-9]+)", AdminPlanetEditHandler),
130 # API
131 (r"/api/planet/render", AdminApiPlanetRenderMarkupHandler)
132 ] + static_handlers)
133
ae0228e1 134 # ipfire.org
3add293a 135 self.add_handlers(r".*", [
ae0228e1 136 (r".*", tornado.web.RedirectHandler, { "url" : "http://www.ipfire.org" })
5cf160e0 137 ])
3add293a
MT
138
139 def __del__(self):
140 from mirrors import mirrors
141 mirrors.stop()