I2P Address: [http://git.idk.i2p]

Skip to content
Snippets Groups Projects
Commit 3a07ec3c authored by str4d's avatar str4d
Browse files

Categorize mirrors by network

parent bce4445b
No related branches found
No related tags found
No related merge requests found
......@@ -8,6 +8,7 @@ from random import randint
from i2p2www import CURRENT_I2P_VERSION, MIRRORS_FILE
DEFAULT_MIRROR = {
'net': 'clearnet',
'protocol': 'https',
'domain': 'download.i2p2.de',
'org': 'sigterm.no',
......@@ -15,6 +16,7 @@ DEFAULT_MIRROR = {
}
DEFAULT_I2P_MIRROR = {
'net': 'i2p',
'protocol': 'http',
'domain': 'whnxvjwjhzsske5yevyokhskllvtisv5ueokw6yvh6t7zqrpra2q.b32.i2p',
'org': 'sigterm.no',
......@@ -39,13 +41,16 @@ def read_mirrors():
continue
if 'protocol' not in obj or 'domain' not in obj or 'path' not in obj:
continue
net=obj['net']
protocol=obj['protocol']
domain=obj['domain']
path=obj['path']
obj['url']='%s://%s%s' % (protocol, domain, path)
if protocol not in ret:
ret[protocol]={}
ret[protocol][domain]=obj
if net not in ret:
ret[net]={}
if protocol not in ret[net]:
ret[net][protocol]={}
ret[net][protocol][domain]=obj
return ret
# List of downloads
......@@ -65,29 +70,40 @@ def downloads_debian():
def downloads_select(version, file):
mirrors=read_mirrors()
obj=[]
for protocol in mirrors.keys():
for net in mirrors.keys():
a={}
a['name']=protocol
a['mirrors']=mirrors[protocol]
a['key']=net
a['name']=net
a['protocols']=[]
for protocol in mirrors[net].keys():
b={}
b['key']=protocol
b['name']=protocol
b['domains']=mirrors[net][protocol]
a['protocols'].append(b)
obj.append(a)
return render_template('downloads/select.html', mirrors=obj, version=version, file=file)
def downloads_redirect(version, protocol, domain, file):
def downloads_redirect(version, net, protocol, domain, file):
mirrors=read_mirrors()
if not protocol in mirrors:
if not net in mirrors:
abort(404)
mirrors=mirrors[protocol]
mirrors=mirrors[net]
data = {
'version': version,
'file': file,
}
if domain:
if not domain in mirrors:
abort(404)
return render_template('downloads/redirect.html',
version=version, protocol=protocol, domain=domain, file=file,
url=mirrors[domain]['url'] % data)
randomain = mirrors.keys()[randint(0, len(mirrors) - 1)]
if not protocol:
protocol = mirrors.leys()[randint(0, len(mirrors) - 1)]
if not protocol in mirrors:
abort(404)
mirrors=mirrors[protocol]
if not domain:
domain = mirrors.keys()[randint(0, len(mirrors) - 1)]
if not domain in mirrors:
abort(404)
return render_template('downloads/redirect.html',
version=version, protocol=protocol, domain=domain, file=file,
url=mirrors[randomain]['url'] % data)
url=mirrors[domain]['url'] % data)
......@@ -49,12 +49,12 @@ or type <tt>java -version</tt> at your command prompt.
</div>
<div class="details">
<div class="file">
<a class="default" href="{{ url_for('downloads_redirect', version=ver(), protocol=def_mirror.protocol, domain=def_mirror.domain, file=ver('i2pinstall_%s_windows.exe')) }}">
<a class="default" href="{{ url_for('downloads_redirect', version=ver(), net=def_mirror.net, protocol=def_mirror.protocol, domain=def_mirror.domain, file=ver('i2pinstall_%s_windows.exe')) }}">
<span class="name">i2pinstall_{{ ver() }}_windows.exe</span><br />
<span class="mirror">{{ _('Mirror:') }} <img src="{{ url_for('static', filename='images/flags/'+def_mirror.country+'.png') }}" /> {{ def_mirror.org }}</span>
</a>
<a class="mirrors" href="{{ get_url('downloads_select', version=ver(), file=ver('i2pinstall_%s_windows.exe')) }}">{{ _('select alternate mirror') }}</a><!--
--><a class="sig" href="{{ url_for('downloads_redirect', version=ver(), protocol=def_mirror.protocol, domain=def_mirror.domain, file=ver('i2pinstall_%s_windows.exe.sig')) }}">sig</a>
--><a class="sig" href="{{ url_for('downloads_redirect', version=ver(), net=def_mirror.net, protocol=def_mirror.protocol, domain=def_mirror.domain, file=ver('i2pinstall_%s_windows.exe.sig')) }}">sig</a>
</div>
<div class="hash">
<code>{{ i2pinstall_windows_hash }}</code>
......@@ -71,12 +71,12 @@ or type <tt>java -version</tt> at your command prompt.
</div>
<div class="details">
<div class="file">
<a class="default" href="{{ url_for('downloads_redirect', version=ver(), protocol=def_mirror.protocol, domain=def_mirror.domain, file=ver('i2pinstall_%s.jar')) }}">
<a class="default" href="{{ url_for('downloads_redirect', version=ver(), net=def_mirror.net, protocol=def_mirror.protocol, domain=def_mirror.domain, file=ver('i2pinstall_%s.jar')) }}">
<span class="name">i2pinstall_{{ ver() }}.jar</span><br />
<span class="mirror">{{ _('Mirror:') }} <img src="{{ url_for('static', filename='images/flags/'+def_mirror.country+'.png') }}" /> {{ def_mirror.org }}</span>
</a>
<a class="mirrors" href="{{ get_url('downloads_select', version=ver(), file=ver('i2pinstall_%s.jar')) }}">{{ _('select alternate mirror') }}</a><!--
--><a class="sig" href="{{ url_for('downloads_redirect', version=ver(), protocol=def_mirror.protocol, domain=def_mirror.domain, file=ver('i2pinstall_%s.jar.sig')) }}">sig</a>
--><a class="sig" href="{{ url_for('downloads_redirect', version=ver(), net=def_mirror.net, protocol=def_mirror.protocol, domain=def_mirror.domain, file=ver('i2pinstall_%s.jar.sig')) }}">sig</a>
</div>
<div class="hash">
<code>{{ i2pinstall_jar_hash }}</code>
......@@ -103,12 +103,12 @@ or type <tt>java -version</tt> at your command prompt.
</div>
<div class="details">
<div class="file">
<a class="default" href="{{ url_for('downloads_redirect', version=ver(), protocol=def_mirror.protocol, domain=def_mirror.domain, file=ver('i2pinstall_%s.jar')) }}">
<a class="default" href="{{ url_for('downloads_redirect', version=ver(), net=def_mirror.net, protocol=def_mirror.protocol, domain=def_mirror.domain, file=ver('i2pinstall_%s.jar')) }}">
<span class="name">i2pinstall_{{ ver() }}.jar</span><br />
<span class="mirror">{{ _('Mirror:') }} <img src="{{ url_for('static', filename='images/flags/'+def_mirror.country+'.png') }}" /> {{ def_mirror.org }}</span>
</a>
<a class="mirrors" href="{{ get_url('downloads_select', version=ver(), file=ver('i2pinstall_%s.jar')) }}">{{ _('select alternate mirror') }}</a><!--
--><a class="sig" href="{{ url_for('downloads_redirect', version=ver(), protocol=def_mirror.protocol, domain=def_mirror.domain, file=ver('i2pinstall_%s.jar.sig')) }}">sig</a>
--><a class="sig" href="{{ url_for('downloads_redirect', version=ver(), net=def_mirror.net, protocol=def_mirror.protocol, domain=def_mirror.domain, file=ver('i2pinstall_%s.jar.sig')) }}">sig</a>
</div>
<div class="hash">
<code>{{ i2pinstall_jar_hash }}</code>
......@@ -195,12 +195,12 @@ or type <tt>java -version</tt> at your command prompt.
</div>
<div class="details">
<div class="file">
<a class="default" href="{{ url_for('downloads_redirect', version=ver(), protocol=def_mirror.protocol, domain=def_mirror.domain, file=ver('i2psource_%s.tar.bz2')) }}">
<a class="default" href="{{ url_for('downloads_redirect', version=ver(), net=def_mirror.net, protocol=def_mirror.protocol, domain=def_mirror.domain, file=ver('i2psource_%s.tar.bz2')) }}">
<span class="name">i2psource_{{ ver() }}.tar.bz2</span><br />
<span class="mirror">{{ _('Mirror:') }} <img src="{{ url_for('static', filename='images/flags/'+def_mirror.country+'.png') }}" /> {{ def_mirror.org }}</span>
</a>
<a class="mirrors" href="{{ get_url('downloads_select', version=ver(), file=ver('i2psource_%s.tar.bz2')) }}">{{ _('select alternate mirror') }}</a><!--
--><a class="sig" href="{{ url_for('downloads_redirect', version=ver(), protocol=def_mirror.protocol, domain=def_mirror.domain, file=ver('i2psource_%s.tar.bz2.sig')) }}">sig</a>
--><a class="sig" href="{{ url_for('downloads_redirect', version=ver(), net=def_mirror.net, protocol=def_mirror.protocol, domain=def_mirror.domain, file=ver('i2psource_%s.tar.bz2.sig')) }}">sig</a>
</div>
<div class="hash">
<code>{{ i2psource_hash }}</code>
......@@ -300,12 +300,12 @@ receive the release.
</div>
<div class="details">
<div class="file">
<a class="default" href="{{ url_for('downloads_redirect', version=ver(), protocol=def_mirror.protocol, domain=def_mirror.domain, file=ver('i2pupdate_%s.zip')) }}">
<a class="default" href="{{ url_for('downloads_redirect', version=ver(), net=def_mirror.net, protocol=def_mirror.protocol, domain=def_mirror.domain, file=ver('i2pupdate_%s.zip')) }}">
<span class="name">i2pupdate_{{ ver() }}.zip</span><br />
<span class="mirror">{{ _('Mirror:') }} <img src="{{ url_for('static', filename='images/flags/'+def_mirror.country+'.png') }}" /> {{ def_mirror.org }}</span>
</a>
<a class="mirrors" href="{{ get_url('downloads_select', version=ver(), file=ver('i2pupdate_%s.zip')) }}">{{ _('select alternate mirror') }}</a><!--
--><a class="sig" href="{{ url_for('downloads_redirect', version=ver(), protocol=def_mirror.protocol, domain=def_mirror.domain, file=ver('i2pupdate_%s.zip.sig')) }}">sig</a>
--><a class="sig" href="{{ url_for('downloads_redirect', version=ver(), net=def_mirror.net, protocol=def_mirror.protocol, domain=def_mirror.domain, file=ver('i2pupdate_%s.zip.sig')) }}">sig</a>
</div>
<div class="hash">
<code>{{ i2pupdate_hash }}</code>
......
{"protocol": "https", "domain": "launchpad.net", "path": "/i2p/trunk/%(version)s/+download/%(file)s", "org": "Launchpad", "org_url": "https://launchpad.net", "country": "us"}
{"protocol": "https", "domain": "download.i2p2.de", "path": "/releases/%(version)s/%(file)s", "org": "sigterm.no", "country": "no"}
{"protocol": "http", "domain": "whnxvjwjhzsske5yevyokhskllvtisv5ueokw6yvh6t7zqrpra2q.b32.i2p", "path": "/releases/%(version)s/%(file)s", "org": "sigterm.no", "country": "i2p"}
{"protocol": "http", "domain": "download.i2p2.de", "path": "/releases/%(version)s/%(file)s", "org": "sigterm.no", "country": "no"}
{"protocol": "http", "domain": "download.i2p2.no", "path": "/releases/%(version)s/%(file)s", "org": "sigterm.no", "country": "no"}
{"protocol": "https", "domain": "dl.dropboxusercontent.com", "path": "/u/18621288/I2P/%(version)s/%(file)s", "org": "Dropbox", "country": "us"}
{"protocol": "https", "domain": "googledrive.com", "path": "/host/0B4jHEq5G7_EPWV9UeERwdGplZXc/%(version)s/%(file)s", "org": "Google Drive", "country": "us"}
#{"protocol": "http", "domain": "download.geti2p.com", "path": "/%(version)s/%(file)s", "org": "aargh", "country": "us"}
#{"protocol": "http", "domain": "download2.geti2p.com", "path": "/%(version)s/%(file)s", "org": "aargh", "country": "us"}
{"net": "clearnet", "protocol": "https", "domain": "launchpad.net", "path": "/i2p/trunk/%(version)s/+download/%(file)s", "org": "Launchpad", "org_url": "https://launchpad.net", "country": "us"}
{"net": "clearnet", "protocol": "https", "domain": "download.i2p2.de", "path": "/releases/%(version)s/%(file)s", "org": "sigterm.no", "country": "no"}
{"net": "i2p", "protocol": "http", "domain": "whnxvjwjhzsske5yevyokhskllvtisv5ueokw6yvh6t7zqrpra2q.b32.i2p", "path": "/releases/%(version)s/%(file)s", "org": "sigterm.no"}
{"net": "clearnet", "protocol": "http", "domain": "download.i2p2.de", "path": "/releases/%(version)s/%(file)s", "org": "sigterm.no", "country": "no"}
{"net": "clearnet", "protocol": "http", "domain": "download.i2p2.no", "path": "/releases/%(version)s/%(file)s", "org": "sigterm.no", "country": "no"}
{"net": "clearnet", "protocol": "https", "domain": "dl.dropboxusercontent.com", "path": "/u/18621288/I2P/%(version)s/%(file)s", "org": "Dropbox", "country": "us"}
{"net": "clearnet", "protocol": "https", "domain": "googledrive.com", "path": "/host/0B4jHEq5G7_EPWV9UeERwdGplZXc/%(version)s/%(file)s", "org": "Google Drive", "country": "us"}
#{"net": "clearnet", "protocol": "http", "domain": "download.geti2p.com", "path": "/%(version)s/%(file)s", "org": "aargh", "country": "us"}
#{"net": "clearnet", "protocol": "http", "domain": "download2.geti2p.com", "path": "/%(version)s/%(file)s", "org": "aargh", "country": "us"}
......@@ -3,13 +3,18 @@
{% block content %}
<h1>{{ _('Mirror selection') }}</h1>
<h2>{{ _('File:') }} /{{ file }}</h2>
{% for protocol in mirrors -%}
<div class="protocol">
<h3>{{ protocol.name | upper }}</h3>
{% for net in mirrors -%}
<div class="net">
<h3>{{ net.name | upper }}</h3>
<ul>
<li><a href="{{ url_for('downloads_redirect', version=version, protocol=protocol.name, file=file) }}">{{ _('Any mirror') }}</a></li>
{% for domain, mirror in protocol.mirrors.items() -%}
<li><img src="{{ url_for('static', filename='images/flags/'+mirror.country+'.png') }}" />&nbsp;{% if mirror.org_url %}<a href="{{ mirror.org_url }}">{% endif %}{{ mirror.org }}{% if mirror.org_url %}</a>{% endif %} <a href="{{ url_for('downloads_redirect', version=version, protocol=protocol.name, domain=domain, file=file) }}">[{{ _('Download') }}]</a> <a href="{{ url_for('downloads_redirect', version=version, protocol=protocol.name, domain=domain, file=file+'.sig') }}">[sig]</a></li>
<li><a href="{{ url_for('downloads_redirect', version=version, net=net.key, file=file) }}">{{ _('Any mirror') }}</a></li>
{% for protocol in net.protocols -%}
<li><a href="{{ url_for('downloads_redirect', version=version, net=net.key, protocol=protocol.key, file=file) }}">{{ protocol.key | upper }}</a>
<ul>
{% for domain, mirror in protocol.domains.items() -%}
<li>{% if mirror.country %}<img src="{{ url_for('static', filename='images/flags/'+mirror.country+'.png') }}" />&nbsp;{% endif %}{% if mirror.org_url %}<a href="{{ mirror.org_url }}">{% endif %}{{ mirror.org }}{% if mirror.org_url %}</a>{% endif %} <a href="{{ url_for('downloads_redirect', version=version, net=net.key, protocol=protocol.key, domain=domain, file=file) }}">[{{ _('Download') }}]</a> <a href="{{ url_for('downloads_redirect', version=version, net=net.key, protocol=protocol.key, domain=domain, file=file+'.sig') }}">[sig]</a></li>
{%- endfor %}
</ul></li>
{%- endfor %}
</ul>
</div>
......
......@@ -9,7 +9,7 @@
{%- elif request.endpoint == 'meetings_show' -%}{{ url_for('meetings_show', lang=lang, id=id) }}
{%- elif request.endpoint == 'downloads_debian' -%}{{ url_for('downloads_debian', lang=lang) }}
{%- elif request.endpoint == 'downloads_select' -%}{{ url_for('downloads_select', lang=lang, version=version, file=file) }}
{%- elif request.endpoint == 'downloads_redirect' -%}{{ url_for('downloads_redirect', lang=lang, version=version, protocol=protocol, domain=domain, file=file) }}
{%- elif request.endpoint == 'downloads_redirect' -%}{{ url_for('downloads_redirect', lang=lang, version=version, net=net, protocol=protocol, domain=domain, file=file) }}
{%- elif request.endpoint == 'static' -%}{{ url_for('static', filename=filename) }}
{%- elif request.endpoint -%}{{ url_for(request.endpoint, lang=lang) }}
{%- else -%}{{ url_for('site_show', lang=lang) }}
......
......@@ -71,8 +71,9 @@ url('/<lang:lang>/feed/meetings/atom', 'meetings.views.meetings_atom')
url('/<lang:lang>/download', 'downloads.downloads_list')
url('/<lang:lang>/download/debian', 'downloads.downloads_debian')
url('/<lang:lang>/download/<string:version>/<path:file>/mirrors', 'downloads.downloads_select')
url('/<lang:lang>/download/<string:version>/<string:protocol>/any/<path:file>/download', 'downloads.downloads_redirect', defaults={'domain': None})
url('/<lang:lang>/download/<string:version>/<string:protocol>/<string:domain>/<path:file>/download', 'downloads.downloads_redirect')
url('/<lang:lang>/download/<string:version>/<string:net>/any/<path:file>/download', 'downloads.downloads_redirect', defaults={'protocol': None, 'domain': None})
url('/<lang:lang>/download/<string:version>/<string:net>/<string:protocol>/any/<path:file>/download', 'downloads.downloads_redirect', defaults={'domain': None})
url('/<lang:lang>/download/<string:version>/<string:net>/<string:protocol>/<string:domain>/<path:file>/download', 'downloads.downloads_redirect')
url('/meeting<int:id>', 'legacy.legacy_meeting')
url('/meeting<int:id>.html', 'legacy.legacy_meeting')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment