]> git.ipfire.org Git - people/shoehn/ipfire.org.git/blame - www/webapp/__init__.py
First checkin of torrent tracker feature.
[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
4cb3de1c 12from db import HashDatabase
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,
81675874 27 template_path = os.path.join(BASEDIR, "templates"),
28 ui_modules = {
29 "Build" : BuildModule,
30 "Menu" : MenuModule,
31 "MenuItem" : MenuItemModule,
32 "NewsItem" : NewsItemModule,
33 "ReleaseItem" : ReleaseItemModule,
34 "SidebarBanner" : SidebarBannerModule,
35 "SidebarItem" : SidebarItemModule,
36 "SidebarRelease" : SidebarReleaseModule,
37 },
38 xsrf_cookies = True,
39 )
5cf160e0 40
ae0228e1
MT
41 tornado.web.Application.__init__(self, **settings)
42
4cb3de1c
MT
43 # Initialize database connections
44 self.hash_db = HashDatabase()
45
ae0228e1
MT
46 self.settings["static_path"] = static_path = os.path.join(BASEDIR, "static")
47 static_handlers = [
48 (r"/static/(.*)", tornado.web.StaticFileHandler, dict(path = static_path)),
49 (r"/(favicon\.ico)", tornado.web.StaticFileHandler, dict(path = static_path)),
50 (r"/(robots\.txt)", tornado.web.StaticFileHandler, dict(path = static_path)),
51 ]
52
d4dc517c 53 self.add_handlers(r"(dev|www)\.ipfire\.(at|org)", [
81675874 54 # Entry sites that lead the user to index
55 (r"/", MainHandler),
56 (r"/[A-Za-z]{2}/?", MainHandler),
57 #
58 (r"/[A-Za-z]{2}/index", IndexHandler),
59 (r"/[A-Za-z]{2}/news", NewsHandler),
60 (r"/[A-Za-z]{2}/builds", BuildHandler),
61 (r"/[A-Za-z]{2}/translations?", TranslationHandler),
62 # Download sites
63 (r"/[A-Za-z]{2}/downloads?", DownloadHandler),
64 (r"/[A-Za-z]{2}/downloads?/all", DownloadAllHandler),
65 (r"/[A-Za-z]{2}/downloads?/development", DownloadDevelopmentHandler),
3add293a 66 (r"/[A-Za-z]{2}/downloads?/mirrors", DownloadMirrorHandler),
81675874 67 (r"/[A-Za-z]{2}/downloads?/torrents", DownloadTorrentHandler),
e48d9ae6
MT
68 # RSS feed
69 (r"/([A-Za-z]{2})/news.rss", RSSHandler),
70 (r"/data/feeds/main-([A-Za-z]{2}).rss", RSSHandler),
81675874 71 # API
72 (r"/api/cluster_info", ApiClusterInfoHandler),
73 # Always the last rule
74 (r"/[A-Za-z]{2}/(.*)", StaticHandler),
ae0228e1 75 ] + static_handlers)
81675874 76
5cf160e0 77 # download.ipfire.org
ae0228e1 78 self.add_handlers(r"download\.ipfire\.org", [
3add293a
MT
79 (r"/", tornado.web.RedirectHandler, { "url" : "http://www.ipfire.org/" }),
80 (r"/(favicon\.ico)", tornado.web.StaticFileHandler, dict(path = static_path)),
81 (r"/(.*)", DownloadFileHandler),
82 ])
5cf160e0
MT
83
84 # source.ipfire.org
ae0228e1 85 self.add_handlers(r"source\.ipfire\.org", [
5cf160e0 86 (r"/", MainHandler),
fdb59cb9 87 (r"/[A-Za-z]{2}/?", MainHandler),
e2b0b0e4 88 (r"/[A-Za-z]{2}/index", SourceHandler),
7c1dc100 89 (r"(/source.*|/toolchains/.*)", SourceDownloadHandler),
ae0228e1 90 ] + static_handlers)
5cf160e0
MT
91
92 # torrent.ipfire.org
ae0228e1 93 self.add_handlers(r"torrent\.ipfire\.org", [
5cf160e0 94 (r"/", MainHandler),
fdb59cb9 95 (r"/[A-Za-z]{2}/?", MainHandler),
5cf160e0 96 (r"/[A-Za-z]{2}/index", DownloadTorrentHandler),
ae0228e1 97 ] + static_handlers)
5cf160e0
MT
98
99 # tracker.ipfire.org
ae0228e1 100 self.add_handlers(r"tracker\.ipfire\.org", [
5cf160e0 101 (r"/", MainHandler),
fdb59cb9 102 (r"/[A-Za-z]{2}/?", MainHandler),
5cf160e0 103 (r"/[A-Za-z]{2}/index", DownloadTorrentHandler),
43d991f6 104 (r"/a.*", TrackerAnnounceHandler),
ae0228e1
MT
105 ] + static_handlers)
106
107 # ipfire.org
3add293a 108 self.add_handlers(r".*", [
ae0228e1 109 (r".*", tornado.web.RedirectHandler, { "url" : "http://www.ipfire.org" })
5cf160e0 110 ])
3add293a
MT
111
112 def __del__(self):
113 from mirrors import mirrors
114 mirrors.stop()