(r"/mirrors", tornado.web.RedirectHandler, { "url" : "http://mirrors.ipfire.org/" }),
(r"/source", tornado.web.RedirectHandler, { "url" : "http://source.ipfire.org/" }),
] + static_handlers + [
+ (r"/(iso|torrent)/(.*)", DownloadCompatHandler),
(r"/(.*)", DownloadFileHandler),
])
for mirror in mirrors:
yield self.get(mirror.id)
+ def get_all_files(self):
+ files = []
+
+ for mirror in self.list():
+ if not mirror.state == "UP":
+ continue
+
+ for file in mirror.filelist:
+ if not file in files:
+ files.append(file)
+
+ return files
+
class Mirror(object):
def __init__(self, id):
self.mirrors.db.execute("INSERT INTO log_download(filename, mirror, country_code) VALUES(%s, %s, %s)",
filename, mirror.id, country_code)
+
+
+class DownloadCompatHandler(BaseHandler):
+ def get(self, path, url):
+ _filename = None
+
+ for filename in self.mirrors.get_all_files():
+ if filename.endswith("/%s" % url):
+ _filename = filename
+ break
+
+ if not _filename:
+ raise tornado.web.HTTPError(404)
+
+ self.redirect("/%s" % _filename)
+