]>
git.ipfire.org Git - ipfire.org.git/blob - src/web/downloads.py
8 class IndexHandler(base
.AnalyticsMixin
, base
.BaseHandler
):
10 release
= self
.backend
.releases
.get_latest()
12 raise tornado
.web
.HTTPError(404)
14 # Redirect to latest release page
15 self
.redirect("/downloads/%s" % release
.slug
)
18 class MirrorsHandler(base
.AnalyticsMixin
, base
.BaseHandler
):
20 mirrors
= self
.backend
.mirrors
.get_by_countries()
22 raise tornado
.web
.HTTPError(404)
24 self
.render("downloads/mirrors.html", mirrors
=mirrors
)
27 class ReleaseHandler(base
.AnalyticsMixin
, base
.BaseHandler
):
29 release
= self
.backend
.releases
.get_by_sname(slug
)
31 raise tornado
.web
.HTTPError(404)
33 self
.render("downloads/release.html", release
=release
)
36 class ThankYouHandler(base
.AnalyticsMixin
, base
.BaseHandler
):
38 self
.render("downloads/thank-you.html")
41 class FileHandler(base
.AnalyticsMixin
, base
.BaseHandler
):
43 self
.set_header("Pragma", "no-cache")
45 @base.ratelimit(minutes
=5, requests
=10)
46 def get(self
, filename
):
47 mirror
= self
.backend
.mirrors
.get_for_download(filename
,
48 country_code
=self
.current_country_code
)
50 # Send 404 if no mirror was found
52 raise tornado
.web
.HTTPError(404, "Could not find a mirror for %s" % filename
)
54 # Construct the redirection URL
55 url
= mirror
.build_url(filename
)
57 raise tornado
.web
.HTTPError(500, "Could not get download URL")
60 logging
.info("Sending client from %s to %s" % (self
.current_country_code
or "unknown", url
))
62 # Redirect the request
68 def write_error(self
, status_code
, **kwargs
):
70 Since we cannot deliver any CSS or similar here,
71 we will have to redirect the user back to the main page
73 self
.redirect("https://www.ipfire.org/error/%s" % status_code
)