1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
{% extends "base.html" %}
{% load cycle from future %}
{% load static from staticfiles %}
{% load mirror_status %}
{% load flags %}
{% load admin_urls %}
{% block title %}Arch Linux - {{ mirror.name }} - Mirror Details{% endblock %}
{% block head %}<link rel="stylesheet" type="text/css" href="{% static "flags/fam.css" %}" media="screen, projection" />{% endblock %}
{% block content %}
<div class="box">
<h2>Mirror Details: {{ mirror.name }}</h2>
{% if perms.mirrors.change_mirror %}
<ul class="admin-actions">
<li><a href="{% url 'admin:mirrors_mirror_change' mirror.pk %}" title="Edit mirror">Edit Mirror</a></li>
</ul>
{% endif %}
<table class="compact">
<tr>
<th>Name:</th>
<td>{{ mirror.name }}</td>
</tr>
<tr>
<th>Tier:</th>
<td>{{ mirror.get_tier_display }}</td>
</tr>
<tr>
<th>Has ISOs:</th>
<td>{{ mirror.isos|yesno|capfirst }}</td>
</tr>
{% if user.is_authenticated %}
<tr>
<th>Public:</th>
<td>{{ mirror.public|yesno|capfirst }}</td>
</tr>
<tr>
<th>Active:</th>
<td>{{ mirror.active|yesno|capfirst }}</td>
</tr>
<tr>
<th>Created:</th>
<td>{{ mirror.created }}</td>
</tr>
<tr>
<th>Last Modified:</th>
<td>{{ mirror.last_modified }}</td>
</tr>
<tr>
<th>Rsync IPs:</th>
<td class="wrap">{{mirror.rsync_ips.all|join:', '}}</td>
</tr>
<tr>
<th>Admin Email:</th>
<td>{% if mirror.admin_email %}<a href="mailto:{{ mirror.admin_email }}">{{ mirror.admin_email }}</a>{% else %}None{% endif %}</td>
</tr>
<tr>
<th>Alternate Email:</th>
<td>{% if mirror.alternate_email %}<a href="mailto:{{ mirror.alternate_email }}">{{ mirror.alternate_email }}</a>{% else %}None{% endif %}</td>
</tr>
<tr>
<th>Flyspray Issue:</th>
<td>{% if mirror.bug %}<a href="https://bugs.archlinux.org/task/{{ mirror.bug }}">FS#{{ mirror.bug }}</a>{% endif %}</td>
</tr>
<tr>
<th>Notes:</th>
<td class="wrap">{{ mirror.notes|linebreaks }}</td>
</tr>
<tr>
<th>Upstream:</th>
<td>{% if mirror.upstream %}
<a href="{{ mirror.upstream.get_absolute_url }}"
title="Mirror details for {{ mirror.upstream.name }}">{{ mirror.upstream.name }}</a>
{% else %}None{% endif %}</td>
</tr>
<tr>
<th>Downstream:</th>
{% with mirror.downstream as ds_mirrors %}
<td class="wrap">{% if ds_mirrors %}
{% for ds in ds_mirrors %}
<a href="{{ ds.get_absolute_url }}"
title="Mirror details for {{ ds.name }}">{{ ds.name }}</a>{% comment %}
{% endcomment %}{% if not ds.active %} <span class="testing-dep">(inactive)</span>{% endif %}{% comment %}
{% endcomment %}{% if not ds.public %} <span class="testing-dep">(private)</span>{% endif %}{% comment %}
{% endcomment %}{% if not forloop.last %}, {% endif %}{% endfor %}
{% else %}None{% endif %}</td>
{% endwith %}
</tr>
{% endif %}
</table>
<h3>Available URLs</h3>
{% include "mirrors/mirror_details_urls.html.jinja" %}
<h3>Error Log</h3>
{% include "mirrors/error_table.html.jinja" %}
</div>
<div class="box">
<h2>Mirror Status Charts</h2>
<p>Periodic checks of the mirrors are done from various geographic
locations, IP addresses, and using IPv4 or IPv6. These results are
summarized in graphical form below.</p>
<div id="charts-container"></div>
</div>
{% endblock %}
{% block script_block %}
{% load cdn %}{% jquery %}{% jquery_tablesorter %}
<script type="text/javascript" src="{% static "d3-3.0.6.min.js" %}"></script>
<script type="text/javascript" src="{% static "archweb.js" %}"></script>
<script type="text/javascript" src="{% static "mirror_status.js" %}"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#available_urls:has(tbody tr)").tablesorter(
{widgets: ['zebra'], sortList: [[1,0], [2,0]],
headers: { 8: { sorter: 'mostlydigit' }, 9: { sorter: 'mostlydigit' }, 10: { sorter: 'mostlydigit' } } });
});
$(document).ready(function() {
draw_graphs("/mirrors/locations/json/", "./json/", "#charts-container");
});
</script>
{% endblock %}
|