]>
git.ipfire.org Git - ipfire.org.git/blob - src/web/download.py
ba62ffdcfb56c78a827db6aebb63a36f2c3066bf
8 class IndexHandler(base
.BaseHandler
):
10 release
= self
.backend
.releases
.get_latest()
12 raise tornado
.web
.HTTPError(404)
14 # Cache this response for one minute
17 # Redirect to latest release page
18 self
.redirect("/download/%s" % release
.slug
)
21 class ReleaseHandler(base
.BaseHandler
):
23 release
= self
.backend
.releases
.get_by_sname(slug
)
25 raise tornado
.web
.HTTPError(404)
27 # Cache this response for ten minutes
30 self
.render("download/release.html", release
=release
)
33 class ReleaseRedirectHandler(base
.BaseHandler
):
34 def get(self
, release
):
35 self
.redirect("https://www.ipfire.org/download/%s" % release
, permanent
=True)
38 class FileHandler(base
.BaseHandler
):
40 self
.set_header("Pragma", "no-cache")
43 @base.ratelimit(minutes
=5, requests
=10)
44 def get(self
, filename
):
45 mirror
= self
.backend
.mirrors
.get_for_download(filename
,
46 country_code
=self
.current_country_code
)
48 # Send 404 if no mirror was found
50 raise tornado
.web
.HTTPError(404, "Could not find a mirror for %s" % filename
)
52 # Construct the redirection URL
53 url
= mirror
.build_url(filename
)
55 raise tornado
.web
.HTTPError(500, "Could not get download URL")
58 logging
.info("Sending client from %s to %s" % (self
.current_country_code
or "unknown", url
))
60 # Redirect the request
66 def write_error(self
, status_code
, **kwargs
):
68 Since we cannot deliver any CSS or similar here,
69 we will have to redirect the user back to the main page
71 self
.redirect("https://www.ipfire.org/error/%s" % status_code
)