update the script some more, do a trial run and update of the live mirrors-table.
Andrew Lewman

Andrew Lewman commited on 2013-12-05 18:11:12
Zeige 3 geänderte Dateien mit 680 Einfügungen und 1548 Löschungen.

... ...
@@ -1,15 +1,32 @@
1 1
      
2 2
 <tr>
3 3
 
4
-         <td>CZ</td>
4
+         <td>US</td>
5 5
 
6
-         <td>Lightning-bolt.net</td>
6
+         <td></td>
7 7
 
8 8
          <td>Up to date</td>
9 9
 
10 10
     <td> - </td>
11
-    <td><a href="http://torproject.lightning-bolt.net/dist/">http</a></td>
12
-    <td><a href="http://torproject.lightning-bolt.net/">http</a></td>
11
+    <td><a href="http://mirror.nametoday.me/tor/dist/">http</a></td>
12
+    <td><a href="http://mirror.nametoday.me/tor/">http</a></td>
13
+    <td> - </td>
14
+    <td> - </td>
15
+    <td> - </td>
16
+    <td> - </td>
17
+</tr>
18
+     
19
+<tr>
20
+
21
+         <td>NO</td>
22
+
23
+         <td>MultiNet AS</td>
24
+
25
+         <td>Up to date</td>
26
+
27
+    <td> - </td>
28
+    <td><a href="http://tor.multinet.no/dist/">http</a></td>
29
+    <td><a href="http://tor.multinet.no/">http</a></td>
13 30
     <td> - </td>
14 31
     <td> - </td>
15 32
     <td> - </td>
... ...
@@ -20,13 +37,13 @@
20 37
 
21 38
          <td>NL</td>
22 39
 
23
-         <td>CCC</td>
40
+         <td>BBLN</td>
24 41
 
25 42
          <td>Up to date</td>
26 43
 
27 44
     <td> - </td>
28
-    <td><a href="http://tor.ccc.de/dist/">http</a></td>
29
-    <td><a href="http://tor.ccc.de/">http</a></td>
45
+    <td><a href="http://t02.nl/mirror/dist/">http</a></td>
46
+    <td><a href="http://t02.nl/mirror/">http</a></td>
30 47
     <td> - </td>
31 48
     <td> - </td>
32 49
     <td> - </td>
... ...
@@ -35,15 +52,15 @@
35 52
      
36 53
 <tr>
37 54
 
38
-         <td>DK</td>
55
+         <td>US</td>
39 56
 
40
-         <td>Zentrum der Gesundheit</td>
57
+         <td></td>
41 58
 
42 59
          <td>Up to date</td>
43 60
 
44 61
     <td> - </td>
45
-    <td><a href="http://tor.idnr.ws/dist/">http</a></td>
46
-    <td><a href="http://tor.idnr.ws/">http</a></td>
62
+    <td><a href="http://199.175.55.215/dist/">http</a></td>
63
+    <td><a href="http://199.175.55.215/">http</a></td>
47 64
     <td> - </td>
48 65
     <td> - </td>
49 66
     <td> - </td>
... ...
@@ -69,21 +86,38 @@
69 86
      
70 87
 <tr>
71 88
 
72
-         <td>ES</td>
89
+         <td>IS</td>
73 90
 
74
-         <td></td>
91
+         <td>torproject.is</td>
75 92
 
76 93
          <td>Up to date</td>
77 94
 
78 95
     <td> - </td>
79
-    <td><a href="http://tor.zilog.es/dist/">http</a></td>
80
-    <td><a href="http://tor.zilog.es/">http</a></td>
96
+    <td><a href="http://torproject.is/dist/">http</a></td>
97
+    <td><a href="http://torproject.is/">http</a></td>
81 98
     <td> - </td>
82 99
     <td> - </td>
83 100
     <td> - </td>
84 101
     <td> - </td>
85 102
 </tr>
86 103
      
104
+<tr>
105
+
106
+         <td>DE</td>
107
+
108
+         <td>spline</td>
109
+
110
+         <td>Up to date</td>
111
+
112
+    <td><a href="ftp://ftp.spline.de/pub/tor">ftp</a></td>
113
+    <td><a href="http://tor.spline.de/dist/">http</a></td>
114
+    <td><a href="http://tor.spline.de/">http</a></td>
115
+    <td><a href="https://tor.spline.inf.fu-berlin.de/dist/">https</a></td>
116
+    <td><a href="https://tor.spline.inf.fu-berlin.de/">https</a></td>
117
+    <td><a href="rsync://ftp.spline.de/tor/dist">rsync</a></td>
118
+    <td><a href="rsync://ftp.spline.de/tor">rsync</a></td>
119
+</tr>
120
+     
87 121
 <tr>
88 122
 
89 123
          <td>RO</td>
... ...
@@ -105,49 +139,49 @@
105 139
 
106 140
          <td>DE</td>
107 141
 
108
-         <td></td>
142
+         <td>borgmann.tv</td>
109 143
 
110 144
          <td>Up to date</td>
111 145
 
112 146
     <td> - </td>
113
-    <td><a href="http://torproject.cryptowars.info/dist/">http</a></td>
114
-    <td><a href="http://torproject.cryptowars.info/">http</a></td>
115
-    <td><a href="https://torproject.cryptowars.info/dist/">https</a></td>
116
-    <td><a href="https://torproject.cryptowars.info/">https</a></td>
147
+    <td><a href="http://tor.borgmann.tv/dist/">http</a></td>
148
+    <td><a href="http://tor.borgmann.tv/">http</a></td>
149
+    <td> - </td>
150
+    <td> - </td>
151
+    <td> - </td>
117 152
     <td> - </td>
118
-    <td><a href="rsync://torproject.cryptowars.info/">rsync</a></td>
119 153
 </tr>
120 154
      
121 155
 <tr>
122 156
 
123
-         <td>FR</td>
157
+         <td>HU</td>
124 158
 
125
-         <td>linsrv</td>
159
+         <td>Unknown</td>
126 160
 
127 161
          <td>Up to date</td>
128 162
 
129
-    <td><a href="ftp://ftp.linsrv.net/pub/torproject/">ftp</a></td>
130
-    <td><a href="http://mirrors.linsrv.net/torproject/dist/">http</a></td>
131
-    <td><a href="http://mirrors.linsrv.net/torproject/">http</a></td>
163
+    <td> - </td>
164
+    <td><a href="http://mirror.tor.hu/dist/">http</a></td>
165
+    <td><a href="http://mirror.tor.hu/">http</a></td>
166
+    <td> - </td>
167
+    <td> - </td>
132 168
     <td> - </td>
133 169
     <td> - </td>
134
-    <td><a href="mirrors.linsrv.net::pub/torproject/dist">rsync</a></td>
135
-    <td><a href="mirrors.linsrv.net::pub/torproject">rsync</a></td>
136 170
 </tr>
137 171
      
138 172
 <tr>
139 173
 
140
-         <td>DE</td>
174
+         <td>NL</td>
141 175
 
142
-         <td></td>
176
+         <td>CCC</td>
143 177
 
144 178
          <td>Up to date</td>
145 179
 
146 180
     <td> - </td>
147
-    <td><a href="http://tor.dev-random.de/dist/">http</a></td>
148
-    <td><a href="http://tor.dev-random.de/">http</a></td>
149
-    <td><a href="https://tor.dev-random.de/dist/">https</a></td>
150
-    <td><a href="https://tor.dev-random.de/">https</a></td>
181
+    <td><a href="http://tor.ccc.de/dist/">http</a></td>
182
+    <td><a href="http://tor.ccc.de/">http</a></td>
183
+    <td> - </td>
184
+    <td> - </td>
151 185
     <td> - </td>
152 186
     <td> - </td>
153 187
 </tr>
... ...
@@ -156,13 +190,13 @@
156 190
 
157 191
          <td>AT</td>
158 192
 
159
-         <td>cyberarmy</td>
193
+         <td></td>
160 194
 
161 195
          <td>Up to date</td>
162 196
 
163 197
     <td> - </td>
164
-    <td> - </td>
165
-    <td><a href="http://tor.cyberarmy.at/">http</a></td>
198
+    <td><a href="http://tor.dont-know-me.at/dist/">http</a></td>
199
+    <td><a href="http://tor.dont-know-me.at/">http</a></td>
166 200
     <td> - </td>
167 201
     <td> - </td>
168 202
     <td> - </td>
... ...
@@ -171,15 +205,15 @@
171 205
      
172 206
 <tr>
173 207
 
174
-         <td>NO</td>
208
+         <td>INT</td>
175 209
 
176
-         <td>MultiNet AS</td>
210
+         <td>CoralCDN</td>
177 211
 
178 212
          <td>Up to date</td>
179 213
 
180 214
     <td> - </td>
181
-    <td><a href="http://tor.multinet.no/dist/">http</a></td>
182
-    <td><a href="http://tor.multinet.no/">http</a></td>
215
+    <td><a href="http://www.torproject.org.nyud.net/dist/">http</a></td>
216
+    <td><a href="http://www.torproject.org.nyud.net/">http</a></td>
183 217
     <td> - </td>
184 218
     <td> - </td>
185 219
     <td> - </td>
... ...
@@ -188,15 +222,15 @@
188 222
      
189 223
 <tr>
190 224
 
191
-         <td>FR</td>
225
+         <td>US</td>
192 226
 
193 227
          <td></td>
194 228
 
195 229
          <td>Up to date</td>
196 230
 
197 231
     <td> - </td>
198
-    <td><a href="http://torproject.c3l.lu/dist/">http</a></td>
199
-    <td><a href="http://torproject.c3l.lu/">http</a></td>
232
+    <td><a href="http://mirror.nametoday.me/tor/dist/">http</a></td>
233
+    <td><a href="http://mirror.nametoday.me/tor/">http</a></td>
200 234
     <td> - </td>
201 235
     <td> - </td>
202 236
     <td> - </td>
... ...
@@ -205,15 +239,15 @@
205 239
      
206 240
 <tr>
207 241
 
208
-         <td>DE</td>
242
+         <td>AT</td>
209 243
 
210
-         <td>chaos darmstadt</td>
244
+         <td></td>
211 245
 
212 246
          <td>Up to date</td>
213 247
 
214 248
     <td> - </td>
215
-    <td><a href="http://mirrors.chaos-darmstadt.de/tor-mirror/dist/">http</a></td>
216
-    <td><a href="http://mirrors.chaos-darmstadt.de/tor-mirror/">http</a></td>
249
+    <td><a href="http://torproject.ph3x.at/dist/">http</a></td>
250
+    <td><a href="http://torproject.ph3x.at/">http</a></td>
217 251
     <td> - </td>
218 252
     <td> - </td>
219 253
     <td> - </td>
... ...
@@ -239,34 +273,51 @@
239 273
      
240 274
 <tr>
241 275
 
242
-         <td>US</td>
276
+         <td>CH</td>
243 277
 
244
-         <td>HackThisSite.org</td>
278
+         <td></td>
245 279
 
246 280
          <td>Up to date</td>
247 281
 
248 282
     <td> - </td>
249
-    <td><a href="http://mirror.hackthissite.org/tor">http</a></td>
250
-    <td><a href="http://tor.hackthissite.org/">http</a></td>
251
-    <td><a href="https://mirror.hackthissite.org/tor">https</a></td>
252
-    <td><a href="https://tor.hackthissite.org/">https</a></td>
283
+    <td><a href="http://torproject.pillo-srv.ch/dist/">http</a></td>
284
+    <td><a href="http://torproject.pillo-srv.ch/">http</a></td>
285
+    <td><a href="https://torproject.pillo-srv.ch/dist/">https</a></td>
286
+    <td><a href="https://torproject.pillo-srv.ch/">https</a></td>
253 287
     <td> - </td>
254 288
     <td> - </td>
255 289
 </tr>
256 290
      
257 291
 <tr>
258 292
 
259
-         <td>US</td>
293
+         <td>BE</td>
260 294
 
261
-         <td></td>
295
+         <td>teambelgium</td>
262 296
 
263 297
          <td>Up to date</td>
264 298
 
299
+    <td><a href="ftp://tor.teambelgium.net:2121/torproject/">ftp</a></td>
300
+    <td><a href="http://tor.teambelgium.net:8082/dist/">http</a></td>
301
+    <td><a href="http://tor.teambelgium.net:8082/">http</a></td>
302
+    <td> - </td>
265 303
     <td> - </td>
266
-    <td><a href="http://199.175.55.215/dist/">http</a></td>
267
-    <td><a href="http://199.175.55.215/">http</a></td>
268 304
     <td> - </td>
269 305
     <td> - </td>
306
+</tr>
307
+     
308
+<tr>
309
+
310
+         <td>US</td>
311
+
312
+         <td>Xpdm</td>
313
+
314
+         <td>Up to date</td>
315
+
316
+    <td> - </td>
317
+    <td><a href="http://torproj.xpdm.us/dist/">http</a></td>
318
+    <td><a href="http://torproj.xpdm.us/">http</a></td>
319
+    <td><a href="https://torproj.xpdm.us/dist/">https</a></td>
320
+    <td><a href="https://torproj.xpdm.us/">https</a></td>
270 321
     <td> - </td>
271 322
     <td> - </td>
272 323
 </tr>
... ...
@@ -290,49 +341,49 @@
290 341
      
291 342
 <tr>
292 343
 
293
-         <td>US</td>
344
+         <td>DE</td>
294 345
 
295 346
          <td></td>
296 347
 
297 348
          <td>Up to date</td>
298 349
 
299 350
     <td> - </td>
300
-    <td><a href="http://torproject.guilhem.org/dist/">http</a></td>
301
-    <td><a href="http://torproject.guilhem.org/">http</a></td>
302
-    <td><a href="https://torproject.guilhem.org/dist/">https</a></td>
303
-    <td><a href="https://torproject.guilhem.org/">https</a></td>
351
+    <td><a href="http://tormirror.almnet.de/dist/">http</a></td>
352
+    <td><a href="http://tormirror.almnet.de/">http</a></td>
353
+    <td><a href="https://tormirror.almnet.de/dist/">https</a></td>
354
+    <td><a href="https://tormirror.almnet.de/">https</a></td>
304 355
     <td> - </td>
305 356
     <td> - </td>
306 357
 </tr>
307 358
      
308 359
 <tr>
309 360
 
310
-         <td>RU</td>
361
+         <td>LT</td>
311 362
 
312
-         <td>Soviet Anonymous</td>
363
+         <td></td>
313 364
 
314 365
          <td>Up to date</td>
315 366
 
316
-    <td><a href="ftp://creep.im/mirrors/tor">ftp</a></td>
317
-    <td><a href="http://creep.im/tor/dist/">http</a></td>
318
-    <td><a href="http://creep.im/tor">http</a></td>
319
-    <td><a href="https://creep.im/tor/dist/">https</a></td>
320
-    <td><a href="https://creep.im/tor">https</a></td>
321
-    <td><a href="rsync://creep.im/tor-dist">rsync</a></td>
322
-    <td><a href="rsync://creep.im/tor">rsync</a></td>
367
+    <td> - </td>
368
+    <td><a href="http://tor.vesta.nu/dist/">http</a></td>
369
+    <td><a href="http://tor.vesta.nu/">http</a></td>
370
+    <td> - </td>
371
+    <td> - </td>
372
+    <td> - </td>
373
+    <td> - </td>
323 374
 </tr>
324 375
      
325 376
 <tr>
326 377
 
327 378
          <td>US</td>
328 379
 
329
-         <td></td>
380
+         <td>AskApache</td>
330 381
 
331 382
          <td>Up to date</td>
332 383
 
333 384
     <td> - </td>
334
-    <td><a href="http://mirror.nametoday.me/tor/dist/">http</a></td>
335
-    <td><a href="http://mirror.nametoday.me/tor/">http</a></td>
385
+    <td><a href="http://tor.askapache.com/dist/">http</a></td>
386
+    <td><a href="http://tor.askapache.com/">http</a></td>
336 387
     <td> - </td>
337 388
     <td> - </td>
338 389
     <td> - </td>
... ...
@@ -341,19 +392,19 @@
341 392
      
342 393
 <tr>
343 394
 
344
-         <td>DE</td>
395
+         <td>US</td>
345 396
 
346
-         <td>spline</td>
397
+         <td>hessmo</td>
347 398
 
348 399
          <td>Up to date</td>
349 400
 
350
-    <td><a href="ftp://ftp.spline.de/pub/tor">ftp</a></td>
351
-    <td><a href="http://tor.spline.de/dist/">http</a></td>
352
-    <td><a href="http://tor.spline.de/">http</a></td>
353
-    <td><a href="https://tor.spline.inf.fu-berlin.de/dist/">https</a></td>
354
-    <td><a href="https://tor.spline.inf.fu-berlin.de/">https</a></td>
355
-    <td><a href="rsync://ftp.spline.de/tor/dist">rsync</a></td>
356
-    <td><a href="rsync://ftp.spline.de/tor">rsync</a></td>
401
+    <td> - </td>
402
+    <td><a href="http://mirror.hessmo.com/tor/dist/">http</a></td>
403
+    <td><a href="http://mirror.hessmo.com/tor/">http</a></td>
404
+    <td> - </td>
405
+    <td> - </td>
406
+    <td> - </td>
407
+    <td> - </td>
357 408
 </tr>
358 409
      
359 410
 <tr>
... ...
@@ -365,25 +416,42 @@
365 416
          <td>Up to date</td>
366 417
 
367 418
     <td> - </td>
368
-    <td><a href="http://tormirror.almnet.de/dist/">http</a></td>
369
-    <td><a href="http://tormirror.almnet.de/">http</a></td>
370
-    <td><a href="https://tormirror.almnet.de/dist/">https</a></td>
371
-    <td><a href="https://tormirror.almnet.de/">https</a></td>
419
+    <td><a href="http://tor.dev-random.de/dist/">http</a></td>
420
+    <td><a href="http://tor.dev-random.de/">http</a></td>
421
+    <td><a href="https://tor.dev-random.de/dist/">https</a></td>
422
+    <td><a href="https://tor.dev-random.de/">https</a></td>
372 423
     <td> - </td>
373 424
     <td> - </td>
374 425
 </tr>
375 426
      
376 427
 <tr>
377 428
 
378
-         <td>INT</td>
429
+         <td>FR</td>
379 430
 
380
-         <td>CoralCDN</td>
431
+         <td>linsrv</td>
381 432
 
382 433
          <td>Up to date</td>
383 434
 
435
+    <td><a href="ftp://ftp.linsrv.net/pub/torproject/">ftp</a></td>
436
+    <td><a href="http://mirrors.linsrv.net/torproject/dist/">http</a></td>
437
+    <td><a href="http://mirrors.linsrv.net/torproject/">http</a></td>
384 438
     <td> - </td>
385
-    <td><a href="http://www.torproject.org.nyud.net/dist/">http</a></td>
386
-    <td><a href="http://www.torproject.org.nyud.net/">http</a></td>
439
+    <td> - </td>
440
+    <td><a href="mirrors.linsrv.net::pub/torproject/dist">rsync</a></td>
441
+    <td><a href="mirrors.linsrv.net::pub/torproject">rsync</a></td>
442
+</tr>
443
+     
444
+<tr>
445
+
446
+         <td>FR</td>
447
+
448
+         <td></td>
449
+
450
+         <td>Up to date</td>
451
+
452
+    <td> - </td>
453
+    <td><a href="http://tor.mirror.chekanov.net/dist/">http</a></td>
454
+    <td><a href="http://tor.mirror.chekanov.net/">http</a></td>
387 455
     <td> - </td>
388 456
     <td> - </td>
389 457
     <td> - </td>
... ...
@@ -409,32 +477,66 @@
409 477
      
410 478
 <tr>
411 479
 
412
-         <td>BE</td>
480
+         <td>FR</td>
413 481
 
414
-         <td>teambelgium</td>
482
+         <td>BarkerJr</td>
415 483
 
416 484
          <td>Up to date</td>
417 485
 
418
-    <td><a href="ftp://tor.teambelgium.net:2121/torproject/">ftp</a></td>
419
-    <td><a href="http://tor.teambelgium.net:8082/dist/">http</a></td>
420
-    <td><a href="http://tor.teambelgium.net:8082/">http</a></td>
421 486
     <td> - </td>
487
+    <td><a href="http://www.oignon.net/dist/">http</a></td>
488
+    <td><a href="http://www.oignon.net/">http</a></td>
489
+    <td><a href="https://www.oignon.net/dist/">https</a></td>
490
+    <td><a href="https://www.oignon.net/">https</a></td>
422 491
     <td> - </td>
423 492
     <td> - </td>
493
+</tr>
494
+     
495
+<tr>
496
+
497
+         <td>US</td>
498
+
499
+         <td>HackThisSite.org</td>
500
+
501
+         <td>Up to date</td>
502
+
503
+    <td> - </td>
504
+    <td><a href="http://mirror.hackthissite.org/tor">http</a></td>
505
+    <td><a href="http://tor.hackthissite.org/">http</a></td>
506
+    <td><a href="https://mirror.hackthissite.org/tor">https</a></td>
507
+    <td><a href="https://tor.hackthissite.org/">https</a></td>
508
+    <td> - </td>
424 509
     <td> - </td>
425 510
 </tr>
426 511
      
427 512
 <tr>
428 513
 
429
-         <td>IS</td>
514
+         <td>DE</td>
430 515
 
431
-         <td>torproject.is</td>
516
+         <td></td>
432 517
 
433 518
          <td>Up to date</td>
434 519
 
435 520
     <td> - </td>
436
-    <td><a href="http://torproject.is/dist/">http</a></td>
437
-    <td><a href="http://torproject.is/">http</a></td>
521
+    <td><a href="http://tor.linuxlounge.net/dist/">http</a></td>
522
+    <td><a href="http://tor.linuxlounge.net/">http</a></td>
523
+    <td><a href="https://tor.linuxlounge.net/dist/">https</a></td>
524
+    <td><a href="https://tor.linuxlounge.net/">https</a></td>
525
+    <td> - </td>
526
+    <td> - </td>
527
+</tr>
528
+     
529
+<tr>
530
+
531
+         <td>AU</td>
532
+
533
+         <td>CoffsWiFi</td>
534
+
535
+         <td>Up to date</td>
536
+
537
+    <td> - </td>
538
+    <td><a href="http://torproject.coffswifi.net/dist">http</a></td>
539
+    <td><a href="http://torproject.coffswifi.net">http</a></td>
438 540
     <td> - </td>
439 541
     <td> - </td>
440 542
     <td> - </td>
... ...
@@ -445,13 +547,47 @@
445 547
 
446 548
          <td>AT</td>
447 549
 
550
+         <td>cyberarmy</td>
551
+
552
+         <td>Up to date</td>
553
+
554
+    <td> - </td>
555
+    <td> - </td>
556
+    <td><a href="http://tor.cyberarmy.at/">http</a></td>
557
+    <td> - </td>
558
+    <td> - </td>
559
+    <td> - </td>
560
+    <td> - </td>
561
+</tr>
562
+     
563
+<tr>
564
+
565
+         <td>DE</td>
566
+
448 567
          <td></td>
449 568
 
450 569
          <td>Up to date</td>
451 570
 
452 571
     <td> - </td>
453
-    <td><a href="http://torproject.ph3x.at/dist/">http</a></td>
454
-    <td><a href="http://torproject.ph3x.at/">http</a></td>
572
+    <td><a href="http://torproject.cryptowars.info/dist/">http</a></td>
573
+    <td><a href="http://torproject.cryptowars.info/">http</a></td>
574
+    <td><a href="https://torproject.cryptowars.info/dist/">https</a></td>
575
+    <td><a href="https://torproject.cryptowars.info/">https</a></td>
576
+    <td> - </td>
577
+    <td><a href="rsync://torproject.cryptowars.info/">rsync</a></td>
578
+</tr>
579
+     
580
+<tr>
581
+
582
+         <td>IS</td>
583
+
584
+         <td>TheOnionRouter</td>
585
+
586
+         <td>Up to date</td>
587
+
588
+    <td> - </td>
589
+    <td><a href="http://theonionrouter.com/dist/">http</a></td>
590
+    <td><a href="http://theonionrouter.com/">http</a></td>
455 591
     <td> - </td>
456 592
     <td> - </td>
457 593
     <td> - </td>
... ...
@@ -460,18 +596,86 @@
460 596
      
461 597
 <tr>
462 598
 
463
-         <td>AT</td>
599
+         <td>DE</td>
600
+
601
+         <td>crazyhaze.de</td>
602
+
603
+         <td>Up to date</td>
604
+
605
+    <td> - </td>
606
+    <td><a href="http://tor.crazyhaze.de/dist/">http</a></td>
607
+    <td><a href="http://tor.crazyhaze.de/">http</a></td>
608
+    <td><a href="https://tor.crazyhaze.de/dist/">https</a></td>
609
+    <td><a href="https://tor.crazyhaze.de/">https</a></td>
610
+    <td> - </td>
611
+    <td> - </td>
612
+</tr>
613
+     
614
+<tr>
615
+
616
+         <td>US</td>
464 617
 
465 618
          <td></td>
466 619
 
467 620
          <td>Up to date</td>
468 621
 
469 622
     <td> - </td>
470
-    <td><a href="http://tor.dont-know-me.at/dist/">http</a></td>
471
-    <td><a href="http://tor.dont-know-me.at/">http</a></td>
623
+    <td><a href="http://torproject.guilhem.org/dist/">http</a></td>
624
+    <td><a href="http://torproject.guilhem.org/">http</a></td>
625
+    <td><a href="https://torproject.guilhem.org/dist/">https</a></td>
626
+    <td><a href="https://torproject.guilhem.org/">https</a></td>
627
+    <td> - </td>
628
+    <td> - </td>
629
+</tr>
630
+     
631
+<tr>
632
+
633
+         <td>DE</td>
634
+
635
+         <td>chaos darmstadt</td>
636
+
637
+         <td>Up to date</td>
638
+
639
+    <td> - </td>
640
+    <td><a href="http://mirrors.chaos-darmstadt.de/tor-mirror/dist/">http</a></td>
641
+    <td><a href="http://mirrors.chaos-darmstadt.de/tor-mirror/">http</a></td>
642
+    <td> - </td>
643
+    <td> - </td>
644
+    <td> - </td>
645
+    <td> - </td>
646
+</tr>
647
+     
648
+<tr>
649
+
650
+         <td>RU</td>
651
+
652
+         <td>Soviet Anonymous</td>
653
+
654
+         <td>Up to date</td>
655
+
656
+    <td><a href="ftp://creep.im/mirrors/tor">ftp</a></td>
657
+    <td><a href="http://creep.im/tor/dist/">http</a></td>
658
+    <td><a href="http://creep.im/tor">http</a></td>
659
+    <td><a href="https://creep.im/tor/dist/">https</a></td>
660
+    <td><a href="https://creep.im/tor">https</a></td>
661
+    <td><a href="rsync://creep.im/tor-dist">rsync</a></td>
662
+    <td><a href="rsync://creep.im/tor">rsync</a></td>
663
+</tr>
664
+     
665
+<tr>
666
+
667
+         <td>US</td>
668
+
669
+         <td></td>
670
+
671
+         <td>Up to date</td>
672
+
673
+    <td><a href="ftp://mirrors.go-parts.com/tor/">ftp</a></td>
674
+    <td><a href="http://mirrors.go-parts.com/tor/dist/">http</a></td>
472 675
     <td> - </td>
473 676
     <td> - </td>
474 677
     <td> - </td>
678
+    <td><a href="rsync://mirrors.go-parts.com/mirrors/tor/">rsync</a></td>
475 679
     <td> - </td>
476 680
 </tr>
477 681
      
... ...
@@ -494,32 +698,32 @@
494 698
      
495 699
 <tr>
496 700
 
497
-         <td>IS</td>
701
+         <td>GB</td>
498 702
 
499
-         <td>myRL.net</td>
703
+         <td>torland</td>
500 704
 
501 705
          <td>Up to date</td>
502 706
 
503 707
     <td> - </td>
504
-    <td><a href="http://tor.myrl.net/dist/">http</a></td>
505
-    <td><a href="http://tor.myrl.net/">http</a></td>
506
-    <td><a href="https://tor.myrl.net/dist/">https</a></td>
507
-    <td><a href="https://tor.myrl.net/">https</a></td>
708
+    <td><a href="http://mirror.torland.me/torproject.org/dist/">http</a></td>
709
+    <td><a href="http://mirror.torland.me/torproject.org/">http</a></td>
710
+    <td><a href="https://mirror.torland.me/torproject.org/dist/">https</a></td>
711
+    <td><a href="https://mirror.torland.me/torproject.org/">https</a></td>
508 712
     <td> - </td>
509 713
     <td> - </td>
510 714
 </tr>
511 715
      
512 716
 <tr>
513 717
 
514
-         <td>US</td>
718
+         <td>FR</td>
515 719
 
516
-         <td>hessmo</td>
720
+         <td></td>
517 721
 
518 722
          <td>Up to date</td>
519 723
 
520 724
     <td> - </td>
521
-    <td><a href="http://mirror.hessmo.com/tor/dist/">http</a></td>
522
-    <td><a href="http://mirror.hessmo.com/tor/">http</a></td>
725
+    <td><a href="http://torproject.c3l.lu/dist/">http</a></td>
726
+    <td><a href="http://torproject.c3l.lu/">http</a></td>
523 727
     <td> - </td>
524 728
     <td> - </td>
525 729
     <td> - </td>
... ...
@@ -528,66 +732,66 @@
528 732
      
529 733
 <tr>
530 734
 
531
-         <td>DE</td>
735
+         <td>CZ</td>
532 736
 
533
-         <td></td>
737
+         <td>Lightning-bolt.net</td>
534 738
 
535 739
          <td>Up to date</td>
536 740
 
537 741
     <td> - </td>
538
-    <td><a href="http://tor.linuxlounge.net/dist/">http</a></td>
539
-    <td><a href="http://tor.linuxlounge.net/">http</a></td>
540
-    <td><a href="https://tor.linuxlounge.net/dist/">https</a></td>
541
-    <td><a href="https://tor.linuxlounge.net/">https</a></td>
742
+    <td><a href="http://torproject.lightning-bolt.net/dist/">http</a></td>
743
+    <td><a href="http://torproject.lightning-bolt.net/">http</a></td>
744
+    <td> - </td>
745
+    <td> - </td>
542 746
     <td> - </td>
543 747
     <td> - </td>
544 748
 </tr>
545 749
      
546 750
 <tr>
547 751
 
548
-         <td>DE</td>
752
+         <td>IS</td>
549 753
 
550
-         <td>crazyhaze.de</td>
754
+         <td>myRL.net</td>
551 755
 
552 756
          <td>Up to date</td>
553 757
 
554 758
     <td> - </td>
555
-    <td><a href="http://tor.crazyhaze.de/dist/">http</a></td>
556
-    <td><a href="http://tor.crazyhaze.de/">http</a></td>
557
-    <td><a href="https://tor.crazyhaze.de/dist/">https</a></td>
558
-    <td><a href="https://tor.crazyhaze.de/">https</a></td>
759
+    <td><a href="http://tor.myrl.net/dist/">http</a></td>
760
+    <td><a href="http://tor.myrl.net/">http</a></td>
761
+    <td><a href="https://tor.myrl.net/dist/">https</a></td>
762
+    <td><a href="https://tor.myrl.net/">https</a></td>
559 763
     <td> - </td>
560 764
     <td> - </td>
561 765
 </tr>
562 766
      
563 767
 <tr>
564 768
 
565
-         <td>MX</td>
769
+         <td>NL</td>
566 770
 
567
-         <td></td>
771
+         <td>Amorphis</td>
568 772
 
569 773
          <td>Up to date</td>
570 774
 
571 775
     <td> - </td>
572
-    <td><a href="http://fbnaia.homelinux.net/torproject/dist/">http</a></td>
573
-    <td><a href="http://fbnaia.homelinux.net/torproject/">http</a></td>
574
-    <td><a href="https://fbnaia.homelinux.net/torproject//dist/">https</a></td>
575
-    <td><a href="https://fbnaia.homelinux.net/torproject/">https</a></td>
776
+    <td><a href="http://tor.amorphis.eu/dist/">http</a></td>
777
+    <td><a href="http://tor.amorphis.eu/">http</a></td>
778
+    <td> - </td>
779
+    <td> - </td>
576 780
     <td> - </td>
577 781
     <td> - </td>
578 782
 </tr>
579 783
      
580 784
 <tr>
581 785
 
582
-         <td>NL</td>
786
+         <td>DK</td>
583 787
 
584
-         <td>BBLN</td>
788
+         <td>Zentrum der Gesundheit</td>
585 789
 
586 790
          <td>Up to date</td>
587 791
 
588 792
     <td> - </td>
589
-    <td><a href="http://t02.nl/mirror/dist/">http</a></td>
590
-    <td><a href="http://t02.nl/mirror/">http</a></td>
793
+    <td><a href="http://tor.idnr.ws/dist/">http</a></td>
794
+    <td><a href="http://tor.idnr.ws/">http</a></td>
591 795
     <td> - </td>
