From: Michael Tremer Date: Fri, 14 Jan 2011 19:44:18 +0000 (+0100) Subject: Add compat handler for old download links. X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=edd297c4e7d59ecac283925eea0ce869905933b8;p=ipfire.org.git Add compat handler for old download links. --- diff --git a/www/webapp/__init__.py b/www/webapp/__init__.py index d02ab036..dff38195 100644 --- a/www/webapp/__init__.py +++ b/www/webapp/__init__.py @@ -84,6 +84,7 @@ class Application(tornado.web.Application): (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), ]) diff --git a/www/webapp/backend/mirrors.py b/www/webapp/backend/mirrors.py index 415a9f1d..5b289b9f 100644 --- a/www/webapp/backend/mirrors.py +++ b/www/webapp/backend/mirrors.py @@ -60,6 +60,19 @@ class Mirrors(object): 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): diff --git a/www/webapp/handlers_download.py b/www/webapp/handlers_download.py index e0ccd895..d8b1dc3d 100644 --- a/www/webapp/handlers_download.py +++ b/www/webapp/handlers_download.py @@ -86,3 +86,19 @@ class DownloadFileHandler(BaseHandler): 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) +