]> git.ipfire.org Git - ipfire.org.git/blob - src/web/handlers_mirrors.py
Introduce autotools
[ipfire.org.git] / src / web / handlers_mirrors.py
1 #!/usr/bin/python
2
3 import socket
4 import tornado.web
5
6 from handlers_base import *
7
8 class MirrorIndexHandler(BaseHandler):
9 def get(self):
10 ip_addr = self.get_argument("addr", None)
11 if not ip_addr:
12 ip_addr = self.get_remote_ip()
13
14 location = self.geoip.get_location(ip_addr)
15
16 # Get a list of all mirrors.
17 mirrors = self.mirrors.get_all()
18
19 # Choose the preferred ones by their location.
20 preferred_mirrors = mirrors.get_for_location(location)
21
22 self.render("mirrors.html",
23 preferred_mirrors=preferred_mirrors, mirrors=mirrors)
24
25
26 class MirrorItemHandler(BaseHandler):
27 def get(self, what):
28 mirror = self.mirrors.get_by_hostname(what)
29 if not mirror:
30 mirror = self.mirrors.get(what)
31
32 if not mirror:
33 raise tornado.web.HTTPError(404, what)
34
35 ip_addr = self.get_argument("addr", None)
36 if not ip_addr:
37 ip_addr = self.get_remote_ip()
38 client_location = self.geoip.get_location(ip_addr)
39
40 client_distance = mirror.distance_to(client_location, ignore_preference=True)
41
42 self.render("mirrors-item.html", item=mirror, client_distance=client_distance)
43
44
45 class MirrorHandler(BaseHandler):
46 def get(self):
47 self.redirect("mirrors/all")
48
49
50 class MirrorAllHandler(BaseHandler):
51 def get(self):
52 self.render("downloads-mirrors.html", mirrors=self.mirrors.list())
53
54
55 class MirrorDetailHandler(BaseHandler):
56 def get(self, id):
57 self.render("download-mirror-detail.html", mirror=self.mirrors.get(id))