592 796
     <td> - </td>
593 797
     <td> - </td>
... ...
@@ -596,49 +800,49 @@
596 800
      
597 801
 <tr>
598 802
 
599
-         <td>CH</td>
803
+         <td>ES</td>
600 804
 
601 805
          <td></td>
602 806
 
603 807
          <td>Up to date</td>
604 808
 
605 809
     <td> - </td>
606
-    <td><a href="http://torproject.pillo-srv.ch/dist/">http</a></td>
607
-    <td><a href="http://torproject.pillo-srv.ch/">http</a></td>
608
-    <td><a href="https://torproject.pillo-srv.ch/dist/">https</a></td>
609
-    <td><a href="https://torproject.pillo-srv.ch/">https</a></td>
810
+    <td><a href="http://tor.zilog.es/dist/">http</a></td>
811
+    <td><a href="http://tor.zilog.es/">http</a></td>
812
+    <td> - </td>
813
+    <td> - </td>
610 814
     <td> - </td>
611 815
     <td> - </td>
612 816
 </tr>
613 817
      
614 818
 <tr>
615 819
 
616
-         <td>FR</td>
820
+         <td>SE</td>
617 821
 
618
-         <td>BarkerJr</td>
822
+         <td>homosu</td>
619 823
 
620 824
          <td>Up to date</td>
621 825
 
622 826
     <td> - </td>
623
-    <td><a href="http://www.oignon.net/dist/">http</a></td>
624
-    <td><a href="http://www.oignon.net/">http</a></td>
625
-    <td><a href="https://www.oignon.net/dist/">https</a></td>
626
-    <td><a href="https://www.oignon.net/">https</a></td>
827
+    <td><a href="http://tor.homosu.net/dist/">http</a></td>
828
+    <td><a href="http://tor.homosu.net/">http</a></td>
829
+    <td> - </td>
830
+    <td> - </td>
627 831
     <td> - </td>
628 832
     <td> - </td>
629 833
 </tr>
630 834
      
631 835
 <tr>
632 836
 
633
-         <td>AU</td>
837
+         <td>IN</td>
634 838
 
635
-         <td>CoffsWiFi</td>
839
+         <td>India Tor Fans</td>
636 840
 
637
-         <td>Up to date</td>
841
+         <td>DO NOT USE. Out of date.</td>
638 842
 
639 843
     <td> - </td>
640
-    <td><a href="http://torproject.coffswifi.net/dist">http</a></td>
641
-    <td><a href="http://torproject.coffswifi.net">http</a></td>
844
+    <td><a href="http://www.torproject.org.in/dist/">http</a></td>
845
+    <td><a href="http://www.torproject.org.in/">http</a></td>
642 846
     <td> - </td>
643 847
     <td> - </td>
644 848
     <td> - </td>
... ...
@@ -647,32 +851,66 @@
647 851
      
648 852
 <tr>
649 853
 
650
-         <td>FR</td>
854
+         <td>TN</td>
651 855
 
652 856
          <td></td>
653 857
 
654
-         <td>Up to date</td>
858
+         <td>DO NOT USE. Out of date.</td>
655 859
 
656 860
     <td> - </td>
657
-    <td><a href="http://tor.mirror.chekanov.net/dist/">http</a></td>
658
-    <td><a href="http://tor.mirror.chekanov.net/">http</a></td>
659 861
     <td> - </td>
862
+    <td><a href="http://torproject.antagonism.org/">http</a></td>
660 863
     <td> - </td>
864
+    <td><a href="https://torproject.antagonism.org/">https</a></td>
661 865
     <td> - </td>
662 866
     <td> - </td>
663 867
 </tr>
664 868
      
665 869
 <tr>
666 870
 
667
-         <td>HU</td>
871
+         <td>US</td>
872
+
873
+         <td></td>
668 874
 
669 875
          <td>Unknown</td>
670 876
 
671
-         <td>Up to date</td>
877
+    <td> - </td>
878
+    <td><a href="http://tor.loritsu.com/dist/">http</a></td>
879
+    <td><a href="http://tor.loritsu.com/">http</a></td>
880
+    <td> - </td>
881
+    <td> - </td>
882
+    <td> - </td>
883
+    <td> - </td>
884
+</tr>
885
+     
886
+<tr>
887
+
888
+         <td>US</td>
889
+
890
+         <td></td>
891
+
892
+         <td>Unknown</td>
672 893
 
673 894
     <td> - </td>
674
-    <td><a href="http://mirror.tor.hu/dist/">http</a></td>
675
-    <td><a href="http://mirror.tor.hu/">http</a></td>
895
+    <td><a href="http://tor.mirrors.whitedholdings.org/dist/">http</a></td>
896
+    <td><a href="http://tor.mirrors.whitedholdings.org/">http</a></td>
897
+    <td><a href="https://tor.mirrors.whitedholdings.org/dist/">https</a></td>
898
+    <td><a href="https://tor.mirrors.whitedholdings.org/">https</a></td>
899
+    <td><a href="rsync://tor.mirrors.whitedholdings.org/tor-dist">rsync</a></td>
900
+    <td><a href="rsync://mirrors.whitedholdings.org/tor">rsync</a></td>
901
+</tr>
902
+     
903
+<tr>
904
+
905
+         <td>US</td>
906
+
907
+         <td>searchprivate</td>
908
+
909
+         <td>DO NOT USE. Out of date.</td>
910
+
911
+    <td> - </td>
912
+    <td><a href="http://tor.searchprivate.com/dist/">http</a></td>
913
+    <td><a href="http://tor.searchprivate.com/">http</a></td>
676 914
     <td> - </td>
677 915
     <td> - </td>
678 916
     <td> - </td>
... ...
@@ -683,13 +921,13 @@
683 921
 
684 922
          <td>DE</td>
685 923
 
686
-         <td>borgmann.tv</td>
924
+         <td></td>
687 925
 
688
-         <td>Up to date</td>
926
+         <td>Unknown</td>
689 927
 
690 928
     <td> - </td>
691
-    <td><a href="http://tor.borgmann.tv/dist/">http</a></td>
692
-    <td><a href="http://tor.borgmann.tv/">http</a></td>
929
+    <td><a href="http://tor.taskserver.de/dist/">http</a></td>
930
+    <td><a href="http://tor.taskserver.de/">http</a></td>
693 931
     <td> - </td>
694 932
     <td> - </td>
695 933
     <td> - </td>
... ...
@@ -698,49 +936,49 @@
698 936
      
699 937
 <tr>
700 938
 
701
-         <td>US</td>
939
+         <td>LU</td>
702 940
 
703
-         <td>Xpdm</td>
941
+         <td></td>
704 942
 
705
-         <td>Up to date</td>
943
+         <td>Unknown</td>
706 944
 
707 945
     <td> - </td>
708
-    <td><a href="http://torproj.xpdm.us/dist/">http</a></td>
709
-    <td><a href="http://torproj.xpdm.us/">http</a></td>
710
-    <td><a href="https://torproj.xpdm.us/dist/">https</a></td>
711
-    <td><a href="https://torproj.xpdm.us/">https</a></td>
946
+    <td><a href="http://torproject.adamas.ai/dist/">http</a></td>
947
+    <td><a href="http://torproject.adamas.ai/">http</a></td>
948
+    <td> - </td>
949
+    <td> - </td>
712 950
     <td> - </td>
713 951
     <td> - </td>
714 952
 </tr>
715 953
      
716 954
 <tr>
717 955
 
718
-         <td>GB</td>
956
+         <td>DE</td>
719 957
 
720
-         <td>torland</td>
958
+         <td>Netzkonstrukt Berlin</td>
721 959
 
722
-         <td>Up to date</td>
960
+         <td>DO NOT USE. Out of date.</td>
723 961
 
724 962
     <td> - </td>
725
-    <td><a href="http://mirror.torland.me/torproject.org/dist/">http</a></td>
726
-    <td><a href="http://mirror.torland.me/torproject.org/">http</a></td>
727
-    <td><a href="https://mirror.torland.me/torproject.org/dist/">https</a></td>
728
-    <td><a href="https://mirror.torland.me/torproject.org/">https</a></td>
963
+    <td><a href="http://mirror.ntzk.de/torproject.org/dist/">http</a></td>
964
+    <td><a href="http://mirror.ntzk.de/torproject.org/">http</a></td>
965
+    <td> - </td>
966
+    <td> - </td>
729 967
     <td> - </td>
730 968
     <td> - </td>
731 969
 </tr>
732 970
      
733 971
 <tr>
734 972
 
735
-         <td>IS</td>
973
+         <td>UA</td>
736 974
 
737
-         <td>TheOnionRouter</td>
975
+         <td></td>
738 976
 
739
-         <td>Up to date</td>
977
+         <td>Unknown</td>
740 978
 
741 979
     <td> - </td>
742
-    <td><a href="http://theonionrouter.com/dist/">http</a></td>
743
-    <td><a href="http://theonionrouter.com/">http</a></td>
980
+    <td><a href="http://torua.reactor-xg.kiev.ua/dist/">http</a></td>
981
+    <td><a href="http://torua.reactor-xg.kiev.ua/">http</a></td>
744 982
     <td> - </td>
745 983
     <td> - </td>
746 984
     <td> - </td>
... ...
@@ -749,15 +987,32 @@
749 987
      
750 988
 <tr>
751 989
 
752
-         <td>SE</td>
990
+         <td>MX</td>
753 991
 
754
-         <td>homosu</td>
992
+         <td></td>
755 993
 
756
-         <td>Up to date</td>
994
+         <td>Unknown</td>
757 995
 
758 996
     <td> - </td>
759
-    <td><a href="http://tor.homosu.net/dist/">http</a></td>
760
-    <td><a href="http://tor.homosu.net/">http</a></td>
997
+    <td><a href="http://fbnaia.homelinux.net/torproject/dist/">http</a></td>
998
+    <td><a href="http://fbnaia.homelinux.net/torproject/">http</a></td>
999
+    <td><a href="https://fbnaia.homelinux.net/torproject//dist/">https</a></td>
1000
+    <td><a href="https://fbnaia.homelinux.net/torproject/">https</a></td>
1001
+    <td> - </td>
1002
+    <td> - </td>
1003
+</tr>
1004
+     
1005
+<tr>
1006
+
1007
+         <td>FR</td>
1008
+
1009
+         <td></td>
1010
+
1011
+         <td>Unknown</td>
1012
+
1013
+    <td> - </td>
1014
+    <td><a href="http://37.187.0.127/tormirror/dist/">http</a></td>
1015
+    <td><a href="http://37.187.0.127/tormirror/">http</a></td>
761 1016
     <td> - </td>
762 1017
     <td> - </td>
763 1018
     <td> - </td>
... ...
@@ -770,11 +1025,11 @@
770 1025
 
771 1026
          <td></td>
772 1027
 
773
-         <td>Up to date</td>
1028
+         <td>Unknown</td>
774 1029
 
775 1030
     <td> - </td>
776
-    <td><a href="http://mirror.nametoday.me/tor/dist/">http</a></td>
777
-    <td><a href="http://mirror.nametoday.me/tor/">http</a></td>
1031
+    <td><a href="http://tor.minibofh.org/dist/">http</a></td>
1032
+    <td><a href="http://tor.minibofh.org/">http</a></td>
778 1033
     <td> - </td>
779 1034
     <td> - </td>
780 1035
     <td> - </td>
... ...
@@ -783,68 +1038,136 @@
783 1038
      
784 1039
 <tr>
785 1040
 
786
-         <td>LT</td>
1041
+         <td>UK</td>
787 1042
 
788 1043
          <td></td>
789 1044
 
790
-         <td>Up to date</td>
1045
+         <td>Unknown</td>
791 1046
 
792 1047
     <td> - </td>
793
-    <td><a href="http://tor.vesta.nu/dist/">http</a></td>
794
-    <td><a href="http://tor.vesta.nu/">http</a></td>
1048
+    <td><a href="http://tor.mage.me.uk/dist/">http</a></td>
1049
+    <td><a href="http://tor.mage.me.uk/">http</a></td>
795 1050
     <td> - </td>
796 1051
     <td> - </td>
797 1052
     <td> - </td>
798 1053
     <td> - </td>
799 1054
 </tr>
800 1055
      
1056
+<tr>
1057
+
1058
+         <td>DE</td>
1059
+
1060
+         <td>tor-mirror.de</td>
1061
+
1062
+         <td>Unknown</td>
1063
+
1064
+    <td> - </td>
1065
+    <td><a href="http://tor-mirror.de/dist/">http</a></td>
1066
+    <td><a href="http://tor-mirror.de/">http</a></td>
1067
+    <td><a href="https://tor-mirror.de/dist/">https</a></td>
1068
+    <td><a href="https://tor-mirror.de/">https</a></td>
1069
+    <td> - </td>
1070
+    <td> - </td>
1071
+</tr>
1072
+     
1073
+<tr>
1074
+
1075
+         <td>DE</td>
1076
+
1077
+         <td>[[:bbs:]]</td>
1078
+
1079
+         <td>Unknown</td>
1080
+
1081
+    <td> - </td>
1082
+    <td><a href="http://tor.blingblingsquad.net/dist/">http</a></td>
1083
+    <td><a href="http://tor.blingblingsquad.net/">http</a></td>
1084
+    <td><a href="https://tor.blingblingsquad.net/dist/">https</a></td>
1085
+    <td><a href="https://tor.blingblingsquad.net/">https</a></td>
1086
+    <td> - </td>
1087
+    <td> - </td>
1088
+</tr>
1089
+     
801 1090
 <tr>
802 1091
 
803 1092
          <td>US</td>
804 1093
 
805
-         <td>AskApache</td>
1094
+         <td></td>
806 1095
 
807
-         <td>Up to date</td>
1096
+         <td>Unknown</td>
808 1097
 
809 1098
     <td> - </td>
810
-    <td><a href="http://tor.askapache.com/dist/">http</a></td>
811
-    <td><a href="http://tor.askapache.com/">http</a></td>
1099
+    <td><a href="http://www.netgull.com/torproject/">http</a></td>
1100
+    <td> - </td>
812 1101
     <td> - </td>
813 1102
     <td> - </td>
814 1103
     <td> - </td>
815 1104
     <td> - </td>
816 1105
 </tr>
817 1106
      
1107
+<tr>
1108
+
1109
+         <td>US</td>
1110
+
1111
+         <td>NW Linux</td>
1112
+
1113
+         <td>Unknown</td>
1114
+
1115
+    <td> - </td>
1116
+    <td><a href="http://torproject.nwlinux.us/dist/">http</a></td>
1117
+    <td><a href="http://torproject.nwlinux.us/">http</a></td>
1118
+    <td> - </td>
1119
+    <td> - </td>
1120
+    <td><a href="rsync://nwlinux.us/tor-dist">rsync</a></td>
1121
+    <td><a href="rsync://nwlinux.us/tor-web">rsync</a></td>
1122
+</tr>
1123
+     
818 1124
 <tr>
819 1125
 
820 1126
          <td>NL</td>
821 1127
 
822
-         <td>Amorphis</td>
1128
+         <td></td>
823 1129
 
824
-         <td>Up to date</td>
1130
+         <td>Unknown</td>
825 1131
 
826 1132
     <td> - </td>
827
-    <td><a href="http://tor.amorphis.eu/dist/">http</a></td>
828
-    <td><a href="http://tor.amorphis.eu/">http</a></td>
829 1133
     <td> - </td>
830 1134
     <td> - </td>
1135
+    <td><a href="https://www.coevoet.nl/tor/dist/">https</a></td>
1136
+    <td> - </td>
831 1137
     <td> - </td>
832 1138
     <td> - </td>
833 1139
 </tr>
834 1140
      
835 1141
 <tr>
836 1142
 
837
-         <td>IN</td>
1143
+         <td>FR</td>
838 1144
 
839
-         <td>India Tor Fans</td>
1145
+         <td>LazyTiger</td>
840 1146
 
841
-         <td>DO NOT USE. Out of date.</td>
1147
+         <td>Unknown</td>
842 1148
 
843 1149
     <td> - </td>
844
-    <td><a href="http://www.torproject.org.in/dist/">http</a></td>
845
-    <td><a href="http://www.torproject.org.in/">http</a></td>
1150
+    <td><a href="http://tor.taiga-san.net/dist/">http</a></td>
1151
+    <td><a href="http://tor.taiga-san.net/">http</a></td>
846 1152
     <td> - </td>
847 1153
     <td> - </td>
848 1154
     <td> - </td>
849 1155
     <td> - </td>
850 1156
 </tr>
