]> git.ipfire.org Git - ipfire.org.git/blob - download/getfile.py
Updated .gitignore, again.
[ipfire.org.git] / download / getfile.py
1 #!/usr/bin/python
2
3 # This is a short script for spread our files...
4
5 import cgi, random, urllib2, sys
6
7 def redirect(url):
8 print 'Status: 302 Moved Temporarily'
9 print 'Location:', url
10 print 'Pragma: no-cache'
11 print 'Content-Type: text/html'
12 print
13
14 def notfound():
15 print 'Status: 404 Not Found'
16 print 'Pragma: no-cache'
17 print
18
19 def selectserver(filename):
20 servers = []
21 f = open("mirrorlist")
22 while True:
23 line = f.readline()
24 if len(line) == 0:
25 break # EOF
26 line = line.rstrip('\n')
27 servers.append(line)
28 f.close()
29
30 while True:
31 if len(servers) == 0:
32 url = "None"
33 break
34 rand = random.randint(0, len(servers)-1)
35 url = "%s/%s" % (servers[rand], cgi.escape(filename))
36 try:
37 req = urllib2.Request(url)
38 req.add_header('User-Agent', 'IPFire/DownloadScript-1.0')
39 urllib2.urlopen(req)
40 except urllib2.HTTPError, e:
41 servers.pop(rand)
42 except urllib2.URLError, e:
43 servers.pop(rand)
44 else:
45 break
46 return url
47
48 form = cgi.FieldStorage()
49 filename = form.getfirst('file')
50
51 url = selectserver(filename)
52
53 if url == "None":
54 notfound()
55 else:
56 redirect(url)