From edd297c4e7d59ecac283925eea0ce869905933b8 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 14 Jan 2011 20:44:18 +0100 Subject: [PATCH] Add compat handler for old download links. --- www/webapp/__init__.py | 1 + www/webapp/backend/mirrors.py | 13 +++++++++++++ www/webapp/handlers_download.py | 16 ++++++++++++++++ 3 files changed, 30 insertions(+) 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) + -- 2.47.3