1157
+     
1158
+<tr>
1159
+
1160
+         <td>EE</td>
1161
+
1162
+         <td></td>
1163
+
1164
+         <td>Unknown</td>
1165
+
1166
+    <td> - </td>
1167
+    <td><a href="http://tor.li/dist/">http</a></td>
1168
+    <td><a href="http://tor.li/">http</a></td>
1169
+    <td><a href="https://tor.li/dist/">https</a></td>
1170
+    <td><a href="https://tor.li/">https</a></td>
1171
+    <td> - </td>
1172
+    <td> - </td>
1173
+</tr>
... ...
@@ -0,0 +1,70 @@
1
+adminContact, orgName, isoCC, subRegion, region, ipv4, ipv6, loadBalanced, httpWebsiteMirror, httpsWebsiteMirror, rsyncWebsiteMirror, ftpWebsiteMirror, httpDistMirror, httpsDistMirror, rsyncDistMirror, hiddenServiceMirror, updateDate
2
+, , US, , US, True, False, No, http://mirror.nametoday.me/tor/, , , , http://mirror.nametoday.me/tor/dist/, , , , Thu Dec  5 03:59:24 2013
3
+, , US, , US, True, True, No, http://tor.loritsu.com/, , , , http://tor.loritsu.com/dist/, , , , 
4
+info AT zentrum-der-gesundheit DOT de, Zentrum der Gesundheit, DK, , Europe, True, False, Unknown, http://tor.idnr.ws/, , , , http://tor.idnr.ws/dist/, , , , Wed Dec  4 07:16:29 2013
5
+http://www.multinet.no, MultiNet AS, NO, Trondheim, Trondheim, True, True, No, http://tor.multinet.no/, , , , http://tor.multinet.no/dist/, , , , Thu Dec  5 03:59:24 2013
6
+, , US, , US, True, False, No, http://tor.mirrors.whitedholdings.org/, https://tor.mirrors.whitedholdings.org/, rsync://mirrors.whitedholdings.org/tor, , http://tor.mirrors.whitedholdings.org/dist/, https://tor.mirrors.whitedholdings.org/dist/, rsync://tor.mirrors.whitedholdings.org/tor-dist, , 
7
+haskell at gmx.es, , ES, Spain, Europe, True, False, No, http://tor.zilog.es/, , , , http://tor.zilog.es/dist/, , , , Wed Dec  4 07:16:29 2013
8
+webmaster AT bbln DOT nl, BBLN, NL, The Netherlands, Europe, True, True, No, http://t02.nl/mirror/, , , , http://t02.nl/mirror/dist/, , , , Thu Dec  5 03:59:24 2013
9
+, , US, , US, True, False, No, http://199.175.55.215/, , , , http://199.175.55.215/dist/, , , , Thu Dec  5 03:59:24 2013
10
+margus.random at mail.ee, CyberSIDE, EE, , EE, True, False, No, http://cyberside.planet.ee/tor/, , , , http://cyberside.net.ee/tor/, , , , Thu Dec  5 03:59:24 2013
11
+, torproject.is, IS, , IS, True, False, No, http://torproject.is/, , , , http://torproject.is/dist/, , , , Thu Dec  5 03:59:24 2013
12
+, spline, DE, , DE, True, False, No, http://tor.spline.de/, https://tor.spline.inf.fu-berlin.de/, rsync://ftp.spline.de/tor, ftp://ftp.spline.de/pub/tor, http://tor.spline.de/dist/, https://tor.spline.inf.fu-berlin.de/dist/, rsync://ftp.spline.de/tor/dist, , Thu Dec  5 03:59:24 2013
13
+, me0w.cc, RO, , RO, True, False, No, http://tor.me0w.cc/, , , , http://tor.me0w.cc/dist/, , , , Thu Dec  5 03:59:24 2013
14
+, borgmann.tv, DE, , DE, True, False, No, http://tor.borgmann.tv/, , , , http://tor.borgmann.tv/dist/, , , , Thu Dec  5 03:59:24 2013
15
+security AT hostoffice DOT hu, Unknown, HU, Hungary, Europe, True, False, No, http://mirror.tor.hu/, , , , http://mirror.tor.hu/dist/, , , , Thu Dec  5 03:59:24 2013
16
+, , TN, , TN, True, False, No, http://torproject.antagonism.org/, https://torproject.antagonism.org/, , , , , , , Fri Jun 21 10:33:04 2013
17
+webmaster AT ccc DOT de, CCC, NL, , Europe, True, False, Unknown, http://tor.ccc.de/, , , , http://tor.ccc.de/dist/, , , , Thu Dec  5 03:59:24 2013
18
+, searchprivate, US, TX, US, True, False, No, http://tor.searchprivate.com/, , , , http://tor.searchprivate.com/dist/, , , , Sun Jul 29 23:49:26 2012
19
+, , AT, , AT, True, True, No, http://tor.dont-know-me.at/, , , , http://tor.dont-know-me.at/dist/, , , , Thu Dec  5 03:59:24 2013
20
+marz.michael at gmail.com, , DE, , , True, False, No, http://tor.taskserver.de/, , , , http://tor.taskserver.de/dist/, , , , 
21
+, , LU, , LU, True, False, No, http://torproject.adamas.ai/, , , , http://torproject.adamas.ai/dist/, , , , 
22
+mirror ntzk de, Netzkonstrukt Berlin, DE, Germany, Europe, True, False, No, http://mirror.ntzk.de/torproject.org/, , , , http://mirror.ntzk.de/torproject.org/dist/, , , , Sun Dec  1 03:54:10 2013
23
+coralcdn.org, CoralCDN, INT, , INT, True, False, Yes, http://www.torproject.org.nyud.net/, , , , http://www.torproject.org.nyud.net/dist/, , , , 
24
+, , US, , US, True, True, No, http://mirror.nametoday.me/tor/, , , , http://mirror.nametoday.me/tor/dist/, , , , Thu Dec  5 03:59:24 2013
25
+, , AT, , AT, True, False, No, http://torproject.ph3x.at/, , , , http://torproject.ph3x.at/dist/, , , , Thu Dec  5 03:59:24 2013
26
+info /AT enn /DOT lu, Frenn vun der Enn A.S.B.L., IS, Iceland, Europe, True, False, No, http://torproject.lu/, , , , http://torproject.lu/dist/, , , http://btn6gqzqevlhoryd.onion, Thu Dec  5 03:59:24 2013
27
+, , CH, , CH, True, False, No, http://torproject.pillo-srv.ch/, https://torproject.pillo-srv.ch/, , , http://torproject.pillo-srv.ch/dist/, https://torproject.pillo-srv.ch/dist/, , , Thu Dec  5 03:59:24 2013
28
+neutrino8 AT gmail DOT com, teambelgium, BE, Belgium, Europe, True, False, No, http://tor.teambelgium.net:8082/, , , ftp://tor.teambelgium.net:2121/torproject/, http://tor.teambelgium.net:8082/dist/, , , , Thu Dec  5 03:59:24 2013
29
+tormaster AT xpdm DOT us, Xpdm, US, , North America, True, False, Unknown, http://torproj.xpdm.us/, https://torproj.xpdm.us/, , , http://torproj.xpdm.us/dist/, https://torproj.xpdm.us/dist/, , http://h3prhz46uktgm4tt.onion/, Thu Dec  5 03:59:24 2013
30
+, , UA, , UA, True, False, No, http://torua.reactor-xg.kiev.ua/, , , , http://torua.reactor-xg.kiev.ua/dist/, , , , 
31
+ mail AT benjamin-meier DOT info, beme it, DE, , DE, True, False, No, http://tor.beme-it.de/, https://tor.beme-it.de/, rsync://tor.beme-it.de/tor, , http://tor.beme-it.de/dist/, https://tor.beme-it.de/dist/, rsync://tor.beme-it.de/tor/dist, , Thu Dec  5 03:59:24 2013
32
+wollomatic at posteo.eu, , DE, Germany, Europe, True, True, No, http://tormirror.almnet.de/, https://tormirror.almnet.de/, , , http://tormirror.almnet.de/dist/, https://tormirror.almnet.de/dist/, , , Thu Dec  5 03:59:24 2013
33
+, , LT, , LT, True, False, No, http://tor.vesta.nu/, , , , http://tor.vesta.nu/dist/, , , , Thu Dec  5 03:59:24 2013
34
+, , MX, , MX, True, False, No, http://fbnaia.homelinux.net/torproject/, https://fbnaia.homelinux.net/torproject/, , , http://fbnaia.homelinux.net/torproject/dist/, https://fbnaia.homelinux.net/torproject//dist/, , , Thu Dec  5 03:59:24 2013
35
+, , FR, , , True, False, No, http://37.187.0.127/tormirror/, , , , http://37.187.0.127/tormirror/dist/, , , , 
36
+, , US, , US, True, False, No, http://tor.minibofh.org/, , , , http://tor.minibofh.org/dist/, , , , 
37
+, , UK, , UK, True, False, No, http://tor.mage.me.uk/, , , , http://tor.mage.me.uk/dist/, , , , 
38
+webmaster AT askapache DOT com, AskApache, US, California, US, True, False, No, http://tor.askapache.com/, , , , http://tor.askapache.com/dist/, , , , Thu Dec  5 03:59:24 2013
39
+nsane2307 eml cc, tor-mirror.de, DE, Germany, Europe, True, False, No, http://tor-mirror.de/, https://tor-mirror.de/, , , http://tor-mirror.de/dist/, https://tor-mirror.de/dist/, , , 
40
+, hessmo, US, , US, True, False, No, http://mirror.hessmo.com/tor/, , , , http://mirror.hessmo.com/tor/dist/, , , , Thu Dec  5 03:59:24 2013
41
+, , DE, , DE, True, False, No, http://tor.dev-random.de/, https://tor.dev-random.de/, , , http://tor.dev-random.de/dist/, https://tor.dev-random.de/dist/, , , Thu Dec  5 03:59:24 2013
42
+, India Tor Fans, IN, , IN, True, False, No, http://www.torproject.org.in/, , , , http://www.torproject.org.in/dist/, , , , Mon Nov 25 18:31:18 2013
43
+mirror-admin@linsrv.net, linsrv, FR, France, Europe, True, False, No, http://mirrors.linsrv.net/torproject/, , mirrors.linsrv.net::pub/torproject, ftp://ftp.linsrv.net/pub/torproject/, http://mirrors.linsrv.net/torproject/dist/, , mirrors.linsrv.net::pub/torproject/dist, , Thu Dec  5 03:59:24 2013
44
+, , FR, , FR, True, False, No, http://tor.mirror.chekanov.net/, , , , http://tor.mirror.chekanov.net/dist/, , , , Thu Dec  5 03:59:24 2013
45
+http://sebastian.pfeifer.or.at/, TechAsk.IT, AT, Favoriten, Wien, True, True, No, http://www.unicorncloud.org/public/torproject.org/, https://www.unicorncloud.org/public/torproject.org/, , , http://www.unicorncloud.org/public/torproject.org/dist, https://www.unicorncloud.org/public/torproject.org/dist, , , Thu Dec  5 03:59:24 2013
46
+BarkerJr AT barkerjr DOT net, BarkerJr, FR, , FR, True, False, No, http://www.oignon.net/, https://www.oignon.net/, , , http://www.oignon.net/dist/, https://www.oignon.net/dist/, , , Thu Dec  5 03:59:24 2013
47
+root AT amorphis DOT eu, Amorphis, NL, , Europe, True, False, Unknown, http://tor.amorphis.eu/, , , , http://tor.amorphis.eu/dist/, , , , Wed Dec  4 22:13:02 2013
48
+hackthissite.org, HackThisSite.org, US, , US, True, True, No, http://tor.hackthissite.org/, https://tor.hackthissite.org/, , , http://mirror.hackthissite.org/tor, https://mirror.hackthissite.org/tor, , , Thu Dec  5 03:59:24 2013
49
+citizen428 AT gmail DOT com, [[:bbs:]], DE, , Europe, True, False, Unknown, http://tor.blingblingsquad.net/, https://tor.blingblingsquad.net/, , , http://tor.blingblingsquad.net/dist/, https://tor.blingblingsquad.net/dist/, , , 
50
+, , DE, , DE, True, False, No, http://tor.linuxlounge.net/, https://tor.linuxlounge.net/, , , http://tor.linuxlounge.net/dist/, https://tor.linuxlounge.net/dist/, , , 
51
+, , US, , US, True, False, No, , , , , http://www.netgull.com/torproject/, , , , 
52
+paul at coffswifi.net, CoffsWiFi, AU, Australia and New Zealand, APNIC, True, False, No, http://torproject.coffswifi.net, , , , http://torproject.coffswifi.net/dist, , , , Thu Dec  5 03:59:24 2013
53
+, cyberarmy, AT, , AT, True, False, No, http://tor.cyberarmy.at/, , , , , , , , Thu Dec  5 03:59:24 2013
54
+, , DE, , DE, True, False, No, http://torproject.cryptowars.info/, https://torproject.cryptowars.info/, rsync://torproject.cryptowars.info/, , http://torproject.cryptowars.info/dist/, https://torproject.cryptowars.info/dist/, , , Thu Dec  5 03:59:24 2013
55
+hostmaster AT zombiewerks DOT com, TheOnionRouter, IS, , Iceland, True, False, Unknown, http://theonionrouter.com/, , , , http://theonionrouter.com/dist/, , , , Thu Dec  5 03:59:24 2013
56
+, crazyhaze.de, DE, , DE, True, False, No, http://tor.crazyhaze.de/, https://tor.crazyhaze.de/, , , http://tor.crazyhaze.de/dist/, https://tor.crazyhaze.de/dist/, , , Thu Dec  5 03:59:24 2013
57
+, , US, , US, True, False, No, http://torproject.guilhem.org/, https://torproject.guilhem.org/, , , http://torproject.guilhem.org/dist/, https://torproject.guilhem.org/dist/, , , Thu Dec  5 03:59:24 2013
58
+, chaos darmstadt, DE, Germany, Europe, True, False, No, http://mirrors.chaos-darmstadt.de/tor-mirror/, , , , http://mirrors.chaos-darmstadt.de/tor-mirror/dist/, , , , Thu Dec  5 03:59:24 2013
59
+, Soviet Anonymous, RU, , RU, True, False, No, http://creep.im/tor, https://creep.im/tor, rsync://creep.im/tor, ftp://creep.im/mirrors/tor, http://creep.im/tor/dist/, https://creep.im/tor/dist/, rsync://creep.im/tor-dist, , Thu Dec  5 03:59:24 2013
60
+, , US, , US, True, False, No, , , , ftp://mirrors.go-parts.com/tor/, http://mirrors.go-parts.com/tor/dist/, , rsync://mirrors.go-parts.com/mirrors/tor/, , Thu Dec  5 03:59:24 2013
61
+, NW Linux, US, WA, US, True, False, No, http://torproject.nwlinux.us/, , rsync://nwlinux.us/tor-web, , http://torproject.nwlinux.us/dist/, , rsync://nwlinux.us/tor-dist, , 
62
+, torservers, DE, , DE, True, False, No, http://www.torservers.net/mirrors/torproject.org/, https://www.torservers.net/mirrors/torproject.org/, , , http://www.torservers.net/mirrors/torproject.org/dist/, https://www.torservers.net/mirrors/torproject.org/dist/, , http://hbpvnydyyjbmhx6b.onion/mirrors/torproject.org/, Thu Dec  5 03:59:24 2013
63
+, , NL, , NL, True, False, No, , , , , , https://www.coevoet.nl/tor/dist/, , , 
64
+, torland, GB, , GB, True, False, No, http://mirror.torland.me/torproject.org/, https://mirror.torland.me/torproject.org/, , , http://mirror.torland.me/torproject.org/dist/, https://mirror.torland.me/torproject.org/dist/, , , Thu Dec  5 03:59:24 2013
65
+, , FR, , FR, True, False, No, http://torproject.c3l.lu/, , , , http://torproject.c3l.lu/dist/, , , , Thu Dec  5 03:59:24 2013
66
+, Lightning-bolt.net, CZ, , CZ, True, False, No, http://torproject.lightning-bolt.net/, , , , http://torproject.lightning-bolt.net/dist/, , , , Thu Dec  5 03:59:24 2013
67
+, LazyTiger, FR, , FR, True, False, No, http://tor.taiga-san.net/, , , , http://tor.taiga-san.net/dist/, , , , 
68
+, , EE, , EE, True, False, No, http://tor.li/, https://tor.li/, , , http://tor.li/dist/, https://tor.li/dist/, , , 
69
+, homosu, SE, , SE, True, False, No, http://tor.homosu.net/, , , , http://tor.homosu.net/dist/, , , , Wed Dec  4 07:16:29 2013
70
+IceBear, myRL.net, IS, , IS, True, False, No, http://tor.myrl.net/, https://tor.myrl.net/, , , http://tor.myrl.net/dist/, https://tor.myrl.net/dist/, , , Thu Dec  5 03:59:24 2013
... ...
@@ -45,7 +45,7 @@ sub ExtractLinks {
45 45
          	push @links, Fetch($attr_value, \&ExtractLinks);
46 46
          }
