532901be |
#!/usr/bin/perl -w
use warnings;
use strict;
use LWP::Simple;
use LWP;
use Date::Parse;
|
759dd463 |
use Date::Format;
|
532901be |
|
238e706b |
#
# A quick hack by Jacob Appelbaum <jacob@appelbaum.net>
|
940ab031 |
# LWP suggestions by Leigh Honeywell
|
238e706b |
# This is Free Software (GPLv3)
# http://www.gnu.org/licenses/gpl-3.0.txt
#
|
838938ca |
# CHANGELOG
# 20091003 Code changes to elimiate the need for a trailing slash in addresses for script runtime
# 20091004 Code changes to increase out of date tolerance to 48 hours
# 20091028 Code changes to increase timout to 30 seconds (attempting to # resolve "unknown" status')
# 20091028 Code changes to change user agent of script
# 20100807 Remove dead mirrors.
|
238e706b |
|
532901be |
print "Creating LWP agent ($LWP::VERSION)...\n";
my $lua = LWP::UserAgent->new(
keep_alive => 1,
|
55e27233 |
timeout => 30,
|
69c4ddc9 |
agent => "Tor MirrorCheck Agent"
|
532901be |
);
sub sanitize {
my $taintedData = shift;
my $cleanedData;
my $whitelist = '-a-zA-Z0-9: +';
# clean the data, return cleaned data
$taintedData =~ s/[^$whitelist]//go;
$cleanedData = $taintedData;
return $cleanedData;
}
sub FetchDate {
my $url = shift; # Base url for mirror
|
3b0a6878 |
my $trace = "project/trace/www-master.torproject.org"; # this file should always exist
|
3c4201b3 |
$url = "$url/$trace";
|
532901be |
print "Fetching possible date from: $url\n";
my $request = new HTTP::Request GET => "$url";
my $result = $lua->request($request);
|
a86b52c5 |
my $code = $result->code();
print "Result code $code\n";
|
532901be |
|
a86b52c5 |
if ($result->is_success && $code eq "200"){
|
532901be |
my $taint = $result->content;
my $content = sanitize($taint);
if ($content) {
|
940ab031 |
|
532901be |
my $date = str2time($content);
if ($date) {
print "We've fetched a date $date.\n";
return $date;
} else {
print "We've haven't fetched a date.\n";
return "Unknown";
}
} else {
print "Unable to fetch date, empty content returned.\n";
return "Unknown";
}
|
940ab031 |
|
532901be |
} else {
print "Our request failed, we had no result.\n";
return "Unknown";
}
|
a86b52c5 |
return "Unknown";
|
532901be |
}
# This is the list of all known Tor mirrors
# Add new mirrors to the bottom!
|
fafbb604 |
my %m = (
|
f80d2636 |
|
76ebe69b |
mirror000 => {
adminContact => "coralcdn.org",
orgName => "CoralCDN",
isoCC => "INT",
subRegion => "",
region => "INT",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "Yes",
httpWebsiteMirror => "http://www.torproject.org.nyud.net/",
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
httpDistMirror => "http://www.torproject.org.nyud.net/dist/",
httpsDistMirror => "",
rsyncDistMirror => "",
|
2b9f77ca |
hiddenServiceMirror => ""
|
76ebe69b |
},
|
fe0b5ab8 |
mirror001 => {
adminContact => "BarkerJr AT barkerjr DOT net",
orgName => "BarkerJr",
isoCC => "FR",
subRegion => "",
region => "FR",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
|
a0226d94 |
httpWebsiteMirror => "http://www.oignon.net/",
|
4a46cda9 |
httpsWebsiteMirror => "https://www.oignon.net/",
|
fe0b5ab8 |
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
|
72c3928b |
httpDistMirror => "http://www.oignon.net/dist/",
|
4a46cda9 |
httpsDistMirror => "https://www.oignon.net/dist/",
|
fe0b5ab8 |
rsyncDistMirror => "",
|
2b9f77ca |
hiddenServiceMirror => ""
|
fe0b5ab8 |
},
|
838938ca |
mirror003 => {
|
ab4b6992 |
adminContact => "citizen428 AT gmail DOT com",
|
79e6ad8b |
orgName => "[[:bbs:]]",
|
532901be |
isoCC => "DE",
subRegion => "",
region => "Europe",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "Unknown",
httpWebsiteMirror => "http://tor.blingblingsquad.net/",
|
e44f4a70 |
httpsWebsiteMirror => "https://tor.blingblingsquad.net/",
|
532901be |
ftpWebsiteMirror => "",
rsyncWebsiteMirror => "",
|
154245d8 |
httpDistMirror => "http://tor.blingblingsquad.net/dist/",
httpsDistMirror => "https://tor.blingblingsquad.net/dist/",
|
2b9f77ca |
rsyncDistMirror => ""
|
532901be |
},
|
838938ca |
mirror006 => {
|
44a792e5 |
adminContact => "BarkerJr AT barkerjr DOT net",
orgName => "BarkerJr",
isoCC => "US",
subRegion => "",
region => "US",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
|
e2724479 |
httpWebsiteMirror => "http://www.torproject.us/",
httpsWebsiteMirror => "https://www.torproject.us/",
|
567072db |
rsyncWebsiteMirror => "rsync://rsync.torproject.us/tor",
|
44a792e5 |
ftpWebsiteMirror => "",
|
e2724479 |
httpDistMirror => "http://www.torproject.us/dist/",
httpsDistMirror => "https://www.torproject.us/dist/",
|
567072db |
rsyncDistMirror => "rsync://rsync.torproject.us/tor/dist",
|
2b9f77ca |
hiddenServiceMirror => ""
|
44a792e5 |
},
|
838938ca |
mirror007 => {
|
ab4b6992 |
adminContact => "info AT zentrum-der-gesundheit DOT de",
|
d6db243b |
orgName => "Zentrum der Gesundheit",
|
532901be |
isoCC => "DK",
subRegion => "",
region => "Europe",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "Unknown",
|
ef0bc85c |
httpWebsiteMirror => "http://tor.idnr.ws/",
|
532901be |
ftpWebsiteMirror => "",
|
940ab031 |
rsyncWebsiteMirror => "",
|
ef0bc85c |
httpDistMirror => "http://tor.idnr.ws/dist/",
|
2b9f77ca |
rsyncDistMirror => ""
|
532901be |
},
|
838938ca |
mirror008 => {
|
ab4b6992 |
adminContact => "root AT amorphis DOT eu",
|
d6db243b |
orgName => "Amorphis",
|
532901be |
isoCC => "NL",
subRegion => "",
region => "Europe",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "Unknown",
httpWebsiteMirror => "http://tor.amorphis.eu/",
|
940ab031 |
rsyncWebsiteMirror => "",
|
532901be |
ftpWebsiteMirror => "",
httpDistMirror => "http://tor.amorphis.eu/dist/",
|
2b9f77ca |
rsyncDistMirror => ""
|
532901be |
},
|
838938ca |
mirror010 => {
|
ab4b6992 |
adminContact => "webmaster AT ccc DOT de",
|
532901be |
orgName => "CCC",
isoCC => "NL",
subRegion => "",
region => "Europe",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "Unknown",
httpWebsiteMirror => "http://tor.ccc.de/",
|
940ab031 |
rsyncWebsiteMirror => "",
|
532901be |
ftpWebsiteMirror => "",
httpDistMirror => "http://tor.ccc.de/dist/",
|
2b9f77ca |
rsyncDistMirror => ""
|
532901be |
},
|
838938ca |
mirror013 => {
|
ab4b6992 |
adminContact => "hostmaster AT zombiewerks DOT com",
|
cfa2b38c |
orgName => "TheOnionRouter",
|
10839949 |
isoCC => "IS",
subRegion => "",
region => "Iceland",
|
532901be |
ipv4 => "True",
ipv6 => "False",
loadBalanced => "Unknown",
|
a57cbe31 |
httpWebsiteMirror => "http://theonionrouter.com/",
httpsWebsiteMirror => "",
|
940ab031 |
rsyncWebsiteMirror => "",
|
532901be |
ftpWebsiteMirror => "",
|
a57cbe31 |
httpDistMirror => "http://theonionrouter.com/dist/",
httpsDistMirror => "",
|
2b9f77ca |
rsyncDistMirror => ""
|
532901be |
},
|
a57cbe31 |
mirror014 => {
adminContact => "tormaster AT xpdm DOT us",
orgName => "Xpdm",
isoCC => "US",
subRegion => "",
region => "North America",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "Unknown",
httpWebsiteMirror => "http://torproj.xpdm.us/",
httpsWebsiteMirror => "https://torproj.xpdm.us/",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
httpDistMirror => "http://torproj.xpdm.us/dist/",
httpsDistMirror => "https://torproj.xpdm.us/dist/",
rsyncDistMirror => "",
|
2b9f77ca |
hiddenServiceMirror => "http://h3prhz46uktgm4tt.onion/"
|
a57cbe31 |
},
|
2b9f77ca |
mirror016 => {
|
ab4b6992 |
adminContact => "security AT hostoffice DOT hu",
|
87080eec |
orgName => "Unknown",
isoCC => "HU",
subRegion => "Hungary",
region => "Europe",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
|
f45ba876 |
httpWebsiteMirror => "http://mirror.tor.hu/",
|
87080eec |
httpsWebsiteMirror => "",
|
940ab031 |
rsyncWebsiteMirror => "",
|
87080eec |
ftpWebsiteMirror => "",
|
3b0a6878 |
httpDistMirror => "http://mirror.tor.hu/dist/",
|
87080eec |
httpsDistMirror => "",
rsyncDistMirror => "",
|
2b9f77ca |
hiddenServiceMirror => ""
|
940ab031 |
},
|
2b9f77ca |
mirror018 => {
|
940ab031 |
adminContact => "",
orgName => "chaos darmstadt",
isoCC => "DE",
subRegion => "Germany",
region => "Europe",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://mirrors.chaos-darmstadt.de/tor-mirror/",
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
httpDistMirror => "http://mirrors.chaos-darmstadt.de/tor-mirror/dist/",
httpsDistMirror => "",
rsyncDistMirror => "",
|
2b9f77ca |
hiddenServiceMirror => ""
|
c7112e94 |
},
|
6f73b9b1 |
|
838938ca |
mirror019 => {
|
da69ab61 |
adminContact => "webmaster AT askapache DOT com",
orgName => "AskApache",
|
c7112e94 |
isoCC => "US",
subRegion => "California",
region => "US",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://tor.askapache.com/",
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
|
da69ab61 |
httpDistMirror => "http://tor.askapache.com/dist/",
|
c7112e94 |
httpsDistMirror => "",
rsyncDistMirror => "",
|
2b9f77ca |
hiddenServiceMirror => ""
|
c819dd8d |
},
|
6f73b9b1 |
|
838938ca |
mirror020 => {
|
ddfe7fb7 |
adminContact => " mail AT benjamin-meier DOT info ",
orgName => "beme it",
|
6355d769 |
isoCC => "DE",
|
54ef3364 |
subRegion => "",
|
ddfe7fb7 |
region => "DE",
|
54ef3364 |
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
|
ddfe7fb7 |
httpWebsiteMirror => "http://tor.beme-it.de/",
|
2412008c |
httpsWebsiteMirror => "https://tor.beme-it.de/",
|
6355d769 |
rsyncWebsiteMirror => "rsync://tor.beme-it.de/tor",
|
54ef3364 |
ftpWebsiteMirror => "",
|
ddfe7fb7 |
httpDistMirror => "http://tor.beme-it.de/dist/",
|
2412008c |
httpsDistMirror => "https://tor.beme-it.de/dist/",
|
6355d769 |
rsyncDistMirror => "rsync://tor.beme-it.de/tor/dist",
|
2b9f77ca |
hiddenServiceMirror => ""
|
c819dd8d |
},
|
6f73b9b1 |
|
838938ca |
mirror021 => {
|
56e53786 |
adminContact => "",
|
65d4c20f |
orgName => "India Tor Fans",
|
56e53786 |
isoCC => "IN",
subRegion => "",
region => "IN",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
|
df83e179 |
httpWebsiteMirror => "http://www.torproject.org.in/",
|
56e53786 |
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
httpDistMirror => "http://www.torproject.org.in/dist/",
httpsDistMirror => "",
rsyncDistMirror => "",
|
2b9f77ca |
hiddenServiceMirror => ""
|
56e53786 |
},
|
838938ca |
mirror024 => {
|
bf3c67eb |
adminContact => "",
|
65d4c20f |
orgName => "homosu",
|
b55e8536 |
isoCC => "SE",
|
bf3c67eb |
subRegion => "",
|
b55e8536 |
region => "SE",
|
bf3c67eb |
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://tor.homosu.net/",
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
|
3b0a6878 |
httpDistMirror => "http://tor.homosu.net/dist/",
|
bf3c67eb |
httpsDistMirror => "",
rsyncDistMirror => "",
|
2b9f77ca |
hiddenServiceMirror => ""
|
86771c7f |
},
|
e2a7cfa7 |
|
838938ca |
mirror025 => {
|
e2a7cfa7 |
adminContact => "margus.random at mail.ee",
orgName => "CyberSIDE",
|
65fa2bbd |
isoCC => "EE",
|
e2a7cfa7 |
subRegion => "",
region => "EE",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://cyberside.planet.ee/tor/",
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
|
dcf4e3fd |
httpDistMirror => "http://cyberside.net.ee/tor/",
|
e2a7cfa7 |
httpsDistMirror => "",
rsyncDistMirror => "",
|
2b9f77ca |
hiddenServiceMirror => ""
|
9133d82f |
},
|
962a1385 |
|
08265341 |
mirror028 => {
|
b5630580 |
adminContact => "",
|
c95b68b3 |
orgName => "NW Linux",
|
b5630580 |
isoCC => "US",
subRegion => "WA",
region => "US",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
|
3b0a6878 |
httpWebsiteMirror => "http://torproject.nwlinux.us/",
|
b5630580 |
httpsWebsiteMirror => "",
|
99e7e300 |
rsyncWebsiteMirror => "rsync://nwlinux.us/tor-web",
|
b5630580 |
ftpWebsiteMirror => "",
|
3b0a6878 |
httpDistMirror => "http://torproject.nwlinux.us/dist/",
|
b5630580 |
httpsDistMirror => "",
|
99e7e300 |
rsyncDistMirror => "rsync://nwlinux.us/tor-dist",
|
1042f856 |
hiddenServiceMirror => "",
},
|
8276ea18 |
mirror029 => {
|
1042f856 |
adminContact => "",
orgName => "LazyTiger",
isoCC => "FR",
subRegion => "",
region => "FR",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://tor.taiga-san.net/",
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
|
3b0a6878 |
httpDistMirror => "http://tor.taiga-san.net/dist/",
|
1042f856 |
httpsDistMirror => "",
rsyncDistMirror => "",
|
b4cd62c2 |
hiddenServiceMirror => "",
},
|
8276ea18 |
mirror030 => {
|
b4cd62c2 |
adminContact => "",
orgName => "searchprivate",
isoCC => "US",
subRegion => "TX",
region => "US",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
|
3b0a6878 |
httpWebsiteMirror => "http://tor.searchprivate.com/",
|
b4cd62c2 |
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
|
3b0a6878 |
httpDistMirror => "http://tor.searchprivate.com/dist/",
|
b4cd62c2 |
httpsDistMirror => "",
rsyncDistMirror => "",
|
5afd7fcd |
hiddenServiceMirror => "",
},
|
8276ea18 |
mirror031 => {
|
5afd7fcd |
adminContact => "",
orgName => "cyberarmy",
isoCC => "AT",
subRegion => "",
region => "AT",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
|
3b0a6878 |
httpWebsiteMirror => "http://tor.cyberarmy.at/",
|
5afd7fcd |
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
|
0d07397a |
httpDistMirror => "",
|
5afd7fcd |
httpsDistMirror => "",
rsyncDistMirror => "",
hiddenServiceMirror => "",
},
mirror032 => {
adminContact => "",
|
c26f8224 |
orgName => "torproject.is",
|
5afd7fcd |
isoCC => "IS",
subRegion => "",
region => "IS",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
|
c26f8224 |
httpWebsiteMirror => "http://torproject.is/",
|
5afd7fcd |
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
|
3b0a6878 |
httpDistMirror => "http://torproject.is/dist/",
|
5afd7fcd |
httpsDistMirror => "",
rsyncDistMirror => "",
|
9133d82f |
hiddenServiceMirror => "",
|
78a6df20 |
},
mirror033 => {
adminContact => "",
orgName => "torservers",
isoCC => "DE",
subRegion => "",
region => "DE",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://www.torservers.net/mirrors/torproject.org/",
httpsWebsiteMirror => "https://www.torservers.net/mirrors/torproject.org/",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
|
3b0a6878 |
httpDistMirror => "http://www.torservers.net/mirrors/torproject.org/dist/",
httpsDistMirror => "https://www.torservers.net/mirrors/torproject.org/dist/",
|
78a6df20 |
rsyncDistMirror => "",
hiddenServiceMirror => "http://hbpvnydyyjbmhx6b.onion/mirrors/torproject.org/",
|
f7418f8c |
},
|
57ca6a7c |
mirror036 => {
adminContact => "",
orgName => "",
isoCC => "NL",
subRegion => "",
region => "NL",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "",
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
httpDistMirror => "",
|
3b0a6878 |
httpsDistMirror => "https://www.coevoet.nl/tor/dist/",
|
57ca6a7c |
rsyncDistMirror => "",
hiddenServiceMirror => "",
|
35949ea1 |
},
mirror038 => {
adminContact => "",
orgName => "",
isoCC => "LT",
subRegion => "",
region => "LT",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
|
3b0a6878 |
httpWebsiteMirror => "http://tor.vesta.nu/",
|
35949ea1 |
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
|
3b0a6878 |
httpDistMirror => "http://tor.vesta.nu/dist/",
|
da77fe78 |
httpsDistMirror => "",
rsyncDistMirror => "",
|
d7f8d17a |
hiddenServiceMirror => "",
|
f56169bb |
},
mirror045 => {
adminContact => "",
orgName => "",
isoCC => "TN",
subRegion => "",
region => "TN",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://tor.mirror.tn/",
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
httpDistMirror => "http://tor.mirror.tn/dist/",
httpsDistMirror => "",
rsyncDistMirror => "",
|
da77fe78 |
hiddenServiceMirror => "",
|
df990e60 |
},
|
b8618cd9 |
mirror045 => {
|
df990e60 |
adminContact => "",
orgName => "",
|
b8618cd9 |
isoCC => "TN",
|
df990e60 |
subRegion => "",
|
b8618cd9 |
region => "TN",
|
df990e60 |
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
|
66b90f5b |
httpWebsiteMirror => "http://torproject.antagonism.org/",
|
b8618cd9 |
httpsWebsiteMirror => "https://torproject.antagonism.org/",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
|
61b18501 |
httpDistMirror => "",
httpsDistMirror => "",
|
b8618cd9 |
rsyncDistMirror => "",
|
b8de9898 |
hiddenServiceMirror => "",
|
7454d51d |
},
mirror048 => {
adminContact => "",
orgName => "",
isoCC => "AT",
subRegion => "",
region => "AT",
ipv4 => "True",
ipv6 => "True",
loadBalanced => "No",
httpWebsiteMirror => "http://tor.dont-know-me.at/",
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
httpDistMirror => "http://tor.dont-know-me.at/dist/",
httpsDistMirror => "",
rsyncDistMirror => "",
|
6f37444e |
hiddenServiceMirror => "",
},
mirror049 => {
adminContact => "IceBear",
|
43b72c60 |
orgName => "myRL.net",
|
6f37444e |
isoCC => "IS",
subRegion => "",
region => "IS",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://tor.myrl.net/",
httpsWebsiteMirror => "https://tor.myrl.net/",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
httpDistMirror => "http://tor.myrl.net/dist/",
httpsDistMirror => "https://tor.myrl.net/dist/",
rsyncDistMirror => "",
|
8a0e3858 |
hiddenServiceMirror => "",
},
mirror050 => {
adminContact => "",
|
ecb76586 |
orgName => "borgmann.tv",
|
8a0e3858 |
isoCC => "DE",
subRegion => "",
region => "DE",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://tor.borgmann.tv/",
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
httpDistMirror => "http://tor.borgmann.tv/dist/",
httpsDistMirror => "",
rsyncDistMirror => "",
|
2242997b |
hiddenServiceMirror => "",
|
30b13f29 |
},
mirror051 => {
adminContact => "",
orgName => "torland",
|
acbd4748 |
isoCC => "GB",
|
30b13f29 |
subRegion => "",
|
acbd4748 |
region => "GB",
|
30b13f29 |
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
|
d933529b |
httpWebsiteMirror => "http://mirror.torland.me/torproject.org/",
httpsWebsiteMirror => "https://mirror.torland.me/torproject.org/",
|
30b13f29 |
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
|
d933529b |
httpDistMirror => "http://mirror.torland.me/torproject.org/dist/",
httpsDistMirror => "https://mirror.torland.me/torproject.org/dist/",
|
30b13f29 |
rsyncDistMirror => "",
hiddenServiceMirror => "",
},
mirror052 => {
adminContact => "",
orgName => "spline",
isoCC => "DE",
subRegion => "",
region => "DE",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://tor.spline.de/",
|
a081ea3e |
httpsWebsiteMirror => "https://tor.spline.inf.fu-berlin.de/",
|
30b13f29 |
rsyncWebsiteMirror => "rsync://ftp.spline.de/tor",
ftpWebsiteMirror => "ftp://ftp.spline.de/pub/tor",
httpDistMirror => "http://tor.spline.de/dist/",
|
a081ea3e |
httpsDistMirror => "https://tor.spline.inf.fu-berlin.de/dist/",
|
30b13f29 |
rsyncDistMirror => "rsync://ftp.spline.de/tor/dist",
hiddenServiceMirror => "",
|
9620cfee |
},
mirror053 => {
adminContact => "",
orgName => "",
isoCC => "AT",
subRegion => "",
region => "AT",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://torproject.ph3x.at/",
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
httpDistMirror => "http://torproject.ph3x.at/dist/",
httpsDistMirror => "",
rsyncDistMirror => "",
|
e5d33ddf |
hiddenServiceMirror => "",
},
mirror054 => {
adminContact => "",
|
8aea804d |
orgName => "hessmo",
|
e5d33ddf |
isoCC => "US",
subRegion => "",
region => "US",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://mirror.hessmo.com/tor/",
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
|
8aea804d |
httpDistMirror => "http://mirror.hessmo.com/tor/dist/",
|
e5d33ddf |
httpsDistMirror => "",
rsyncDistMirror => "",
|
4471d2f9 |
hiddenServiceMirror => "",
},
|
b9fdc5f6 |
mirror058 => {
adminContact => "",
orgName => "",
isoCC => "US",
subRegion => "",
region => "US",
ipv4 => "True",
ipv6 => "True",
loadBalanced => "No",
httpWebsiteMirror => "http://tor.loritsu.com/",
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
httpDistMirror => "http://tor.loritsu.com/dist/",
httpsDistMirror => "",
rsyncDistMirror => "",
hiddenServiceMirror => "",
},
|
b15d962f |
mirror060 => {
adminContact => "",
orgName => "",
isoCC => "DE",
subRegion => "",
region => "DE",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://torproject.cryptowars.info/",
httpsWebsiteMirror => "https://torproject.cryptowars.info/",
rsyncWebsiteMirror => "rsync://torproject.cryptowars.info/",
ftpWebsiteMirror => "",
httpDistMirror => "http://torproject.cryptowars.info/dist/",
httpsDistMirror => "https://torproject.cryptowars.info/dist/",
rsyncDistMirror => "",
|
9620cfee |
hiddenServiceMirror => "",
|
d5de62bb |
},
|
42b0cad9 |
mirror062 => {
adminContact => "",
orgName => "",
isoCC => "DE",
subRegion => "",
region => "DE",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://tor.dev-random.de/",
httpsWebsiteMirror => "https://tor.dev-random.de/",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
httpDistMirror => "http://tor.dev-random.de/dist/",
httpsDistMirror => "https://tor.dev-random.de/dist/",
rsyncDistMirror => "",
hiddenServiceMirror => "",
},
mirror063 => {
adminContact => "",
|
d0791268 |
orgName => "crazyhaze.de",
|
42b0cad9 |
isoCC => "DE",
subRegion => "",
region => "DE",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://tor.crazyhaze.de/",
httpsWebsiteMirror => "https://tor.crazyhaze.de/",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
|
d0791268 |
httpDistMirror => "http://tor.crazyhaze.de/dist/",
httpsDistMirror => "https://tor.crazyhaze.de/dist/",
|
42b0cad9 |
rsyncDistMirror => "",
hiddenServiceMirror => "",
|
a8e434d9 |
},
mirror066 => {
adminContact => "",
|
0f9a54b5 |
orgName => "Lightning-bolt.net",
isoCC => "CZ",
|
a8e434d9 |
subRegion => "",
|
0f9a54b5 |
region => "CZ",
|
a8e434d9 |
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://torproject.lightning-bolt.net/",
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
httpDistMirror => "http://torproject.lightning-bolt.net/dist/",
httpsDistMirror => "",
rsyncDistMirror => "",
|
d5de62bb |
hiddenServiceMirror => "",
|
e9b93148 |
},
mirror067 => {
adminContact => "",
orgName => "",
isoCC => "US",
subRegion => "",
region => "US",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
|
ad72b7e4 |
httpWebsiteMirror => "http://tor.mirrors.whitedholdings.org/",
httpsWebsiteMirror => "https://tor.mirrors.whitedholdings.org/",
rsyncWebsiteMirror => "rsync://mirrors.whitedholdings.org/tor",
|
e9b93148 |
ftpWebsiteMirror => "",
|
ad72b7e4 |
httpDistMirror => "http://tor.mirrors.whitedholdings.org/dist/",
httpsDistMirror => "https://tor.mirrors.whitedholdings.org/dist/",
rsyncDistMirror => "rsync://tor.mirrors.whitedholdings.org/tor-dist",
|
e9b93148 |
hiddenServiceMirror => "",
|
adf355a4 |
},
mirror069 => {
adminContact => "",
orgName => "",
isoCC => "FR",
subRegion => "",
region => "FR",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://tor.mirror.chekanov.net/",
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
httpDistMirror => "http://tor.mirror.chekanov.net/dist/",
httpsDistMirror => "",
rsyncDistMirror => "",
|
78b3274c |
hiddenServiceMirror => "",
|
b11a3951 |
},
mirror072 => {
adminContact => "",
orgName => "",
isoCC => "US",
subRegion => "",
region => "US",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://tor.minibofh.org/",
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
httpDistMirror => "http://tor.minibofh.org/dist/",
httpsDistMirror => "",
rsyncDistMirror => "",
hiddenServiceMirror => "",
},
mirror073 => {
adminContact => "",
orgName => "",
isoCC => "UA",
subRegion => "",
region => "UA",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://torua.reactor-xg.kiev.ua/",
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
httpDistMirror => "http://torua.reactor-xg.kiev.ua/dist/",
httpsDistMirror => "",
rsyncDistMirror => "",
|
a7e8b72f |
hiddenServiceMirror => "",
|
126f0de6 |
},
mirror075 => {
adminContact => "",
|
003b9f5e |
orgName => "me0w.cc",
isoCC => "RO",
|
126f0de6 |
subRegion => "",
|
003b9f5e |
region => "RO",
|
126f0de6 |
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://tor.me0w.cc/",
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
httpDistMirror => "http://tor.me0w.cc/dist/",
httpsDistMirror => "",
rsyncDistMirror => "",
|
8b75292a |
hiddenServiceMirror => "",
},
mirror076 => {
adminContact => "",
orgName => "",
isoCC => "US",
subRegion => "",
region => "US",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://mirror.nametoday.me/tor/",
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
httpDistMirror => "http://mirror.nametoday.me/tor/dist/",
httpsDistMirror => "",
rsyncDistMirror => "",
|
fb696fce |
hiddenServiceMirror => "",
|
f80d2636 |
},
mirror077 => {
adminContact => "",
orgName => "",
isoCC => "UK",
subRegion => "",
region => "UK",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://tor.mage.me.uk/",
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
httpDistMirror => "http://tor.mage.me.uk/dist/",
httpsDistMirror => "",
rsyncDistMirror => "",
|
a15e7e77 |
hiddenServiceMirror => "",
},
mirror078 => {
adminContact => "",
orgName => "",
isoCC => "CH",
subRegion => "",
region => "CH",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://torproject.pillo-srv.ch/",
httpsWebsiteMirror => "https://torproject.pillo-srv.ch/",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
httpDistMirror => "http://torproject.pillo-srv.ch/dist/",
httpsDistMirror => "https://torproject.pillo-srv.ch/dist/",
rsyncDistMirror => "",
|
a854b94c |
hiddenServiceMirror => "",
},
mirror079 => {
adminContact => "",
orgName => "",
isoCC => "LU",
subRegion => "",
region => "LU",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://torproject.adamas.ai/",
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
httpDistMirror => "http://torproject.adamas.ai/dist/",
httpsDistMirror => "",
rsyncDistMirror => "",
hiddenServiceMirror => "",
},
mirror080 => {
adminContact => "",
orgName => "",
isoCC => "FR",
subRegion => "",
region => "FR",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://torproject.c3l.lu/",
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
httpDistMirror => "http://torproject.c3l.lu/dist/",
httpsDistMirror => "",
rsyncDistMirror => "",
|
e5425867 |
hiddenServiceMirror => "",
},
mirror081 => {
adminContact => "",
orgName => "",
isoCC => "EE",
subRegion => "",
region => "EE",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://tor.li/",
|
371cfe23 |
httpsWebsiteMirror => "https://tor.li/",
|
e5425867 |
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
|
371cfe23 |
httpDistMirror => "http://tor.li/dist/",
httpsDistMirror => "https://tor.li/dist/",
|
e5425867 |
rsyncDistMirror => "",
|
25599874 |
hiddenServiceMirror => "",
},
mirror082 => {
adminContact => "",
orgName => "",
isoCC => "US",
subRegion => "",
region => "US",
ipv4 => "True",
ipv6 => "True",
loadBalanced => "No",
httpWebsiteMirror => "http://mirror.nametoday.me/tor/",
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
httpDistMirror => "http://mirror.nametoday.me/tor/dist/",
httpsDistMirror => "",
rsyncDistMirror => "",
|
4f2b8ced |
hiddenServiceMirror => "",
|
230ecae9 |
},
mirror085 => {
adminContact => "",
|
89e5899d |
orgName => "Soviet Anonymous",
|
230ecae9 |
isoCC => "RU",
subRegion => "",
region => "RU",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
|
2a028bd3 |
httpWebsiteMirror => "http://creep.im/tor",
|
230ecae9 |
httpsWebsiteMirror => "https://creep.im/tor",
|
d86e2a5b |
rsyncWebsiteMirror => "rsync://creep.im/tor",
ftpWebsiteMirror => "ftp://creep.im/mirrors/tor",
|
2a028bd3 |
httpDistMirror => "http://creep.im/tor/dist/",
|
89e5899d |
httpsDistMirror => "https://creep.im/tor/dist/",
|
d86e2a5b |
rsyncDistMirror => "rsync://creep.im/tor-dist",
|
acccf15f |
hiddenServiceMirror => "",
},
mirror086 => {
adminContact => "",
orgName => "",
isoCC => "US",
subRegion => "",
region => "US",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://199.175.55.215/",
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
httpDistMirror => "http://199.175.55.215/dist/",
httpsDistMirror => "",
rsyncDistMirror => "",
|
3e7ff90e |
hiddenServiceMirror => "",
},
mirror087 => {
adminContact => "",
orgName => "",
isoCC => "DE",
subRegion => "",
region => "DE",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://tor.linuxlounge.net/",
httpsWebsiteMirror => "https://tor.linuxlounge.net/",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
httpDistMirror => "http://tor.linuxlounge.net/dist/",
httpsDistMirror => "https://tor.linuxlounge.net/dist/",
rsyncDistMirror => "",
|
230ecae9 |
hiddenServiceMirror => "",
|
fc07451c |
},
mirror088 => {
adminContact => "",
orgName => "",
isoCC => "US",
subRegion => "",
region => "US",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "",
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
|
2b9f77ca |
ftpWebsiteMirror => "",
|
fc07451c |
httpDistMirror => "http://mirrors.go-part.com/tor/dist/",
httpsDistMirror => "",
rsyncDistMirror => "rsync://mirrors.go-part.com/tor/dist/",
hiddenServiceMirror => "",
|
aa56d98c |
},
mirror089 => {
adminContact => "",
orgName => "",
isoCC => "US",
subRegion => "",
region => "US",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "",
httpsWebsiteMirror => "",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
httpDistMirror => "http://www.netgull.com/torproject/",
httpsDistMirror => "",
rsyncDistMirror => "",
|
f5b2c927 |
hiddenServiceMirror => "",
},
mirror090 => {
adminContact => "",
orgName => "",
isoCC => "US",
subRegion => "",
region => "US",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://torproject.guilhem.org/",
httpsWebsiteMirror => "https://torproject.guilhem.org/",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
httpDistMirror => "http://torproject.guilhem.org/dist/",
httpsDistMirror => "https://torproject.guilhem.org/dist/",
rsyncDistMirror => "",
|
15684959 |
hiddenServiceMirror => "",
},
mirror091 => {
adminContact => "",
orgName => "",
isoCC => "MX",
subRegion => "",
region => "MX",
ipv4 => "True",
ipv6 => "False",
loadBalanced => "No",
httpWebsiteMirror => "http://fbnaia.homelinux.net/torproject/",
httpsWebsiteMirror => "https://fbnaia.homelinux.net/torproject/",
rsyncWebsiteMirror => "",
ftpWebsiteMirror => "",
httpDistMirror => "http://fbnaia.homelinux.net/torproject/dist/",
httpsDistMirror => "https://fbnaia.homelinux.net/torproject//dist/",
rsyncDistMirror => "",
|
aa56d98c |
hiddenServiceMirror => "",
|
fb696fce |
}
|
532901be |
);
my $count = values %m;
print "We have a total of $count mirrors\n";
print "Fetching the last updated date for each mirror.\n";
|
3d7f7acd |
my $tortime;
|
3b0a6878 |
$tortime = FetchDate("https://www.torproject.org/");
|
f80d2636 |
# Adjust offical Tor time by out-of-date offset: number of days * seconds per day
$tortime -= 1 * 172800;
|
3d7f7acd |
print "The official time for Tor is $tortime. \n";
|
532901be |
foreach my $server ( keys %m ) {
print "Attempting to fetch from $m{$server}{'orgName'}\n";
if ($m{$server}{'httpWebsiteMirror'}) {
print "Attempt to fetch via HTTP.\n";
$m{$server}{"updateDate"} = FetchDate("$m{$server}{'httpWebsiteMirror'}");
} elsif ($m{$server}{'httpsWebsiteMirror'}) {
print "Attempt to fetch via HTTPS.\n";
$m{$server}{"updateDate"} = FetchDate("$m{$server}{'httpsWebsiteMirror'}");
} elsif ($m{$server}{'ftpWebsiteMirror'}) {
print "Attempt to fetch via FTP.\n";
$m{$server}{"updateDate"} = FetchDate("$m{$server}{'ftpWebsiteMirror'}");
} else {
print "We were unable to fetch or store anything. We still have the following: $m{$server}{'updateDate'}\n";
}
print "We fetched and stored the following: $m{$server}{'updateDate'}\n";
}
print "We sorted the following mirrors by their date of last update: \n";
foreach my $server ( sort { $m{$b}{'updateDate'} <=> $m{$a}{'updateDate'}} keys %m ) {
print "\n";
print "Mirror $m{$server}{'orgName'}: \n";
foreach my $attrib ( sort keys %{$m{$server}} ) {
print "$attrib = $m{$server}{$attrib}";
print "\n";
};
}
my $outFile = "include/mirrors-table.wmi";
my $html;
open(OUT, "> $outFile") or die "Can't open $outFile: $!";
|
940ab031 |
# Here's where we open a file and print some wml include goodness
|
532901be |
# This is storted from last known recent update to unknown update times
foreach my $server ( sort { $m{$b}{'updateDate'} <=> $m{$a}{'updateDate'}} keys %m ) {
|
bf099ff9 |
my $time;
|
b57d3dbe |
if ( "$m{$server}{'updateDate'}" ne "Unknown") {
|
8c8f898f |
if ( $m{$server}{'updateDate'} > $tortime ) {
|
eafdc12d |
$time = "Up to date";
|
98ae0563 |
} else { $time = "DO NOT USE. Out of date."; }
|
33d46751 |
} else { $time = "Unknown"; }
|
759dd463 |
print OUT <<"END";
\n<tr>\n
<td>$m{$server}{'isoCC'}</td>\n
<td>$m{$server}{'orgName'}</td>\n
<td>$time</td>\n
END
my %prettyNames = (
httpWebsiteMirror => "http",
httpsWebsiteMirror => "https",
ftpWebsiteMirror => "ftp",
rsyncWebsiteMirror => "rsync",
httpDistMirror => "http",
httpsDistMirror => "https",
|
98ae0563 |
rsyncDistMirror => "rsync", );
|
759dd463 |
foreach my $precious ( sort keys %prettyNames )
|
532901be |
{
if ($m{$server}{"$precious"}) {
print OUT " <td><a href=\"" . $m{$server}{$precious} . "\">" .
|
759dd463 |
"$prettyNames{$precious}</a></td>\n";
|
532901be |
} else { print OUT " <td> - </td>\n"; }
}
print OUT "</tr>\n";
}
close(OUT);
|