47 47
 	 elsif ($attr_value =~ /\.(xpi|dmg|exe|tar\.gz)$/)
48
-	 #elsif ($attr_value =~ /\.(asc)$/)
48
+	 #elsif ($attr_value =~ /\.(asc)$/) # small pgp files easier to test with
49 49
          {
50 50
          	push @links, $attr_value;
51 51
          }
... ...
@@ -58,12 +58,11 @@ sub ExtractDate {
58 58
     $content    = sanitize($content);
59 59
     my $date    = str2time($content);
60 60
 
61
-    print "Extracting possible date from: $content\n";
62 61
     if ($date) {
63
-        print "We've fetched a date $date.\n";
62
+    	print "ExtractDate($content) = $date\n";
64 63
         return $date;
65 64
     } else {
66
-        print "We haven't fetched a date.\n";
65
+    	print "ExtractDate($content) = ?\n";
67 66
 	return undef;
68 67
     }
69 68
 }
... ...
@@ -75,12 +74,11 @@ sub ExtractSig {
75 74
 
76 75
 sub Fetch {
77 76
     my ($url, $sub) = @_; # Base url for mirror
78
-    print "Fetch $url\n";
79 77
 
80 78
     my $request = new HTTP::Request GET => "$url";
81 79
     my $result = $lua->request($request);
82 80
     my $code = $result->code();
83
-    print "\tResult code $code\n";
81
+    print "\nGET $url: $code\n";
84 82
 
85 83
     if ($result->is_success && $code eq "200"){
86 84
        my $content = $result->content;
... ...
@@ -89,1282 +87,48 @@ sub Fetch {
89 87
         } else {
90 88
             print "Unable to fetch $url, empty content returned.\n";
91 89
         }
92
-
93
-    } else {
94
-       print "Our request failed, we had no result.\n";
95 90
     }
96 91
 
97 92
     return undef;
98 93
 }
94
+my @columns;
95
+sub LoadMirrors {
96
+    open(CSV, "<", "include/tor-mirrors.csv") or die "Cannot open tor-mirrors.csv: $!"; 
97
+    my $line = <CSV>;
98
+    chomp($line);
99
+    @columns = split(/\s*,\s*/, $line);
100
+    my @mirrors;
101
+    while ($line = <CSV>)
102
+    {
103
+        chomp($line);
104
+	my @values = split(/\s*,\s*/, $line);
105
+	my %server;
106
+	for (my $i = 0; $i < scalar(@columns); $i++)
107
+	{
108
+	    $server{$columns[$i]} = $values[$i] || '';
109
+	}
110
+	$server{updateDate} = str2time($server{updateDate}) if ($server{updateDate});
111
+	push @mirrors, {%server};
112
+    }
113
+    close(CSV);
114
+    return @mirrors;
115
+}
99 116
 
100
-# This is the list of all known Tor mirrors
101
-# Add new mirrors to the bottom!
102
-my %m = (
103
-
104
-
105
-        mirror000 => {
106
-            adminContact => "coralcdn.org",
107
-            orgName => "CoralCDN",
108
-            isoCC => "INT",
109
-            subRegion => "",
110
-            region => "INT",
111
-            ipv4 => "True",
112
-            ipv6 => "False",
113
-            loadBalanced => "Yes",
114
-            httpWebsiteMirror => "http://www.torproject.org.nyud.net/",
115
-            httpsWebsiteMirror => "",
116
-            rsyncWebsiteMirror => "",
117
-            ftpWebsiteMirror => "",
118
-            httpDistMirror => "http://www.torproject.org.nyud.net/dist/",
119
-            httpsDistMirror => "",
120
-            rsyncDistMirror => "",
121
-            hiddenServiceMirror => ""
122
-        },
123
-
124
-        mirror001 => {
125
-            adminContact => "BarkerJr AT barkerjr DOT net",
126
-            orgName => "BarkerJr",
127
-            isoCC => "FR",
128
-            subRegion => "",
129
-            region => "FR",
130
-            ipv4 => "True",
131
-            ipv6 => "False",
132
-            loadBalanced => "No",
133
-            httpWebsiteMirror => "http://www.oignon.net/",
134
-            httpsWebsiteMirror => "https://www.oignon.net/",
135
-            rsyncWebsiteMirror => "",
136
-            ftpWebsiteMirror => "",
137
-            httpDistMirror => "http://www.oignon.net/dist/",
138
-            httpsDistMirror => "https://www.oignon.net/dist/",
139
-            rsyncDistMirror => "",
140
-            hiddenServiceMirror => ""
141
-        },
142
-
143
-       mirror003 => {
144
-            adminContact => "citizen428 AT gmail DOT com",
145
-            orgName => "[[:bbs:]]",
146
-            isoCC => "DE",
147
-            subRegion => "",
148
-            region => "Europe",
149
-            ipv4 => "True",
150
-            ipv6 => "False",
151
-            loadBalanced => "Unknown",
152
-            httpWebsiteMirror => "http://tor.blingblingsquad.net/",
153
-            httpsWebsiteMirror => "https://tor.blingblingsquad.net/",
154
-            ftpWebsiteMirror => "",
155
-            rsyncWebsiteMirror => "",
156
-            httpDistMirror => "http://tor.blingblingsquad.net/dist/",
157
-            httpsDistMirror => "https://tor.blingblingsquad.net/dist/",
158
-            rsyncDistMirror => ""
159
-        },
160
-
161
-       mirror007 => {
162
-            adminContact => "info AT zentrum-der-gesundheit DOT de",
163
-            orgName => "Zentrum der Gesundheit",
164
-            isoCC => "DK",
165
-            subRegion => "",
166
-            region => "Europe",
167
-            ipv4 => "True",
168
-            ipv6 => "False",
169
-            loadBalanced => "Unknown",
170
-            httpWebsiteMirror => "http://tor.idnr.ws/",
171
-            ftpWebsiteMirror => "",
172
-            rsyncWebsiteMirror => "",
173
-            httpDistMirror => "http://tor.idnr.ws/dist/",
174
-            rsyncDistMirror => ""
175
-        },
176
-
177
-       mirror008 => {
178
-            adminContact => "root AT amorphis DOT eu",
179
-            orgName => "Amorphis",
180
-            isoCC => "NL",
181
-            subRegion => "",
182
-            region => "Europe",
183
-            ipv4 => "True",
184
-            ipv6 => "False",
185
-            loadBalanced => "Unknown",
186
-            httpWebsiteMirror => "http://tor.amorphis.eu/",
187
-            rsyncWebsiteMirror => "",
188
-            ftpWebsiteMirror => "",
189
-            httpDistMirror => "http://tor.amorphis.eu/dist/",
190
-            rsyncDistMirror => ""
191
-        },
192
-       mirror010 => {
193
-            adminContact => "webmaster AT ccc DOT de",
194
-            orgName => "CCC",
195
-            isoCC => "NL",
196
-            subRegion => "",
197
-            region => "Europe",
198
-            ipv4 => "True",
199
-            ipv6 => "False",
200
-            loadBalanced => "Unknown",
201
-            httpWebsiteMirror => "http://tor.ccc.de/",
202
-            rsyncWebsiteMirror => "",
203
-            ftpWebsiteMirror => "",
204
-            httpDistMirror => "http://tor.ccc.de/dist/",
205
-            rsyncDistMirror => ""
206
-        },
207
-
208
-       mirror013 => {
209
-	    adminContact => "hostmaster AT zombiewerks DOT com",
210
-            orgName => "TheOnionRouter",
211
-            isoCC => "IS",
212
-            subRegion => "",
213
-            region => "Iceland",
214
-            ipv4 => "True",
215
-            ipv6 => "False",
216
-            loadBalanced => "Unknown",
217
-            httpWebsiteMirror => "http://theonionrouter.com/",
218
-            httpsWebsiteMirror => "",
219
-            rsyncWebsiteMirror => "",
220
-            ftpWebsiteMirror => "",
221
-            httpDistMirror => "http://theonionrouter.com/dist/",
222
-            httpsDistMirror => "",
223
-            rsyncDistMirror => ""
224
-        },
225
-    mirror014 => {
226
-        adminContact => "tormaster AT xpdm DOT us",
227
-        orgName => "Xpdm",
228
-        isoCC => "US",
229
-        subRegion => "",
230
-        region => "North America",
231
-        ipv4 => "True",
232
-        ipv6 => "False",
233
-        loadBalanced => "Unknown",
234
-        httpWebsiteMirror => "http://torproj.xpdm.us/",
235
-        httpsWebsiteMirror => "https://torproj.xpdm.us/",
236
-        rsyncWebsiteMirror => "",
237
-        ftpWebsiteMirror => "",
238
-        httpDistMirror => "http://torproj.xpdm.us/dist/",
239
-        httpsDistMirror => "https://torproj.xpdm.us/dist/",
240
-        rsyncDistMirror => "",
241
-        hiddenServiceMirror => "http://h3prhz46uktgm4tt.onion/"
242
-        },
243
-     mirror016 => {
244
-            adminContact => "security AT hostoffice DOT hu",
245
-            orgName => "Unknown",
246
-            isoCC => "HU",
247
-            subRegion => "Hungary",
248
-            region => "Europe",
249
-            ipv4 => "True",
250
-            ipv6 => "False",
251
-            loadBalanced => "No",
252
-            httpWebsiteMirror => "http://mirror.tor.hu/",
253
-            httpsWebsiteMirror => "",
254
-            rsyncWebsiteMirror => "",
255
-            ftpWebsiteMirror => "",
256
-            httpDistMirror => "http://mirror.tor.hu/dist/",
257
-            httpsDistMirror => "",
258
-            rsyncDistMirror => "",
259
-            hiddenServiceMirror => ""
260
-        },
261
-   mirror018 => {
262
-            adminContact => "",
263
-            orgName => "chaos darmstadt",
264
-            isoCC => "DE",
265
-            subRegion => "Germany",
266
-            region => "Europe",
267
-            ipv4 => "True",
268
-            ipv6 => "False",
269
-            loadBalanced => "No",
270
-            httpWebsiteMirror => "http://mirrors.chaos-darmstadt.de/tor-mirror/",
271
-            httpsWebsiteMirror => "",
272
-            rsyncWebsiteMirror => "",
273
-            ftpWebsiteMirror => "",
274
-            httpDistMirror => "http://mirrors.chaos-darmstadt.de/tor-mirror/dist/",
275
-            httpsDistMirror => "",
276
-            rsyncDistMirror => "",
277
-            hiddenServiceMirror => ""
278
-        },
279
-
280
-	mirror019 => {
281
-            adminContact => "webmaster AT askapache DOT com",
282
-            orgName => "AskApache",
283
-            isoCC => "US",
284
-            subRegion => "California",
285
-            region => "US",
286
-            ipv4 => "True",
287
-            ipv6 => "False",
288
-            loadBalanced => "No",
289
-            httpWebsiteMirror => "http://tor.askapache.com/",
290
-            httpsWebsiteMirror => "",
291
-            rsyncWebsiteMirror => "",
292
-            ftpWebsiteMirror => "",
293
-            httpDistMirror => "http://tor.askapache.com/dist/",
294
-            httpsDistMirror => "",
295
-            rsyncDistMirror => "",
296
-            hiddenServiceMirror => ""
297
-        },
298
-
299
-	mirror020 => {
300
-            adminContact => " mail AT benjamin-meier DOT info ",
301
-            orgName => "beme it",
302
-            isoCC => "DE",
303
-            subRegion => "",
304
-            region => "DE",
305
-            ipv4 => "True",
306
-            ipv6 => "False",
307
-            loadBalanced => "No",
308
-            httpWebsiteMirror => "http://tor.beme-it.de/",
309
-            httpsWebsiteMirror => "https://tor.beme-it.de/",
310
-            rsyncWebsiteMirror => "rsync://tor.beme-it.de/tor",
311
-            ftpWebsiteMirror => "",
312
-            httpDistMirror => "http://tor.beme-it.de/dist/",
313
-            httpsDistMirror => "https://tor.beme-it.de/dist/",
314
-            rsyncDistMirror => "rsync://tor.beme-it.de/tor/dist",
315
-            hiddenServiceMirror => ""
316
-        },
317
-
318
-        mirror021 => {
319
-            adminContact => "",
320
-            orgName => "India Tor Fans",
321
-            isoCC => "IN",
322
-            subRegion => "",
323
-            region => "IN",
324
-            ipv4 => "True",
325
-            ipv6 => "False",
326
-            loadBalanced => "No",
327
-            httpWebsiteMirror => "http://www.torproject.org.in/",
328
-            httpsWebsiteMirror => "",
329
-            rsyncWebsiteMirror => "",
330
-            ftpWebsiteMirror => "",
331
-            httpDistMirror => "http://www.torproject.org.in/dist/",
332
-            httpsDistMirror => "",
333
-            rsyncDistMirror => "",
334
-            hiddenServiceMirror => ""
335
-        },
336
-
337
-        mirror024 => {
338
-            adminContact => "",
339
-            orgName => "homosu",
340
-            isoCC => "SE",
341
-            subRegion => "",
342
-            region => "SE",
343
-            ipv4 => "True",
344
-            ipv6 => "False",
345
-            loadBalanced => "No",
346
-            httpWebsiteMirror => "http://tor.homosu.net/",
347
-            httpsWebsiteMirror => "",
348
-            rsyncWebsiteMirror => "",
349
-            ftpWebsiteMirror => "",
350
-            httpDistMirror => "http://tor.homosu.net/dist/",
351
-            httpsDistMirror => "",
352
-            rsyncDistMirror => "",
353
-            hiddenServiceMirror => ""
354
-        },
355
-
356
-        mirror025 => {
357
-            adminContact => "margus.random at mail.ee",
358
-            orgName => "CyberSIDE",
359
-            isoCC => "EE",
360
-            subRegion => "",
361
-            region => "EE",
362
-            ipv4 => "True",
363
-            ipv6 => "False",
364
-            loadBalanced => "No",
365
-            httpWebsiteMirror => "http://cyberside.planet.ee/tor/",
366
-            httpsWebsiteMirror => "",
367
-            rsyncWebsiteMirror => "",
368
-            ftpWebsiteMirror => "",
369
-            httpDistMirror => "http://cyberside.net.ee/tor/",
370
-            httpsDistMirror => "",
371
-            rsyncDistMirror => "",
372
-            hiddenServiceMirror => ""
373
-        },
117
+sub DumpMirrors {
118
+    my @m = @_;
119
+    open(CSV, ">", "tor-mirrors.csv") or die "Cannot open tor-mirrors.csv: $!";
120
+    print CSV join(", ", @columns) . "\n";
121
+    foreach my $server(@m) {
122
+	$server->{updateDate} = gmtime($server->{updateDate}) if ($server->{updateDate});
123
+        print CSV join(", ", map($server->{$_}, @columns));
124
+	print CSV "\n";
125
+    }
374 126
 
375
-        mirror028 => {
376
-            adminContact => "",
377
-            orgName => "NW Linux",
378
-            isoCC => "US",
379
-            subRegion => "WA",
380
-            region => "US",
381
-            ipv4 => "True",
382
-            ipv6 => "False",
383
-            loadBalanced => "No",
384
-            httpWebsiteMirror => "http://torproject.nwlinux.us/",
385
-            httpsWebsiteMirror => "",
386
-            rsyncWebsiteMirror => "rsync://nwlinux.us/tor-web",
387
-            ftpWebsiteMirror => "",
388
-            httpDistMirror => "http://torproject.nwlinux.us/dist/",
389
-            httpsDistMirror => "",
390
-            rsyncDistMirror => "rsync://nwlinux.us/tor-dist",
391
-            hiddenServiceMirror => "",
392
-        },
393
-        mirror029 => {
394
-            adminContact => "",
395
-            orgName => "LazyTiger",
396
-            isoCC => "FR",
397
-            subRegion => "",
398
-            region => "FR",
399
-            ipv4 => "True",
400
-            ipv6 => "False",
401
-            loadBalanced => "No",
402
-            httpWebsiteMirror => "http://tor.taiga-san.net/",
403
-            httpsWebsiteMirror => "",
404
-            rsyncWebsiteMirror => "",
405
-            ftpWebsiteMirror => "",
406
-            httpDistMirror => "http://tor.taiga-san.net/dist/",
407
-            httpsDistMirror => "",
408
-            rsyncDistMirror => "",
409
-            hiddenServiceMirror => "",
410
-        },
411
-        mirror030 => {
412
-            adminContact => "",
413
-            orgName => "searchprivate",
414
-            isoCC => "US",
415
-            subRegion => "TX",
416
-            region => "US",
417
-            ipv4 => "True",
418
-            ipv6 => "False",
419
-            loadBalanced => "No",
420
-            httpWebsiteMirror => "http://tor.searchprivate.com/",
421
-            httpsWebsiteMirror => "",
422
-            rsyncWebsiteMirror => "",
423
-            ftpWebsiteMirror => "",
424
-            httpDistMirror => "http://tor.searchprivate.com/dist/",
425
-            httpsDistMirror => "",
426
-            rsyncDistMirror => "",
427
-            hiddenServiceMirror => "",
428
-        },
429
-        mirror031 => {
430
-            adminContact => "",
431
-            orgName => "cyberarmy",
432
-            isoCC => "AT",
433
-            subRegion => "",
434
-            region => "AT",
435
-            ipv4 => "True",
436
-            ipv6 => "False",
437
-            loadBalanced => "No",
438
-            httpWebsiteMirror => "http://tor.cyberarmy.at/",
439
-            httpsWebsiteMirror => "",
440
-            rsyncWebsiteMirror => "",
441
-            ftpWebsiteMirror => "",
442
-            httpDistMirror => "",
443
-            httpsDistMirror => "",
444
-            rsyncDistMirror => "",
445
-            hiddenServiceMirror => "",
446
-        },
447
-        mirror032 => {
448
-            adminContact => "",
449
-            orgName => "torproject.is",
450
-            isoCC => "IS",
451
-            subRegion => "",
452
-            region => "IS",
453
-            ipv4 => "True",
454
-            ipv6 => "False",
455
-            loadBalanced => "No",
456
-            httpWebsiteMirror => "http://torproject.is/",
457
-            httpsWebsiteMirror => "",
458
-            rsyncWebsiteMirror => "",
459
-            ftpWebsiteMirror => "",
460
-            httpDistMirror => "http://torproject.is/dist/",
461
-            httpsDistMirror => "",
462
-            rsyncDistMirror => "",
463
-            hiddenServiceMirror => "",
464
-        },
465
-        mirror033 => {
466
-            adminContact => "",
467
-            orgName => "torservers",
468
-            isoCC => "DE",
469
-            subRegion => "",
470
-            region => "DE",
471
-            ipv4 => "True",
472
-            ipv6 => "False",
473
-            loadBalanced => "No",
474
-            httpWebsiteMirror => "http://www.torservers.net/mirrors/torproject.org/",
475
-            httpsWebsiteMirror => "https://www.torservers.net/mirrors/torproject.org/",
476
-            rsyncWebsiteMirror => "",
477
-            ftpWebsiteMirror => "",
478
-            httpDistMirror => "http://www.torservers.net/mirrors/torproject.org/dist/",
479
-            httpsDistMirror => "https://www.torservers.net/mirrors/torproject.org/dist/",
480
-            rsyncDistMirror => "",
481
-            hiddenServiceMirror => "http://hbpvnydyyjbmhx6b.onion/mirrors/torproject.org/",
482
-        },
483
-        mirror036 => {
484
-            adminContact => "",
485
-            orgName => "",
486
-            isoCC => "NL",
487
-            subRegion => "",
488
-            region => "NL",
489
-            ipv4 => "True",
490
-            ipv6 => "False",
491
-            loadBalanced => "No",
492
-            httpWebsiteMirror => "",
493
-            httpsWebsiteMirror => "",
494
-            rsyncWebsiteMirror => "",
495
-            ftpWebsiteMirror => "",
496
-            httpDistMirror => "",
497
-            httpsDistMirror => "https://www.coevoet.nl/tor/dist/",
498
-            rsyncDistMirror => "",
499
-            hiddenServiceMirror => "",
500
-      },
501
-        mirror038 => {
502
-            adminContact => "",
503
-            orgName => "",
504
-            isoCC => "LT",
505
-            subRegion => "",
506
-            region => "LT",
507
-            ipv4 => "True",
508
-            ipv6 => "False",
509
-            loadBalanced => "No",
510
-            httpWebsiteMirror => "http://tor.vesta.nu/",
511
-            httpsWebsiteMirror => "",
512
-            rsyncWebsiteMirror => "",
513
-            ftpWebsiteMirror => "",
514
-            httpDistMirror => "http://tor.vesta.nu/dist/",
515
-            httpsDistMirror => "",
516
-            rsyncDistMirror => "",
517
-            hiddenServiceMirror => "",
518
-      },
519
-        mirror045 => {
520
-            adminContact => "",
521
-            orgName => "",
522
-            isoCC => "TN",
523
-            subRegion => "",
524
-            region => "TN",
525
-            ipv4 => "True",
526
-            ipv6 => "False",
527
-            loadBalanced => "No",
528
-            httpWebsiteMirror => "http://tor.mirror.tn/",
529
-            httpsWebsiteMirror => "",
530
-            rsyncWebsiteMirror => "",
531
-            ftpWebsiteMirror => "",
532
-            httpDistMirror => "http://tor.mirror.tn/dist/",
533
-            httpsDistMirror => "",
534
-            rsyncDistMirror => "",
535
-            hiddenServiceMirror => "",
536
-      },
537
-        mirror045 => {
538
-            adminContact => "",
539
-            orgName => "",
540
-            isoCC => "TN",
541
-            subRegion => "",
542
-            region => "TN",
543
-            ipv4 => "True",
544
-            ipv6 => "False",
545
-            loadBalanced => "No",
546
-            httpWebsiteMirror => "http://torproject.antagonism.org/",
547
-            httpsWebsiteMirror => "https://torproject.antagonism.org/",
548
-            rsyncWebsiteMirror => "",
549
-            ftpWebsiteMirror => "",
550
-            httpDistMirror => "",
551
-            httpsDistMirror => "",
552
-            rsyncDistMirror => "",
553
-            hiddenServiceMirror => "",
554
-      },
555
-        mirror048 => {
556
-            adminContact => "",
557
-            orgName => "",
558
-            isoCC => "AT",
559
-            subRegion => "",
560
-            region => "AT",
561
-            ipv4 => "True",
562
-            ipv6 => "True",
563
-            loadBalanced => "No",
564
-            httpWebsiteMirror => "http://tor.dont-know-me.at/",
565
-            httpsWebsiteMirror => "",
566
-            rsyncWebsiteMirror => "",
567
-            ftpWebsiteMirror => "",
568
-            httpDistMirror => "http://tor.dont-know-me.at/dist/",
569
-            httpsDistMirror => "",
570
-            rsyncDistMirror => "",
571
-            hiddenServiceMirror => "",
572
-        },
573
-        mirror049 => {
574
-            adminContact => "IceBear",
575
-            orgName => "myRL.net",
576
-            isoCC => "IS",
577
-            subRegion => "",
578
-            region => "IS",
579
-            ipv4 => "True",
580
-            ipv6 => "False",
581
-            loadBalanced => "No",
582
-            httpWebsiteMirror => "http://tor.myrl.net/",
583
-            httpsWebsiteMirror => "https://tor.myrl.net/",
584
-            rsyncWebsiteMirror => "",
585
-            ftpWebsiteMirror => "",
586
-            httpDistMirror => "http://tor.myrl.net/dist/",
587
-            httpsDistMirror => "https://tor.myrl.net/dist/",
588
-            rsyncDistMirror => "",
589
-            hiddenServiceMirror => "",
590
-        },
591
-        mirror050 => {
592
-            adminContact => "",
593
-            orgName => "borgmann.tv",
594
-            isoCC => "DE",
595
-            subRegion => "",
596
-            region => "DE",
597
-            ipv4 => "True",
598
-            ipv6 => "False",
599
-            loadBalanced => "No",
600
-            httpWebsiteMirror => "http://tor.borgmann.tv/",
601
-            httpsWebsiteMirror => "",
602
-            rsyncWebsiteMirror => "",
603
-            ftpWebsiteMirror => "",
604
-            httpDistMirror => "http://tor.borgmann.tv/dist/",
605
-            httpsDistMirror => "",
606
-            rsyncDistMirror => "",
607
-            hiddenServiceMirror => "",
608
-        },
609
-        mirror051 => {
610
-            adminContact => "",
611
-            orgName => "torland",
612
-            isoCC => "GB",
613
-            subRegion => "",
614
-            region => "GB",
615
-            ipv4 => "True",
616
-            ipv6 => "False",
617
-            loadBalanced => "No",
618
-            httpWebsiteMirror => "http://mirror.torland.me/torproject.org/",
619
-            httpsWebsiteMirror => "https://mirror.torland.me/torproject.org/",
620
-            rsyncWebsiteMirror => "",
621
-            ftpWebsiteMirror => "",
622
-            httpDistMirror => "http://mirror.torland.me/torproject.org/dist/",
623
-            httpsDistMirror => "https://mirror.torland.me/torproject.org/dist/",
624
-            rsyncDistMirror => "",
625
-            hiddenServiceMirror => "",
626
-        },
627
-        mirror052 => {
628
-            adminContact => "",
629
-            orgName => "spline",
630
-            isoCC => "DE",
631
-            subRegion => "",
632
-            region => "DE",
633
-            ipv4 => "True",
634
-            ipv6 => "False",
635
-            loadBalanced => "No",
636
-            httpWebsiteMirror => "http://tor.spline.de/",
637
-            httpsWebsiteMirror => "https://tor.spline.inf.fu-berlin.de/",
638
-            rsyncWebsiteMirror => "rsync://ftp.spline.de/tor",
639
-            ftpWebsiteMirror => "ftp://ftp.spline.de/pub/tor",
640
-            httpDistMirror => "http://tor.spline.de/dist/",
641
-            httpsDistMirror => "https://tor.spline.inf.fu-berlin.de/dist/",
642
-            rsyncDistMirror => "rsync://ftp.spline.de/tor/dist",
643
-            hiddenServiceMirror => "",
644
-        },
645
-        mirror053 => {
646
-            adminContact => "",
647
-            orgName => "",
648
-            isoCC => "AT",
649
-            subRegion => "",
650
-            region => "AT",
651
-            ipv4 => "True",
652
-            ipv6 => "False",
653
-            loadBalanced => "No",
654
-            httpWebsiteMirror => "http://torproject.ph3x.at/",
655
-            httpsWebsiteMirror => "",
656
-            rsyncWebsiteMirror => "",
657
-            ftpWebsiteMirror => "",
658
-            httpDistMirror => "http://torproject.ph3x.at/dist/",
659
-            httpsDistMirror => "",
660
-            rsyncDistMirror => "",
661
-            hiddenServiceMirror => "",
662
-        },
663
-        mirror054 => {
664
-            adminContact => "",
665
-            orgName => "hessmo",
666
-            isoCC => "US",
667
-            subRegion => "",
668
-            region => "US",
669
-            ipv4 => "True",
670
-            ipv6 => "False",
671
-            loadBalanced => "No",
672
-            httpWebsiteMirror => "http://mirror.hessmo.com/tor/",
673
-            httpsWebsiteMirror => "",
674
-            rsyncWebsiteMirror => "",
675
-            ftpWebsiteMirror => "",
676
-            httpDistMirror => "http://mirror.hessmo.com/tor/dist/",
677
-            httpsDistMirror => "",
678
-            rsyncDistMirror => "",
679
-            hiddenServiceMirror => "",
680
-        },
681
-        mirror058 => {
682
-            adminContact => "",
683
-            orgName => "",
684
-            isoCC => "US",
685
-            subRegion => "",
686
-            region => "US",
687
-            ipv4 => "True",
688
-            ipv6 => "True",
689
-            loadBalanced => "No",
690
-            httpWebsiteMirror => "http://tor.loritsu.com/",
691
-            httpsWebsiteMirror => "",
692
-            rsyncWebsiteMirror => "",
693
-            ftpWebsiteMirror => "",
694
-            httpDistMirror => "http://tor.loritsu.com/dist/",
695
-            httpsDistMirror => "",
696
-            rsyncDistMirror => "",
697
-            hiddenServiceMirror => "",
698
-        },
699
-        mirror060 => {
700
-            adminContact => "",
701
-            orgName => "",
702
-            isoCC => "DE",
703
-            subRegion => "",
704
-            region => "DE",
705
-            ipv4 => "True",
706
-            ipv6 => "False",
707
-            loadBalanced => "No",
708
-            httpWebsiteMirror => "http://torproject.cryptowars.info/",
709
-            httpsWebsiteMirror => "https://torproject.cryptowars.info/",
710
-            rsyncWebsiteMirror => "rsync://torproject.cryptowars.info/",
711
-            ftpWebsiteMirror => "",
712
-            httpDistMirror => "http://torproject.cryptowars.info/dist/",
713
-            httpsDistMirror => "https://torproject.cryptowars.info/dist/",
714
-            rsyncDistMirror => "",
715
-            hiddenServiceMirror => "",
716
-        },
717
-        mirror062 => {
718
-            adminContact => "",
719
-            orgName => "",
720
-            isoCC => "DE",
721
-            subRegion => "",
722
-            region => "DE",
723
-            ipv4 => "True",
724
-            ipv6 => "False",
725
-            loadBalanced => "No",
726
-            httpWebsiteMirror => "http://tor.dev-random.de/",
727
-            httpsWebsiteMirror => "https://tor.dev-random.de/",
728
-            rsyncWebsiteMirror => "",
729
-            ftpWebsiteMirror => "",
730
-            httpDistMirror => "http://tor.dev-random.de/dist/",
731
-            httpsDistMirror => "https://tor.dev-random.de/dist/",
732
-            rsyncDistMirror => "",
733
-            hiddenServiceMirror => "",
734
-    },
735
-        mirror063 => {
736
-            adminContact => "",
737
-            orgName => "crazyhaze.de",
738
-            isoCC => "DE",
739
-            subRegion => "",
740
-            region => "DE",
741
-            ipv4 => "True",
742
-            ipv6 => "False",
743
-            loadBalanced => "No",
744
-            httpWebsiteMirror => "http://tor.crazyhaze.de/",
745
-            httpsWebsiteMirror => "https://tor.crazyhaze.de/",
746
-            rsyncWebsiteMirror => "",
747
-            ftpWebsiteMirror => "",
748
-            httpDistMirror => "http://tor.crazyhaze.de/dist/",
749
-            httpsDistMirror => "https://tor.crazyhaze.de/dist/",
750
-            rsyncDistMirror => "",
751
-            hiddenServiceMirror => "",
752
-    },
753
-        mirror066 => {
754
-            adminContact => "",
755
-            orgName => "Lightning-bolt.net",
756
-            isoCC => "CZ",
757
-            subRegion => "",
758
-            region => "CZ",
759
-            ipv4 => "True",
760
-            ipv6 => "False",
761
-            loadBalanced => "No",
762
-            httpWebsiteMirror => "http://torproject.lightning-bolt.net/",
763
-            httpsWebsiteMirror => "",
764
-            rsyncWebsiteMirror => "",
765
-            ftpWebsiteMirror => "",
766
-            httpDistMirror => "http://torproject.lightning-bolt.net/dist/",
767
-            httpsDistMirror => "",
768
-            rsyncDistMirror => "",
769
-            hiddenServiceMirror => "",
770
-    },
771
-        mirror067 => {
772
-            adminContact => "",
773
-            orgName => "",
774
-            isoCC => "US",
775
-            subRegion => "",
776
-            region => "US",
777
-            ipv4 => "True",
778
-            ipv6 => "False",
779
-            loadBalanced => "No",
780
-            httpWebsiteMirror => "http://tor.mirrors.whitedholdings.org/",
781
-            httpsWebsiteMirror => "https://tor.mirrors.whitedholdings.org/",
782
-            rsyncWebsiteMirror => "rsync://mirrors.whitedholdings.org/tor",
783
-            ftpWebsiteMirror => "",
784
-            httpDistMirror => "http://tor.mirrors.whitedholdings.org/dist/",
785
-            httpsDistMirror => "https://tor.mirrors.whitedholdings.org/dist/",
786
-            rsyncDistMirror => "rsync://tor.mirrors.whitedholdings.org/tor-dist",
787
-            hiddenServiceMirror => "",
788
-     },
789
-        mirror069 => {
790
-            adminContact => "",
791
-            orgName => "",
792
-            isoCC => "FR",
793
-            subRegion => "",
794
-            region => "FR",
795
-            ipv4 => "True",
796
-            ipv6 => "False",
797
-            loadBalanced => "No",
798
-            httpWebsiteMirror => "http://tor.mirror.chekanov.net/",
799
-            httpsWebsiteMirror => "",
800
-            rsyncWebsiteMirror => "",
801
-            ftpWebsiteMirror => "",
802
-            httpDistMirror => "http://tor.mirror.chekanov.net/dist/",
803
-            httpsDistMirror => "",
804
-            rsyncDistMirror => "",
805
-            hiddenServiceMirror => "",
806
-    },
807
-        mirror072 => {
808
-            adminContact => "",
809
-            orgName => "",
810
-            isoCC => "US",
811
-            subRegion => "",
812
-            region => "US",
813
-            ipv4 => "True",
814
-            ipv6 => "False",
815
-            loadBalanced => "No",
816
-            httpWebsiteMirror => "http://tor.minibofh.org/",
817
-            httpsWebsiteMirror => "",
818
-            rsyncWebsiteMirror => "",
819
-            ftpWebsiteMirror => "",
820
-            httpDistMirror => "http://tor.minibofh.org/dist/",
821
-            httpsDistMirror => "",
822
-            rsyncDistMirror => "",
823
-            hiddenServiceMirror => "",
824
-    },
825
-        mirror073 => {
826
-            adminContact => "",
827
-            orgName => "",
828
-            isoCC => "UA",
829
-            subRegion => "",
830
-            region => "UA",
831
-            ipv4 => "True",
832
-            ipv6 => "False",
833
-            loadBalanced => "No",
834
-            httpWebsiteMirror => "http://torua.reactor-xg.kiev.ua/",
835
-            httpsWebsiteMirror => "",
836
-            rsyncWebsiteMirror => "",
837
-            ftpWebsiteMirror => "",
838
-            httpDistMirror => "http://torua.reactor-xg.kiev.ua/dist/",
839
-            httpsDistMirror => "",
840
-            rsyncDistMirror => "",
841
-            hiddenServiceMirror => "",
842
-    },
843
-        mirror075 => {
844
-            adminContact => "",
845
-            orgName => "me0w.cc",
846
-            isoCC => "RO",
847
-            subRegion => "",
848
-            region => "RO",
849
-            ipv4 => "True",
850
-            ipv6 => "False",
851
-            loadBalanced => "No",
852
-            httpWebsiteMirror => "http://tor.me0w.cc/",
853
-            httpsWebsiteMirror => "",
854
-            rsyncWebsiteMirror => "",
855
-            ftpWebsiteMirror => "",
856
-            httpDistMirror => "http://tor.me0w.cc/dist/",
857
-            httpsDistMirror => "",
858
-            rsyncDistMirror => "",
859
-            hiddenServiceMirror => "",
860
-    },
861
-        mirror076 => {
862
-            adminContact => "",
863
-            orgName => "",
864
-            isoCC => "US",
865
-            subRegion => "",
866
-            region => "US",
867
-            ipv4 => "True",
868
-            ipv6 => "False",
869
-            loadBalanced => "No",
870
-            httpWebsiteMirror => "http://mirror.nametoday.me/tor/",
871
-            httpsWebsiteMirror => "",
872
-            rsyncWebsiteMirror => "",
873
-            ftpWebsiteMirror => "",
874
-            httpDistMirror => "http://mirror.nametoday.me/tor/dist/",
875
-            httpsDistMirror => "",
876
-            rsyncDistMirror => "",
877
-            hiddenServiceMirror => "",
878
-        },
879
-        mirror077 => {
880
-            adminContact => "",
881
-            orgName => "",
882
-            isoCC => "UK",
883
-            subRegion => "",
884
-            region => "UK",
885
-            ipv4 => "True",
886
-            ipv6 => "False",
887
-            loadBalanced => "No",
888
-            httpWebsiteMirror => "http://tor.mage.me.uk/",
889
-            httpsWebsiteMirror => "",
890
-            rsyncWebsiteMirror => "",
891
-            ftpWebsiteMirror => "",
892
-            httpDistMirror => "http://tor.mage.me.uk/dist/",
893
-            httpsDistMirror => "",
894
-            rsyncDistMirror => "",
895
-            hiddenServiceMirror => "",
896
-    },
897
-        mirror078 => {
898
-            adminContact => "",
899
-            orgName => "",
900
-            isoCC => "CH",
901
-            subRegion => "",
902
-            region => "CH",
903
-            ipv4 => "True",
904
-            ipv6 => "False",
905
-            loadBalanced => "No",
906
-            httpWebsiteMirror => "http://torproject.pillo-srv.ch/",
907
-            httpsWebsiteMirror => "https://torproject.pillo-srv.ch/",
908
-            rsyncWebsiteMirror => "",
909
-            ftpWebsiteMirror => "",
910
-            httpDistMirror => "http://torproject.pillo-srv.ch/dist/",
911
-            httpsDistMirror => "https://torproject.pillo-srv.ch/dist/",
912
-            rsyncDistMirror => "",
913
-            hiddenServiceMirror => "",
914
-    },
915
-        mirror079 => {
916
-            adminContact => "",
917
-            orgName => "",
918
-            isoCC => "LU",
919
-            subRegion => "",
920
-            region => "LU",
921
-            ipv4 => "True",
922
-            ipv6 => "False",
923
-            loadBalanced => "No",
924
-            httpWebsiteMirror => "http://torproject.adamas.ai/",
925
-            httpsWebsiteMirror => "",
926
-            rsyncWebsiteMirror => "",
927
-            ftpWebsiteMirror => "",
928
-            httpDistMirror => "http://torproject.adamas.ai/dist/",
929
-            httpsDistMirror => "",
930
-            rsyncDistMirror => "",
931
-            hiddenServiceMirror => "",
932
-    },
933
-        mirror080 => {
934
-            adminContact => "",
935
-            orgName => "",
936
-            isoCC => "FR",
937
-            subRegion => "",
938
-            region => "FR",
939
-            ipv4 => "True",
940
-            ipv6 => "False",
941
-            loadBalanced => "No",
942
-            httpWebsiteMirror => "http://torproject.c3l.lu/",
943
-            httpsWebsiteMirror => "",
944
-            rsyncWebsiteMirror => "",
945
-            ftpWebsiteMirror => "",
946
-            httpDistMirror => "http://torproject.c3l.lu/dist/",
947
-            httpsDistMirror => "",
948
-            rsyncDistMirror => "",
949
-            hiddenServiceMirror => "",
950
-    },
951
-        mirror081 => {
952
-            adminContact => "",
953
-            orgName => "",
954
-            isoCC => "EE",
955
-            subRegion => "",
956
-            region => "EE",
957
-            ipv4 => "True",
958
-            ipv6 => "False",
959
-            loadBalanced => "No",
960
-            httpWebsiteMirror => "http://tor.li/",
961
-            httpsWebsiteMirror => "https://tor.li/",
962
-            rsyncWebsiteMirror => "",
963
-            ftpWebsiteMirror => "",
964
-            httpDistMirror => "http://tor.li/dist/",
965
-            httpsDistMirror => "https://tor.li/dist/",
966
-            rsyncDistMirror => "",
967
-            hiddenServiceMirror => "",
968
-    },
969
-        mirror082 => {
970
-            adminContact => "",
971
-            orgName => "",
972
-            isoCC => "US",
973
-            subRegion => "",
974
-            region => "US",
975
-            ipv4 => "True",
976
-            ipv6 => "True",
977
-            loadBalanced => "No",
978
-            httpWebsiteMirror => "http://mirror.nametoday.me/tor/",
979
-            httpsWebsiteMirror => "",
980
-            rsyncWebsiteMirror => "",
981
-            ftpWebsiteMirror => "",
982
-            httpDistMirror => "http://mirror.nametoday.me/tor/dist/",
983
-            httpsDistMirror => "",
984
-            rsyncDistMirror => "",
985
-            hiddenServiceMirror => "",
986
-    },
987
-        mirror085 => {
988
-            adminContact => "",
989
-            orgName => "Soviet Anonymous",
990
-            isoCC => "RU",
991
-            subRegion => "",
992
-            region => "RU",
993
-            ipv4 => "True",
994
-            ipv6 => "False",
995
-            loadBalanced => "No",
996
-            httpWebsiteMirror => "http://creep.im/tor",
997
-            httpsWebsiteMirror => "https://creep.im/tor",
998
-            rsyncWebsiteMirror => "rsync://creep.im/tor",
999
-            ftpWebsiteMirror => "ftp://creep.im/mirrors/tor",
1000
-            httpDistMirror => "http://creep.im/tor/dist/",
1001
-            httpsDistMirror => "https://creep.im/tor/dist/",
1002
-            rsyncDistMirror => "rsync://creep.im/tor-dist",
1003
-            hiddenServiceMirror => "",
1004
-    },
1005
-        mirror086 => {
1006
-            adminContact => "",
1007
-            orgName => "",
1008
-            isoCC => "US",
1009
-            subRegion => "",
1010
-            region => "US",
1011
-            ipv4 => "True",
1012
-            ipv6 => "False",
1013
-            loadBalanced => "No",
1014
-            httpWebsiteMirror => "http://199.175.55.215/",
1015
-            httpsWebsiteMirror => "",
1016
-            rsyncWebsiteMirror => "",
1017
-            ftpWebsiteMirror => "",
1018
-            httpDistMirror => "http://199.175.55.215/dist/",
1019
-            httpsDistMirror => "",
1020
-            rsyncDistMirror => "",
1021
-            hiddenServiceMirror => "",
1022
-    },
1023
-        mirror087 => {
1024
-            adminContact => "",
1025
-            orgName => "",
1026
-            isoCC => "DE",
1027
-            subRegion => "",
1028
-            region => "DE",
1029
-            ipv4 => "True",
1030
-            ipv6 => "False",
1031
-            loadBalanced => "No",
1032
-            httpWebsiteMirror => "http://tor.linuxlounge.net/",
1033
-            httpsWebsiteMirror => "https://tor.linuxlounge.net/",
1034
-            rsyncWebsiteMirror => "",
1035
-            ftpWebsiteMirror => "",
1036
-            httpDistMirror => "http://tor.linuxlounge.net/dist/",
1037
-            httpsDistMirror => "https://tor.linuxlounge.net/dist/",
1038
-            rsyncDistMirror => "",
1039
-            hiddenServiceMirror => "",
1040
-    },
1041
-        mirror088 => {
1042
-            adminContact => "",
1043
-            orgName => "",
1044
-            isoCC => "US",
1045
-            subRegion => "",
1046
-            region => "US",
1047
-            ipv4 => "True",
1048
-            ipv6 => "False",
1049
-            loadBalanced => "No",
1050
-            httpWebsiteMirror => "",
1051
-            httpsWebsiteMirror => "",
1052
-            rsyncWebsiteMirror => "",
1053
-            ftpWebsiteMirror => "ftp://mirrors.go-parts.com/tor/",
1054
-            httpDistMirror => "http://mirrors.go-parts.com/tor/dist/",
1055
-            httpsDistMirror => "",
1056
-            rsyncDistMirror => "rsync://mirrors.go-parts.com/mirrors/tor/",
1057
-            hiddenServiceMirror => "",
1058
-    },
1059
-        mirror089 => {
1060
-            adminContact => "",
1061
-            orgName => "",
1062
-            isoCC => "US",
1063
-            subRegion => "",
1064
-            region => "US",
1065
-            ipv4 => "True",
1066
-            ipv6 => "False",
1067
-            loadBalanced => "No",
1068
-            httpWebsiteMirror => "",
1069
-            httpsWebsiteMirror => "",
1070
-            rsyncWebsiteMirror => "",
1071
-            ftpWebsiteMirror => "",
1072
-            httpDistMirror => "http://www.netgull.com/torproject/",
1073
-            httpsDistMirror => "",
1074
-            rsyncDistMirror => "",
1075
-            hiddenServiceMirror => "",
1076
-    },
1077
-        mirror090 => {
1078
-            adminContact => "",
1079
-            orgName => "",
1080
-            isoCC => "US",
1081
-            subRegion => "",
1082
-            region => "US",
1083
-            ipv4 => "True",
1084
-            ipv6 => "False",
1085
-            loadBalanced => "No",
1086
-            httpWebsiteMirror => "http://torproject.guilhem.org/",
1087
-            httpsWebsiteMirror => "https://torproject.guilhem.org/",
1088
-            rsyncWebsiteMirror => "",
1089
-            ftpWebsiteMirror => "",
1090
-            httpDistMirror => "http://torproject.guilhem.org/dist/",
1091
-            httpsDistMirror => "https://torproject.guilhem.org/dist/",
1092
-            rsyncDistMirror => "",
1093
-            hiddenServiceMirror => "",
1094
-    },
1095
-        mirror091 => {
1096
-            adminContact => "",
1097
-            orgName => "",
1098
-            isoCC => "MX",
1099
-            subRegion => "",
1100
-            region => "MX",
1101
-            ipv4 => "True",
1102
-            ipv6 => "False",
1103
-            loadBalanced => "No",
1104
-            httpWebsiteMirror => "http://fbnaia.homelinux.net/torproject/",
1105
-            httpsWebsiteMirror => "https://fbnaia.homelinux.net/torproject/",
1106
-            rsyncWebsiteMirror => "",
1107
-            ftpWebsiteMirror => "",
1108
-            httpDistMirror => "http://fbnaia.homelinux.net/torproject/dist/",
1109
-            httpsDistMirror => "https://fbnaia.homelinux.net/torproject//dist/",
1110
-            rsyncDistMirror => "",
1111
-            hiddenServiceMirror => "",
1112
-    },
1113
-	mirror092 => {
1114
-	    adminContact => "hackthissite.org",
1115
-	    orgName => "HackThisSite.org",
1116
-	    isoCC => "US",
1117
-	    subRegion => "",
1118
-	    region => "US",
1119
-	    ipv4 => "True",
1120
-	    ipv6 => "True",
1121
-	    loadBalanced => "No",
1122
-	    httpWebsiteMirror => "http://tor.hackthissite.org/",
1123
-	    httpsWebsiteMirror => "https://tor.hackthissite.org/",
1124
-	    rsyncWebsiteMirror => "",
1125
-	    ftpWebsiteMirror => "",
1126
-	    httpDistMirror => "http://mirror.hackthissite.org/tor",
1127
-	    httpsDistMirror => "https://mirror.hackthissite.org/tor",
1128
-	    rsyncDistMirror => "",
1129
-	    hiddenServiceMirror => ""
1130
-    },
1131
-	mirror093 => {
1132
-	  adminContact => "http://sebastian.pfeifer.or.at/",
1133
-	  orgName => "TechAsk.IT",
1134
-	  isoCC => "AT",
1135
-	  subRegion => "Favoriten",
1136
-	  region => "Wien",
1137
-	  ipv4 => "True",
1138
-	  ipv6 => "True",
1139
-	  loadBalanced => "No",
1140
-	  httpWebsiteMirror => "http://www.unicorncloud.org/public/torproject.org/",
1141
-	  httpsWebsiteMirror => "https://www.unicorncloud.org/public/torproject.org/",
1142
-	  rsyncWebsiteMirror => "",
1143
-	  ftpWebsiteMirror => "",
1144
-	  httpDistMirror => "http://www.unicorncloud.org/public/torproject.org/dist",
1145
-	  httpsDistMirror => "https://www.unicorncloud.org/public/torproject.org/dist",
1146
-	  rsyncDistMirror => "",
1147
-	  hiddenServiceMirror => ""
1148
-    },
1149
-      mirror094 => {
1150
-	adminContact =>"http://www.multinet.no",
1151
-	orgName => "MultiNet AS",
1152
-	isoCC => "NO",
1153
-	subRegion => "Trondheim",
1154
-	region => "Trondheim",
1155
-	ipv4 => "True",
1156
-	ipv6 => "True",
1157
-	loadBalanced => "No",
1158
-	httpWebsiteMirror =>"http://tor.multinet.no/",
1159
-	httpsWebsiteMirror => "",
1160
-	rsyncWebsiteMirror => "",
1161
-	ftpWebsiteMirror => "",
1162
-	httpDistMirror =>"http://tor.multinet.no/dist/",
1163
-	httpsDistMirror => "",
1164
-	rsyncDistMirror => "",
1165
-	hiddenServiceMirror => ""
1166
-    },
1167
-      mirror095 => {
1168
-	adminContact => "mirror-admin\@linsrv.net",
1169
-	orgName => "linsrv",
1170
-	isoCC => "FR",
1171
-	subRegion => "France",
1172
-	region => "Europe",
1173
-	ipv4 => "True",
1174
-	ipv6 => "False",
1175
-	loadBalanced => "No",
1176
-	httpWebsiteMirror => "http://mirrors.linsrv.net/torproject/",
1177
-	httpsWebsiteMirror => "",
1178
-	rsyncWebsiteMirror => "mirrors.linsrv.net::pub/torproject",
1179
-	ftpWebsiteMirror => "ftp://ftp.linsrv.net/pub/torproject/",
1180
-	httpDistMirror => "http://mirrors.linsrv.net/torproject/dist/",
1181
-	httpsDistMirror => "",
1182
-	rsyncDistMirror => "mirrors.linsrv.net::pub/torproject/dist",
1183
-	hiddenServiceMirror => ""
1184
-    },
1185
-      mirror097 => {
1186
-	adminContact => "marz.michael at gmail.com",
1187
-	orgName => "",
1188
-	isoCC => "DE",
1189
-	subRegion => "",
1190
-	region => "",
1191
-	ipv4 => "True",
1192
-	ipv6 => "False",
1193
-	loadBalanced => "No",
1194
-	httpWebsiteMirror => "http://tor.taskserver.de/",
1195
-	httpsWebsiteMirror => "",
1196
-	rsyncWebsiteMirror => "",
1197
-	ftpWebsiteMirror => "",
1198
-	httpDistMirror => "http://tor.taskserver.de/dist/",
1199
-	httpsDistMirror => "",
1200
-	rsyncDistMirror => "",
1201
-	hiddenServiceMirror => ""
1202
-    },
1203
-      mirror098 => {
1204
-	adminContact => "",
1205
-	orgName => "",
1206
-	isoCC => "FR",
1207
-	subRegion => "",
1208
-	region => "",
1209
-	ipv4 => "True",
1210
-	ipv6 => "False",
1211
-	loadBalanced => "No",
1212
-	httpWebsiteMirror => "http://37.187.0.127/tormirror/",
1213
-	httpsWebsiteMirror => "",
1214
-	rsyncWebsiteMirror => "",
1215
-	ftpWebsiteMirror => "",
1216
-	httpDistMirror => "http://37.187.0.127/tormirror/dist/",
1217
-	httpsDistMirror => "",
1218
-	rsyncDistMirror => "",
1219
-	hiddenServiceMirror => ""
1220
-    },
1221
-      mirror099 => {
1222
-	adminContact => "paul at coffswifi.net",
1223
-	orgName => "CoffsWiFi",
1224
-	isoCC => "AU",
1225
-	subRegion => "Australia and New Zealand",
1226
-	region => "APNIC",
1227
-	ipv4 => "True",
1228
-	ipv6 => "False",
1229
-	loadBalanced => "No",
1230
-	httpWebsiteMirror => "http://torproject.coffswifi.net",
1231
-	httpsWebsiteMirror => "",
1232
-	rsyncWebsiteMirror => "",
1233
-	ftpWebsiteMirror => "",
1234
-	httpDistMirror => "http://torproject.coffswifi.net/dist",
1235
-	httpsDistMirror => "",
1236
-	rsyncDistMirror => "",
1237
-	hiddenServiceMirror => ""
1238
-    },
1239
-      mirror100 => {
1240
-	adminContact => "nsane2307 eml cc",
1241
-	orgName => "tor-mirror.de",
1242
-	isoCC => "DE",
1243
-	subRegion => "Germany",
1244
-	region => "Europe",
1245
-	ipv4 => "True",
1246
-	ipv6 => "False",
1247
-	loadBalanced => "No",
1248
-	httpWebsiteMirror => "http://tor-mirror.de/",
1249
-	httpsWebsiteMirror => "https://tor-mirror.de/",
1250
-	rsyncWebsiteMirror => "",
1251
-	ftpWebsiteMirror => "",
1252
-	httpDistMirror => "http://tor-mirror.de/dist/",
1253
-	httpsDistMirror => "https://tor-mirror.de/dist/",
1254
-	rsyncDistMirror => "",
1255
-	hiddenServiceMirror => ""
1256
-    },
1257
-    mirror101 => {
1258
-      adminContact => "info /AT\ enn /DOT\ lu",
1259
-      orgName => "Frenn vun der Enn A.S.B.L.",
1260
-      isoCC => "IS",
1261
-      subRegion => "Iceland",
1262
-      region => "Europe",
1263
-      ipv4 => "True",
1264
-      ipv6 => "False",
1265
-      loadBalanced => "No",
1266
-      httpWebsiteMirror => "http://torproject.lu/",
1267
-      httpsWebsiteMirror => "",
1268
-      rsyncWebsiteMirror => "",
1269
-      ftpWebsiteMirror => "",
1270
-      httpDistMirror => "http://torproject.lu/dist/",
1271
-      httpsDistMirror => "",
1272
-      rsyncDistMirror => "",
1273
-      hiddenServiceMirror => "http://btn6gqzqevlhoryd.onion"
1274
-    },
1275
-    mirror102 => {
1276
-      adminContact => "neutrino8 AT gmail DOT com",
1277
-      orgName => "teambelgium",
1278
-      isoCC => "BE",
1279
-      subRegion => "Belgium",
1280
-      region => "Europe",
1281
-      ipv4 => "True",
1282
-      ipv6 => "False",
1283
-      loadBalanced => "No",
1284
-      httpWebsiteMirror => "http://tor.teambelgium.net:8082/",
1285
-      httpsWebsiteMirror => "",
1286
-      rsyncWebsiteMirror => "",
1287
-      ftpWebsiteMirror => "ftp://tor.teambelgium.net:2121/torproject/",
1288
-      httpDistMirror => "http://tor.teambelgium.net:8082/dist/",
1289
-      httpsDistMirror => "",
1290
-      rsyncDistMirror => "",
1291
-      hiddenServiceMirror => ""
1292
-    },
1293
-    mirror103 => {
1294
-      adminContact => "mirror ntzk de",
1295
-      orgName => "Netzkonstrukt Berlin",
1296
-      isoCC => "DE",
1297
-      subRegion => "Germany",
1298
-      region => "Europe",
1299
-      ipv4 => "True",
1300
-      ipv6 => "False",
1301
-      loadBalanced => "No",
1302
-      httpWebsiteMirror => "http://mirror.ntzk.de/torproject.org/",
1303
-      httpsWebsiteMirror => "",
1304
-      rsyncWebsiteMirror => "",
1305
-      ftpWebsiteMirror => "",
1306
-      httpDistMirror => "http://mirror.ntzk.de/torproject.org/dist/",
1307
-      httpsDistMirror => "",
1308
-      rsyncDistMirror => "",
1309
-      hiddenServiceMirror => ""
1310
-    },
1311
-    mirror104 => {
1312
-      adminContact => "webmaster AT bbln DOT nl",
1313
-      orgName => "BBLN",
1314
-      isoCC => "NL",
1315
-      subRegion => "The Netherlands",
1316
-      region => "Europe",
1317
-      ipv4 => "True",
1318
-      ipv6 => "True",
1319
-      loadBalanced => "No",
1320
-      httpWebsiteMirror => "http://t02.nl/mirror/",
1321
-      httpsWebsiteMirror => "",
1322
-      rsyncWebsiteMirror => "",
1323
-      ftpWebsiteMirror => "",
1324
-      httpDistMirror => "http://t02.nl/mirror/dist/",
1325
-      httpsDistMirror => "",
1326
-      rsyncDistMirror => "",
1327
-      hiddenServiceMirror => ""
1328
-    },
1329
-    mirror105 => {
1330
-      adminContact => "wollomatic at posteo.eu",
1331
-      orgName => "",
1332
-      isoCC => "DE",
1333
-      subRegion => "Germany",
1334
-      region => "Europe",
1335
-      ipv4 => "True",
1336
-      ipv6 => "True",
1337
-      loadBalanced => "No",
1338
-      httpWebsiteMirror => "http://tormirror.almnet.de/",
1339
-      httpsWebsiteMirror => "https://tormirror.almnet.de/",
1340
-      rsyncWebsiteMirror => "",
1341
-      ftpWebsiteMirror => "",
1342
-      httpDistMirror => "http://tormirror.almnet.de/dist/",
1343
-      httpsDistMirror => "https://tormirror.almnet.de/dist/",
1344
-      rsyncDistMirror => "",
1345
-      hiddenServiceMirror => ""
1346
-    },
1347
-    mirror106 => { 
1348
-      adminContact => "haskell at gmx.es", 
1349
-      orgName => "", 
1350
-      isoCC => "ES",
1351
-      subRegion => "Spain",
1352
-      region => "Europe",
1353
-      ipv4 => "True",
1354
-      ipv6 => "False",
1355
-      loadBalanced => "No",
1356
-      httpWebsiteMirror => "http://tor.zilog.es/",
1357
-      httpsWebsiteMirror => "",
1358
-      rsyncWebsiteMirror => "",
1359
-      ftpWebsiteMirror => "",
1360
-      httpDistMirror => "http://tor.zilog.es/dist/",
1361
-      httpsDistMirror => "",
1362
-      rsyncDistMirror => "",
1363
-      hiddenServiceMirror => ""
127
+    close(CSV);
1364 128
 }
1365
-);
1366 129
 
1367
-my $count = values %m;
130
+my @m     = LoadMirrors();
131
+my $count = scalar(@m);
1368 132
 print "We have a total of $count mirrors\n";
1369 133
 print "Fetching the last updated date for each mirror.\n";
1370 134
 
... ...
@@ -1383,89 +147,49 @@ for (1 .. 1)
1383 147
 print "Using these files for sig matching:\n";
1384 148
 print join("\n", keys %randomtorfiles);
1385 149
 
1386
-# Adjust offical Tor time by out-of-date offset: number of days * seconds per day
150
+# Adjust official Tor time by out-of-date offset: number of days * seconds per day
1387 151
 $tortime -= 1 * 172800;
1388 152
 print "The official time for Tor is $tortime. \n";
1389
-my %todelete;
1390
-
1391
-foreach my $server ( keys %m ) {
1392 153
 
1393
-    print "Attempting to fetch from $server: $m{$server}{'orgName'}\n";
1394
-
1395
-    foreach my $serverType('httpWebsiteMirror', 'httpsWebsiteMirror', 'ftpWebsiteMirror')
154
+for(my $server = 0; $server < scalar(@m); $server++) {
155
+    foreach my $serverType('httpWebsiteMirror', 'httpsWebsiteMirror', 'ftpWebsiteMirror', 'httpDistMirror', 'httpsDistMirror')
1396 156
     {
1397
-        if ($m{$server}{$serverType}) {
1398
-            print "Attempt to fetch via $serverType.\n";
1399
-            $m{$server}{"updateDate"} = Fetch("$m{$server}{$serverType}/project/trace/www-master.torproject.org", \&ExtractDate);
1400
-            if ($m{$server}{updateDate}) {
157
+        if ($m[$server]->{$serverType}) {
158
+            my $updateDate = Fetch("$m[$server]->{$serverType}/project/trace/www-master.torproject.org", \&ExtractDate);
159
+    				      
160
+            if ($updateDate) {
161
+		$m[$server]->{updateDate} = $updateDate;
162
+		$m[$server]->{sigMatched} = 1;
1401 163
                 foreach my $randomtorfile(keys %randomtorfiles) {
1402
-                	my $sig = Fetch("$m{$server}{$serverType}/$randomtorfile", \&ExtractSig);
164
+                    my $sig = Fetch("$m[$server]->{$serverType}/$randomtorfile", \&ExtractSig);
1403 165
             	    if (!$sig) {
1404
-			    $todelete{$server} = "Unreadable $randomtorfile";
1405
-		        } elsif ($sig ne $randomtorfiles{$randomtorfile}) {
1406
-			    $todelete{$server} = "Sig mismatch on $randomtorfile";
1407
-            		} else {
1408
-        	    	    print "Sig $sig matches for $randomtorfile on $m{$server}{$serverType}\n";
1409
-			}
166
+		        print STDERR "Unreadable $randomtorfile on $m[$server]->{$serverType}";
167
+			$m[$server]->{sigMatched} = 0;
1410 168
             	    	last;
1411
-		}
1412
-            } else {
1413
-		delete $m{$server}{updateDate};
1414
-		$todelete{$server} = "Unreadable date";
1415
-            }
169
+		    } elsif ($sig ne $randomtorfiles{$randomtorfile}) {
170
+			$m[$server]->{sigMatched} = 0;
171
+		        print STDERR "Sig mismatch of $randomtorfile on $m[$server]->{$serverType}";
1416 172
             	    	last;
1417 173
             	    }
1418 174
 		}
1419
-    if (exists $m{$server}{updateDate}) {
1420
-        print "We fetched and stored the following: $m{$server}{'updateDate'}\n";
1421
-    } else {
1422
-	$todelete{$server} = "Unreadable date";
1423
-    } 
1424 175
             }
1425
-
1426
-foreach my $outdated(keys %todelete)
1427
-{
1428
-    print "Deleted $outdated due to $todelete{$outdated}\n";
1429
-    print Dumper($m{$outdated});
1430
-    delete  $m{$outdated};
176
+	    last;
1431 177
         }
1432
-
1433
-foreach my $k(keys %m)
1434
-{
1435
-    print "$k\n";
1436
-    print "$m{$k}{updateDate}\n";
1437 178
     }
1438
-
1439
-print "We sorted the following mirrors by their date of last update: \n";
1440
-foreach my $server ( sort { $m{$b}{'updateDate'} <=> $m{$a}{'updateDate'}} keys %m ) {
1441
-
1442
-     print "\n";
1443
-     print "Mirror $m{$server}{'orgName'}: \n";
1444
-
1445
-     foreach my $attrib ( sort keys %{$m{$server}} ) {
1446
-        print "$attrib = $m{$server}{$attrib}";
1447
-        print "\n";
1448
-     };
1449 179
 }
1450 180
 
1451
-my $outFile = "include/mirrors-table.wmi";
1452
-my $html;
1453
-open(OUT, "> $outFile") or die "Can't open $outFile: $!";
1454
-
1455
-# Here's where we open a file and print some wml include goodness
1456
-# This is sorted from last known recent update to unknown update times
1457
-foreach my $server ( sort { $m{$b}{'updateDate'} <=> $m{$a}{'updateDate'}} keys %m ) {
1458
-
181
+sub PrintServer {
182
+     my $server = shift;
1459 183
      my $time;
1460
-     if ( "$m{$server}{'updateDate'}" ne "Unknown") {
1461
-	  if ( $m{$server}{'updateDate'} > $tortime ) {
184
+     if ( $server->{'updateDate'} ) {
185
+	  if ( $server->{'updateDate'} > $tortime ) {
1462 186
 	    $time = "Up to date";
1463 187
 	  } else { $time = "DO NOT USE. Out of date."; }
1464 188
      } else { $time = "Unknown"; }
1465 189
 print OUT <<"END";
1466 190
      \n<tr>\n
1467
-         <td>$m{$server}{'isoCC'}</td>\n
1468
-         <td>$m{$server}{'orgName'}</td>\n
191
+         <td>$server->{'isoCC'}</td>\n
192
+         <td>$server->{'orgName'}</td>\n
1469 193
          <td>$time</td>\n
1470 194
 END
1471 195
 
... ...
@@ -1480,8 +204,8 @@ END
1480 204
 
1481 205
      foreach my $precious ( sort keys %prettyNames )
1482 206
      {
1483
-        if ($m{$server}{"$precious"}) {
1484
-            print OUT "    <td><a href=\"" . $m{$server}{$precious} . "\">" .
207
+        if ($server->{"$precious"}) {
208
+            print OUT "    <td><a href=\"" . $server->{$precious} . "\">" .
1485 209
                       "$prettyNames{$precious}</a></td>\n";
1486 210
         } else { print OUT "    <td> - </td>\n"; }
1487 211
      }
... ...
@@ -1489,4 +213,19 @@ END
1489 213
      print OUT "</tr>\n";
1490 214
 }
1491 215
 
216
+
217
+my $outFile = "include/mirrors-table.wmi";
218
+open(OUT, "> $outFile") or die "Can't open $outFile: $!";
219
+
220
+# Here's where we open a file and print some wml include goodness
221
+# This is sorted from last known recent update to unknown update times
222
+foreach my $server ( sort { $b->{'updateDate'} <=> $a->{'updateDate'}} grep {$_->{updateDate} && $_->{sigMatched}} @m ) {
223
+    PrintServer($server);
224
+}
225
+foreach my $server ( grep {!$_->{updateDate} || !$_->{sigMatched}} @m ) {
226
+    PrintServer($server);
227
+}
228
+
229
+DumpMirrors(@m);
230
+
1492 231
 close(OUT);
1493 232