[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [gettor/master] Send mirrors option
commit e81d9c681ba7998038a1ae626a00949766b498c7
Author: ilv <ilv@xxxxxxxxxxxxxxxxxxxxxxxx>
Date: Mon Aug 3 15:05:53 2015 -0300
Send mirrors option
---
get_mirrors.py | 338 ++++++
gettor/smtp.py | 239 ++--
lang/smtp/i18n/en/LC_MESSAGES/en.po | 19 +
mirrors-list.txt | 58 +
smtp.cfg | 3 +-
tor-mirrors | 2187 +++++++++++++++++++++++++++++++++++
tor-mirrors.csv | 116 ++
7 files changed, 2867 insertions(+), 93 deletions(-)
diff --git a/get_mirrors.py b/get_mirrors.py
new file mode 100644
index 0000000..9c4b0c4
--- /dev/null
+++ b/get_mirrors.py
@@ -0,0 +1,338 @@
+# -*- coding: utf-8 -*-
+#
+# This file is part of GetTor
+#
+# :authors: Israel Leiva <ilv@xxxxxxxxxxxxxx>
+# see also AUTHORS file
+#
+# :license: This is Free Software. See LICENSE for license information.
+
+"""get_mirrors -- Download the list of tpo's mirrors for GetTor."""
+
+import os
+import json
+import codecs
+import logging
+import argparse
+
+
+from OpenSSL import SSL
+from OpenSSL import crypto
+
+from twisted.web import client
+from twisted.python import log
+from twisted.internet import ssl
+from twisted.internet import defer
+from twisted.internet import protocol
+from twisted.internet import reactor
+from twisted.internet.error import TimeoutError
+from twisted.internet.error import DNSLookupError
+from twisted.internet.error import ConnectionRefusedError
+
+from gettor import utils
+
+# Associate each protocol with its column name in tor-mirrors.csv
+PROTOS = {
+ 'https': 'httpsWebsiteMirror',
+ 'http': 'httpWebsiteMirror',
+ 'rsync': 'rsyncWebsiteMirror',
+ 'https-dist': 'httpsDistMirror',
+ 'http-dist': 'httpDistMirror',
+ 'rsync-dist': 'rsyncDistMirror',
+ 'ftp': 'ftpWebsiteMirror',
+ 'onion': 'hiddenServiceMirror',
+}
+
+# Tor Project's website certificate
+# $ openssl s_client -showcerts -connect tpo:443 < /dev/null > tpo.pem
+CERT_TPO = '/path/to/gettor/tpo.pem'
+
+
+# Taken from get-tor-exits (BridgeDB)
+class FileWriter(protocol.Protocol):
+ """Read a downloaded file incrementally and write to file."""
+ def __init__(self, finished, file):
+ """Create a FileWriter.
+
+ .. warning:: We currently only handle the first 2MB of a file. Files
+ over 2MB will be truncated prematurely. *note*: this should be
+ enough for the mirrors file.
+
+ :param finished: A :class:`~twisted.internet.defer.Deferred` which
+ will fire when another portion of the download is complete.
+ """
+ self.finished = finished
+ self.remaining = 1024 * 1024 * 2
+ self.fh = file
+
+ def dataReceived(self, bytes):
+ """Write a portion of the download with ``bytes`` size to disk."""
+ if self.remaining:
+ display = bytes[:self.remaining]
+ self.fh.write(display)
+ self.fh.flush()
+ self.remaining -= len(display)
+
+ def connectionLost(self, reason):
+ """Called when the download is complete."""
+ logging.info('Finished receiving mirrors list: %s'
+ % reason.getErrorMessage())
+ self.finished.callback(None)
+
+
+# Based in tor2web.utils.ssl (Tor2web)
+class HTTPSVerifyingContextFactory(ssl.ClientContextFactory):
+ def __init__(self, cn):
+ self.cn = cn
+ #
+ # From https://docs.python.org/2/library/ssl.html#ssl-security
+ #
+ # "SSL versions 2 and 3 are considered insecure and are therefore
+ # dangerous to use. If you want maximum compatibility between clients
+ # and servers, it is recommended to use PROTOCOL_SSLv23 as the protocol
+ # version and then disable SSLv2 and SSLv3 explicitly"
+ #
+ self.method = SSL.SSLv23_METHOD
+
+ def getContext(self, hostname, port):
+ """Get this connection's OpenSSL context.
+
+ We disable SSLv2 and SSLv3. We also check the certificate received
+ is the one we expect (using the "common name").
+
+ """
+ ctx = self._contextFactory(self.method)
+ ctx.set_options(SSL.OP_NO_SSLv2)
+ ctx.set_options(SSL.OP_NO_SSLv3)
+ ctx.set_verify(
+ SSL.VERIFY_PEER | SSL.VERIFY_FAIL_IF_NO_PEER_CERT,
+ self.verifyCN
+ )
+
+ return ctx
+
+ def verifyCN(self, connection, x509, errno, depth, preverifyOK):
+ # DEBUG: print "%s == %s ?" % (self.cn, x509.get_subject().commonName)
+
+ # Somehow, if I don't set this to true, the verifyCN doesn't go
+ # down in the chain, I don't know if this is OK
+ verify = True
+ if depth == 0:
+ if self.cn == x509.get_subject().commonName:
+ verify = True
+ else:
+ verify = False
+ return verify
+
+
+# Based in get-tor-exits (BridgeDB)
+def handle(failure):
+ """Handle a **failure**."""
+ if failure.type == ConnectionRefusedError:
+ logging.error("Couldn't download file; connection was refused.")
+ elif failure.type == DNSLookupError:
+ logging.error("Couldn't download file; domain resolution failed.")
+ elif failure.type == TimeoutError:
+ logging.error("Couldn't download file; connection timed out.")
+ else:
+ logging.error("Couldn't download file.")
+
+ print "Couldn't download file. Check the log."
+ os._exit(-1)
+
+
+# Taken from get-tor-exits (BridgeDB)
+def writeToFile(response, filename):
+ """Write requested content to filename."""
+ finished = defer.Deferred()
+ response.deliverBody(FileWriter(finished, filename))
+ return finished
+
+
+def is_json(my_json):
+ """Check if json generated is valid."""
+ try:
+ json_object = json.loads(my_json)
+ except ValueError, e:
+ return False
+ return True
+
+
+def add_entry(mirrors, columns, elements):
+ """Add entry to mirrors list."""
+ entry = {}
+ count = 0
+ for e in elements:
+ e = e.replace("\n", '')
+ entry[columns[count]] = e
+ count = count + 1
+
+ mirrors.append(entry)
+
+
+def add_mirror(file, entry, proto):
+ """Add mirror to mirrors list."""
+ file.write(
+ "%s - by %s (%s)\n" % (
+ entry[proto],
+ entry['orgName'],
+ entry['subRegion'],
+ )
+ )
+
+
+def main():
+ """Script to get the list of tpo's mirrors from tpo and adapt it to
+ be used by GetTor.
+
+ Usage: python2.7 get_mirrors.py [-h] [--proto protocol]
+
+ By default, the protocol is 'https'. Possible values of protcol are:
+
+ http, https, rsync, ftp, onion, http-dist, https-dist, rsync-dist.
+
+ """
+ parser = argparse.ArgumentParser(
+ description="Utility to download tpo's mirrors and make it usable\
+ by GetTor."
+ )
+
+ parser.add_argument(
+ '-p', '--proto',
+ default='https',
+ help='Protocol filter. Possible values: http, https, rsync, ftp, onion\
+ http-dist, https-dist, rsync-dist. Default to https.')
+
+ args = parser.parse_args()
+ p = args.proto
+
+ gettor_path = '/path/to/gettor/'
+ csv_path = os.path.join(gettor_path, 'tor-mirrors.csv')
+ json_path = os.path.join(gettor_path, 'tor-mirrors')
+ mirrors_list = os.path.join(gettor_path, 'mirrors-list.txt')
+
+ # Load tpo certificate and extract common name, we'll later compare this
+ # with the certificate sent by tpo to check we're really taltking to it
+ try:
+ data = open(CERT_TPO).read()
+ x509 = crypto.load_certificate(crypto.FILETYPE_PEM, data)
+ cn_tpo = x509.get_subject().commonName
+ except Exception as e:
+ logging.error("Error with certificate: %s" % str(e))
+ return
+
+ # While we wait the json of mirrors to be implemented in tpo, we need
+ # to download the csv file and transform it to json
+
+ # The code below is based in get-tor-exits script from BridgeDB and
+ # the tor2web.utils.ssl module from Tor2web
+ url = 'https://www.torproject.org/include/tor-mirrors.csv'
+
+ try:
+ fh = open(csv_path, 'w')
+ except IOError as e:
+ logging.error("Could not open %s" % csv_path)
+ return
+
+ logging.info("Requesting %s..." % url)
+
+ # If certificate don't match an exception will be raised
+ # this is my first experience with twisted, maybe I'll learn to handle
+ # this better some time in the future...
+ contextFactory = HTTPSVerifyingContextFactory(cn_tpo)
+ agent = client.Agent(reactor, contextFactory)
+ d = agent.request("GET", url)
+ d.addCallback(writeToFile, fh)
+ d.addErrback(handle)
+ d.addCallbacks(log.msg, log.err)
+
+ if not reactor.running:
+ d.addCallback(lambda ignored: reactor.stop())
+ reactor.run()
+
+ logging.info("File downloaded!")
+
+ # Now transform it to json -- I couldn't find out how to use a
+ # two-character delimiter with the csv package, so I decided to handle
+ # the csv data by hand. We are doing this until #16601 gets deployed.
+ # https://trac.torproject.org/projects/tor/ticket/16601
+
+ # Code below is based in update-mirrors-json.py script from tpo
+
+ # These are the names of each column e.g. adminContact
+ columns = []
+ # List of mirrors to be built
+ mirrors = []
+
+ logging.info("Transforming csv data into json...")
+ logging.info("Getting data from csv")
+ try:
+ with codecs.open(csv_path, "rb", "utf-8") as csvfile:
+ for line in csvfile:
+ elements = line.split(", ")
+ # first entry have the names of the columns
+ if not columns:
+ columns = elements
+ else:
+ add_entry(mirrors, columns, elements)
+ except IOError as e:
+ logging.error("Couldn't read csv file: %s" % str(e))
+ return
+
+ logging.info("Creating json")
+ if is_json(json.dumps(mirrors)):
+ try:
+ with codecs.open(json_path, "w", "utf-8") as jsonfile:
+ # Make pretty json
+ json.dump(
+ mirrors,
+ jsonfile,
+ sort_keys=True,
+ indent=4,
+ separators=(',', ': '),
+ encoding="utf-8",
+ )
+ except IOError as e:
+ logging.error("Couldn't write json: %s" % str(e))
+ return
+ else:
+ logging.error("Invalid json file")
+ return
+
+ # Now make the mirrors list to be used by GetTor
+ logging.info("Reading json")
+ try:
+ mirrors_json = codecs.open(json_path, "rb", "utf-8")
+ mirrors = json.load(mirrors_json)
+ except IOError as e:
+ logging.error("Couldn't open %s" % json_path)
+ return
+
+ logging.info("Creating new list with protocol: %s" % p)
+ try:
+ list = codecs.open(mirrors_list, "w", "utf-8")
+ for entry in mirrors:
+ if args.proto is not 'all':
+ for e in entry:
+ if e == PROTOS[p] and entry[PROTOS[p]]:
+ add_mirror(list, entry, PROTOS[p])
+ else:
+ for k, v in PROTOS:
+ if entry[v]:
+ add_mirror(list, entry, v)
+ logging.info("List created: %s" % mirrors_list)
+ except IOError as e:
+ logging.error("Couldn't open %s" % mirrors_list)
+ return
+
+if __name__ == "__main__":
+ logging_format = utils.get_logging_format()
+ logging.basicConfig(
+ filename='/path/to/gettor/log/get-mirrors.log',
+ format=logging_format,
+ datefmt="%Y-%m-%d %H:%M:%S",
+ level=logging.INFO
+ )
+ logging.info("Started")
+ main()
+ logging.info("Finished")
diff --git a/gettor/smtp.py b/gettor/smtp.py
index 655b5df..4db3ac7 100644
--- a/gettor/smtp.py
+++ b/gettor/smtp.py
@@ -22,7 +22,10 @@ import smtplib
import datetime
import ConfigParser
+from email import Encoders
+from email.MIMEBase import MIMEBase
from email.mime.text import MIMEText
+from email.MIMEMultipart import MIMEMultipart
import core
import utils
@@ -69,74 +72,60 @@ class SMTP(object):
:param: cfg (string) path of the configuration file.
"""
- # define a set of default values
- DEFAULT_CONFIG_FILE = 'smtp.cfg'
-
- logging.basicConfig(format='[%(levelname)s] %(asctime)s - %(message)s',
- datefmt="%Y-%m-%d %H:%M:%S")
- log = logging.getLogger(__name__)
+ default_cfg = 'smtp.cfg'
config = ConfigParser.ConfigParser()
if cfg is None or not os.path.isfile(cfg):
cfg = DEFAULT_CONFIG_FILE
- config.read(cfg)
+ try:
+ with open(cfg) as f:
+ config.readfp(f)
+ except IOError:
+ raise ConfigError("File %s not found!" % cfg)
try:
self.our_domain = config.get('general', 'our_domain')
- except ConfigParser.Error as e:
- raise ConfigError("Couldn't read 'our_domain' from 'general'")
+ self.mirrors = config.get('general', 'mirrors')
+ self.i18ndir = config.get('i18n', 'dir')
- try:
- core_cfg = config.get('general', 'core_cfg')
- except ConfigParser.Error as e:
- raise ConfigError("Couldn't read 'core_cfg' from 'general'")
+ logdir = config.get('log', 'dir')
+ logfile = os.path.join(logdir, 'smtp.log')
+ loglevel = config.get('log', 'level')
- try:
blacklist_cfg = config.get('blacklist', 'cfg')
self.bl = blacklist.Blacklist(blacklist_cfg)
- except ConfigParser.Error as e:
- raise ConfigError("Couldn't read 'cfg' from 'blacklist'")
-
- try:
self.bl_max_req = config.get('blacklist', 'max_requests')
self.bl_max_req = int(self.bl_max_req)
- except ConfigParser.Error as e:
- raise ConfigError("Couldn't read 'max_requests' from 'blacklist'")
-
- try:
self.bl_wait_time = config.get('blacklist', 'wait_time')
self.bl_wait_time = int(self.bl_wait_time)
- except ConfigParser.Error as e:
- raise ConfigError("Couldn't read 'wait_time' from 'blacklist'")
- try:
- self.i18ndir = config.get('i18n', 'dir')
- except ConfigParser.Error as e:
- raise ConfigError("Couldn't read 'dir' from 'i18n'")
+ core_cfg = config.get('general', 'core_cfg')
+ self.core = core.Core(core_cfg)
- try:
- logdir = config.get('log', 'dir')
- logfile = os.path.join(logdir, 'smtp.log')
except ConfigParser.Error as e:
- raise ConfigError("Couldn't read 'dir' from 'log'")
+ raise ConfigError("Configuration error: %s" % str(e))
+ except blacklist.ConfigError as e:
+ raise InternalError("Blacklist error: %s" % str(e))
+ except core.ConfigError as e:
+ raise InternalError("Core error: %s" % str(e))
- try:
- loglevel = config.get('log', 'level')
- except ConfigParser.Error as e:
- raise ConfigurationError("Couldn't read 'level' from 'log'")
+ # logging
+ log = logging.getLogger(__name__)
- # use default values
- self.core = core.Core(core_cfg)
+ logging_format = utils.get_logging_format()
+ date_format = utils.get_date_format()
+ formatter = logging.Formatter(logging_format, date_format)
- # establish log level and redirect to log file
- log.info('Redirecting logging to %s' % logfile)
+ log.info('Redirecting SMTP logging to %s' % logfile)
logfileh = logging.FileHandler(logfile, mode='a+')
+ logfileh.setFormatter(formatter)
logfileh.setLevel(logging.getLevelName(loglevel))
log.addHandler(logfileh)
# stop logging on stdout from now on
log.propagate = False
+ self.log = log
def _is_blacklisted(self, addr):
"""Check if a user is blacklisted.
@@ -148,8 +137,9 @@ class SMTP(object):
"""
try:
- self.bl.is_blacklisted(addr, 'SMTP', self.bl_max_req,
- self.bl_wait_time)
+ self.bl.is_blacklisted(
+ addr, 'SMTP', self.bl_max_req, self.bl_wait_time
+ )
return False
except blacklist.BlacklistError as e:
return True
@@ -228,11 +218,14 @@ class SMTP(object):
"""
# obtain the content in the proper language
- t = gettext.translation(lc, self.i18ndir, languages=[lc])
- _ = t.ugettext
+ try:
+ t = gettext.translation(lc, self.i18ndir, languages=[lc])
+ _ = t.ugettext
- msgstr = _(msgid)
- return msgstr
+ msgstr = _(msgid)
+ return msgstr
+ except IOError as e:
+ raise ConfigError("%s" % str(e))
def _parse_email(self, msg, addr):
"""Parse the email received.
@@ -270,17 +263,23 @@ class SMTP(object):
# core knows what OS are supported
supported_os = self.core.get_supported_os()
- # if no OS is found, help request by default
- found_os = False
+ # search for OS or mirrors request
+ # if nothing is found, help by default
+ found_request = False
lines = msg.split(' ')
for word in lines:
- if not found_os:
+ if not found_request:
+ # OS first
for os in supported_os:
if re.match(os, word, re.IGNORECASE):
req['os'] = os
req['type'] = 'links'
- found_os = True
+ found_request = True
break
+ # mirrors
+ if re.match("mirrors?", word, re.IGNORECASE):
+ req['type'] = 'mirrors'
+ found_request = True
else:
break
return req
@@ -298,15 +297,18 @@ class SMTP(object):
:return: (object) the email object.
"""
- email_obj = MIMEText(msg)
+ email_obj = MIMEMultipart()
email_obj.set_charset("utf-8")
email_obj['Subject'] = subject
email_obj['From'] = from_addr
email_obj['To'] = to_addr
+ msg_attach = MIMEText(msg, 'text')
+ email_obj.attach(msg_attach)
+
return email_obj
- def _send_email(self, from_addr, to_addr, subject, msg):
+ def _send_email(self, from_addr, to_addr, subject, msg, attach=None):
"""Send an email.
Take a 'from' and 'to' addresses, a subject and the content, creates
@@ -316,10 +318,27 @@ class SMTP(object):
:param: to_addr (string) the address of the recipient.
:param: subject (string) the subject of the email.
:param: msg (string) the content of the email.
+ :param: attach (string) the path of the mirrors list.
"""
email_obj = self._create_email(from_addr, to_addr, subject, msg)
+ if(attach):
+ # for now, the only email with attachment is the one for mirrors
+ try:
+ part = MIMEBase('application', "octet-stream")
+ part.set_payload(open(attach, "rb").read())
+ Encoders.encode_base64(part)
+
+ part.add_header(
+ 'Content-Disposition',
+ 'attachment; filename="mirrors.txt"'
+ )
+
+ email_obj.attach(part)
+ except IOError as e:
+ raise SendEmailError('Error with mirrors: %s' % str(e))
+
try:
s = smtplib.SMTP("localhost")
s.sendmail(from_addr, to_addr, email_obj.as_string())
@@ -341,17 +360,25 @@ class SMTP(object):
"""
# obtain the content in the proper language and send it
- links_subject = self._get_msg('links_subject', lc)
- links_msg = self._get_msg('links_msg', lc)
- links_msg = links_msg % (os, lc, links)
-
try:
- self._send_email(from_addr, to_addr, links_subject, links_msg)
+ links_subject = self._get_msg('links_subject', lc)
+ links_msg = self._get_msg('links_msg', lc)
+ links_msg = links_msg % (os, lc, links)
+
+ self._send_email(
+ from_addr,
+ to_addr,
+ links_subject,
+ links_msg,
+ None
+ )
+ except ConfigError as e:
+ raise InternalError("Error while getting message %s" % str(e))
except SendEmailError as e:
raise InternalError("Error while sending links message")
- def _send_help(self, lc, from_addr, to_addr):
- """Send help message.
+ def _send_mirrors(self, lc, from_addr, to_addr):
+ """Send mirrors message.
Get the message in the proper language (according to the locale),
replace variables (if any) and send the email.
@@ -362,37 +389,39 @@ class SMTP(object):
"""
# obtain the content in the proper language and send it
- help_subject = self._get_msg('help_subject', lc)
- help_msg = self._get_msg('help_msg', lc)
-
try:
- self._send_email(from_addr, to_addr, help_subject, help_msg)
+ mirrors_subject = self._get_msg('mirrors_subject', lc)
+ mirrors_msg = self._get_msg('mirrors_msg', lc)
+
+ self._send_email(
+ from_addr, to_addr, mirrors_subject, mirrors_msg, self.mirrors
+ )
+ except ConfigError as e:
+ raise InternalError("Error while getting message %s" % str(e))
except SendEmailError as e:
- raise InternalError("Error while sending help message")
+ raise InternalError("Error while sending mirrors message")
- def _send_unsupported_lc(self, lc, os, from_addr, to_addr):
- """Send unsupported locale message.
+ def _send_help(self, lc, from_addr, to_addr):
+ """Send help message.
- Get the message for unsupported locale in english, replace variables
- (if any) and send the email.
+ Get the message in the proper language (according to the locale),
+ replace variables (if any) and send the email.
:param: lc (string) the locale.
- :param: os (string) the operating system.
:param: from_addr (string) the address of the sender.
:param: to_addr (string) the address of the recipient.
"""
-
- # obtain the content in english and send it
- un_lc_subject = self._get_msg('unsupported_lc_subject', 'en')
- un_lc_msg = self._get_msg('unsupported_lc_msg', 'en')
- un_lc_msg = un_lc_msg % lc
-
+ # obtain the content in the proper language and send it
try:
- self._send_email(from_addr, to_addr, un_lc_subject, un_lc_msg)
+ help_subject = self._get_msg('help_subject', lc)
+ help_msg = self._get_msg('help_msg', lc)
+ self._send_email(from_addr, to_addr, help_subject, help_msg, None)
+ except ConfigError as e:
+ raise InternalError("Error while getting message %s" % str(e))
except SendEmailError as e:
- raise InternalError("Error while sending unsupported lc message")
+ raise InternalError("Error while sending help message")
def process_email(self, raw_msg):
"""Process the email received.
@@ -411,6 +440,7 @@ class SMTP(object):
links to the Core module.
"""
+ self.log.debug("Processing email")
parsed_msg = email.message_from_string(raw_msg)
content = self._get_content(parsed_msg)
from_addr = parsed_msg['From']
@@ -423,71 +453,96 @@ class SMTP(object):
# two ways for a request to be bogus: address malformed or
# blacklisted
try:
+ self.log.debug("Normalizing address...")
norm_from_addr = self._get_normalized_address(from_addr)
except AddressError as e:
status = 'malformed'
bogus_request = True
+ self.log.debug("Address is malformed!")
# it might be interesting to know what triggered this
# we are not logging this for now
# logfile = self._log_email('malformed', content)
if norm_from_addr:
+ self.log.debug("Anonymizing address...")
anon_addr = utils.get_sha256(norm_from_addr)
if self._is_blacklisted(anon_addr):
status = 'blacklisted'
bogus_request = True
+ self.log.debug("Address is blacklisted!")
# it might be interesting to know extra info
# we are not logging this for now
# logfile = self._log_email(anon_addr, content)
if not bogus_request:
# try to figure out what the user is asking
+ self.log.debug("Request seems legit; parsing it...")
req = self._parse_email(content, to_addr)
# our address should have the locale requested
our_addr = "gettor+%s@%s" % (req['lc'], self.our_domain)
+ self.log.debug("Replying from %s" % our_addr)
- # two possible options: asking for help or for the links
+ # possible options: help, links, mirrors
if req['type'] == 'help':
+ self.log.debug("Type of request: help")
+ self.log.debug("Trying to send help...")
# make sure we can send emails
try:
self._send_help(req['lc'], our_addr, norm_from_addr)
+ status = 'success'
except SendEmailError as e:
status = 'internal_error'
+ self.log.debug("FAILED: %s" % str(e))
raise InternalError("Something's wrong with the SMTP "
"server: %s" % str(e))
- elif req['type'] == 'links':
+ elif req['type'] == 'mirrors':
+ self.log.debug("Type of request: mirrors")
+ self.log.debug("Trying to send the mirrors...")
+ # make sure we can send emails
try:
- links = self.core.get_links('SMTP', req['os'],
- req['lc'])
-
- except core.UnsupportedLocaleError as e:
- # if we got here, the address of the sender should
- # be valid so we send him/her a message about the
- # unsupported locale
- status = 'unsupported_lc'
- self._send_unsupported_lc(req['lc'], req['os'],
- our_addr, norm_from_addr)
- return
+ self._send_mirrors(req['lc'], our_addr, norm_from_addr)
+ status = 'success'
+ except SendEmailError as e:
+ status = 'internal_error'
+ self.log.debug("FAILED: %s" % str(e))
+ raise SendEmailError("Something's wrong with the SMTP "
+ "server: %s" % str(e))
+ elif req['type'] == 'links':
+ self.log.debug("Type of request: links")
+ self.log.debug("Trying to obtain the links...")
+ try:
+ links = self.core.get_links(
+ 'SMTP', req['os'], req['lc']
+ )
# if core fails, we fail too
except (core.InternalError, core.ConfigurationError) as e:
status = 'core_error'
+ self.log.debug("FAILED: %s" % str(e))
# something went wrong with the core
raise InternalError("Error obtaining the links")
# make sure we can send emails
+ self.log.debug("Trying to send the links...")
try:
self._send_links(links, req['lc'], req['os'], our_addr,
norm_from_addr)
+ status = 'success'
except SendEmailError as e:
status = 'internal_error'
+ self.log.debug("FAILED: %s" % str(e))
raise SendEmailError("Something's wrong with the SMTP "
"server: %s" % str(e))
- status = 'success'
+ self.log.debug("Mail sent!")
finally:
# keep stats
if req:
- self.core.add_request_to_db()
+ self.log.debug("Adding request to database... ")
+ try:
+ self.core.add_request_to_db()
+ self.log.debug("Request added")
+ except InternalError as e:
+ self.log.debug("FAILED: %s" % str(e))
diff --git a/lang/smtp/i18n/en/LC_MESSAGES/en.po b/lang/smtp/i18n/en/LC_MESSAGES/en.po
index 906dbb8..dcb2e35 100644
--- a/lang/smtp/i18n/en/LC_MESSAGES/en.po
+++ b/lang/smtp/i18n/en/LC_MESSAGES/en.po
@@ -4,6 +4,10 @@ domain "en"
msgid "links_subject"
msgstr "[GetTor] Links for your request"
+#: Mirrors subject
+msgid "mirrors_subject"
+msgstr "[GetTor] Mirrors"
+
#: Help subject
msgid "help_subject"
msgstr "[GetTor] Help"
@@ -32,6 +36,21 @@ network, or need to talk to a human, please contact our support team at:\n\
We are ready to answer your queries in English, Farsi, Chinese, Arabic,\n\
French and Spanish."
+#: Mirrors message
+msgid "mirrors_msg"
+msgstr "Hello there! this is the 'GetTor' robot.\n\
+\n\
+Thank you for your request. Attached to this email you will find\n\
+an updated list of mirrors of Tor Project's website.\n\
+\n\
+Still need help? If you have any questions, trouble connecting to Tor\n\
+network, or need to talk to a human, please contact our support team at:\n\
+\n\
+ help@xxxxxxxxxxxxxxxxx\n\
+\n\
+We are ready to answer your queries in English, Farsi, Chinese, Arabic,\n\
+French and Spanish."
+
#: Help message
msgid "help_msg"
msgstr "Hello there! this is the 'GetTor' robot.\n\
diff --git a/mirrors-list.txt b/mirrors-list.txt
new file mode 100644
index 0000000..311a3a5
--- /dev/null
+++ b/mirrors-list.txt
@@ -0,0 +1,58 @@
+https://tor-mirror.de/ - by tor-mirror.de (Germany)
+https://tor.blingblingsquad.net/ - by [[:bbs:]] (Germany)
+https://tor.li/ - by Tor Supporter (Estonia)
+https://tormirror.tb-itf-tor.de - by TB-ITF (Germany)
+https://tormirror.piratenpartei-bayern.de - by Piratenpartei Bayern (Germany)
+https://tor.hoi-polloi.org/ - by Tor Supporter (Germany)
+https://tor.fodt.it - by FoDT.it (Austria)
+https://tor.zilog.es/ - by Tor Supporter (Spain)
+https://199.175.55.215/ - by Tor Supporter (United States)
+https://2607:8b00:2::6258:5c9/ - by Tor Supporter (United States)
+https://tor.spline.inf.fu-berlin.de/ - by spline (Germany)
+https://fbnaia.homelinux.net/torproject/ - by Tor Supporter (Mexico)
+https://mirror.unicorncloud.org/torproject.org/ - by UnicornCloud.org (Germany)
+https://tor.hackthissite.org/ - by HackThisSite.org (United States)
+https://tor.crazyhaze.de/ - by crazyhaze.de (Germany)
+https://creep.im/tor - by Soviet Anonymous (Russia)
+https://www.torservers.net/mirrors/torproject.org/ - by torservers (Germany)
+https://mirror.torland.me/torproject.org/ - by torland (United Kingdom)
+https://tor.myrl.net/ - by myRL.net (Iceland)
+https://torprojekt.userzap.de - by Userzap (Germany)
+https://tor.stalkr.net/ - by stalkr.net (France)
+https://tor-mirror.cyberguerrilla.org - by cYbergueRrilLa AnonyMous NeXus (Germany)
+https://torproject.gtor.org/ - by Gtor (Germany)
+https://torproject.nexiom.net - by SDL (United States)
+https://mirror.velcommuta.de/tor/ - by Tor Supporter (Germany)
+https://tor.eff.org - by EFF (United States)
+https://tor.void.gr - by Tor Supporter (Greece)
+https://reichster.de/mirrors/torproject.org - by Tor Supporter (Germany)
+https://tor.miglix.eu - by Tor Supporter (Germany)
+https://tor.fr33tux.org - by Tor Supporter (France)
+https://tor.iv.net.pl - by Sebastian M. Bobrecki (Poland)
+https://tor.static.lu - by d0wn.biz (France)
+https://www.moparisthebest.com/tor/ - by moparisthebest.com (Germany)
+https://ayo.tl/tor/ - by Tor Supporter (Iceland)
+https://tor.pajonzeck.de/ - by ITsn (Germany)
+https://tor.ludikovsky.name/ - by Tor Supporter (Austria)
+https://tor.nuclear-weapons.net - by Setec Administrator (Texas)
+https://tor.calyxinstitute.org - by The Calyx Institute (United States)
+https://mirror2.babylon.network/torproject/ - by Babylon Network (The Netherlands)
+https://mirror0.babylon.network/torproject/ - by Babylon Network (France)
+https://mirror1.babylon.network/torproject/ - by Babylon Network (France)
+https://tor.ybti.net/ - by Tor Supporter (Germany)
+https://tor.0x3d.lu/ - by 0x3d.lu (Germany)
+https://www.unicorncloud.org/public/torproject.org/ - by UnicornCloud.org (Favoriten)
+https://108.248.87.242/ - by intfxdx.com (United States)
+https://mirrors.samwhited.net/tor - by SamWhited.com (GA)
+https://www.jessevictors.com/secureMirrors/torproject.org/ - by Department of CS at USU (United States)
+https://mirror.ntzk.de/torproject.org/ - by Netzkonstrukt Berlin (Germany)
+https://www.eprci.com/tor/ - by EPRCI (NH)
+https://tor-mirror.kura.io/ - by KURA IO LIMITED (Netherlands)
+https://www.it-sicherheitschannel.de/ - by PW (Germany)
+https://tor.freedom.press - by Freedom of the Press Foundation (US)
+https://tor.hoovism.com/ - by Matthew Hoover (NJ)
+https://torproject.urown.net/ - by urown.net (Switzerland)
+https://sela.io/mirrors/torproject.org/ - by sela Internet (Germany)
+https://services.justaguy.pw/ - by Justaguy (The Netherlands)
+https://tor.thecthulhu.com/ - by TheCthulhu (The Netherlands)
+https://tor.ccc.de - by CCC (The Netherlands)
diff --git a/smtp.cfg b/smtp.cfg
index 671c090..a7e9f7a 100644
--- a/smtp.cfg
+++ b/smtp.cfg
@@ -1,5 +1,6 @@
[general]
basedir: /path/to/gettor/smtp
+mirrors: /path/to/mirrors
our_domain: torproject.org
core_cfg: /path/to/core.cfg
@@ -13,4 +14,4 @@ dir: /path/to/i18n/
[log]
level: DEBUG
-dir: /path/to/log/
\ No newline at end of file
+dir: /path/to/log/
diff --git a/tor-mirrors b/tor-mirrors
new file mode 100644
index 0000000..5dbd421
--- /dev/null
+++ b/tor-mirrors
@@ -0,0 +1,2187 @@
+[
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.loritsu.com/dist/",
+ "httpWebsiteMirror": "http://tor.loritsu.com/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "US",
+ "loadBalanced": "No",
+ "orgName": "Tor Supporter",
+ "region": "US",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "United States",
+ "updateDate\n": ""
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://torproject.adamas.ai/dist/",
+ "httpWebsiteMirror": "http://torproject.adamas.ai/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "LU",
+ "loadBalanced": "No",
+ "orgName": "Tor Supporter",
+ "region": "LU",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Luxemborg",
+ "updateDate\n": ""
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://torua.reactor-xg.kiev.ua/dist/",
+ "httpWebsiteMirror": "http://torua.reactor-xg.kiev.ua/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "UA",
+ "loadBalanced": "No",
+ "orgName": "Tor Supporter",
+ "region": "UA",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Ukraine",
+ "updateDate\n": ""
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://37.187.0.127/tormirror/dist/",
+ "httpWebsiteMirror": "http://37.187.0.127/tormirror/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "FR",
+ "loadBalanced": "No",
+ "orgName": "Tor Supporter",
+ "region": "FR",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "France",
+ "updateDate\n": ""
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.minibofh.org/dist/",
+ "httpWebsiteMirror": "http://tor.minibofh.org/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "US",
+ "loadBalanced": "No",
+ "orgName": "Tor Supporter",
+ "region": "US",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "United States",
+ "updateDate\n": ""
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.mage.me.uk/dist/",
+ "httpWebsiteMirror": "http://tor.mage.me.uk/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "UK",
+ "loadBalanced": "No",
+ "orgName": "Tor Supporter",
+ "region": "UK",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "United Kingdom",
+ "updateDate\n": ""
+ },
+ {
+ "adminContact": "nsane2307 eml cc",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor-mirror.de/dist/",
+ "httpWebsiteMirror": "http://tor-mirror.de/",
+ "httpsDistMirror": "https://tor-mirror.de/dist/",
+ "httpsWebsiteMirror": "https://tor-mirror.de/",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "DE",
+ "loadBalanced": "No",
+ "orgName": "tor-mirror.de",
+ "region": "Europe",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Germany",
+ "updateDate\n": ""
+ },
+ {
+ "adminContact": "citizen428 AT gmail DOT com",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.blingblingsquad.net/dist/",
+ "httpWebsiteMirror": "http://tor.blingblingsquad.net/",
+ "httpsDistMirror": "https://tor.blingblingsquad.net/dist/",
+ "httpsWebsiteMirror": "https://tor.blingblingsquad.net/",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "DE",
+ "loadBalanced": "No",
+ "orgName": "[[:bbs:]]",
+ "region": "Europe",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Germany",
+ "updateDate\n": ""
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://torproject.nwlinux.us/dist/",
+ "httpWebsiteMirror": "http://torproject.nwlinux.us/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "US",
+ "loadBalanced": "No",
+ "orgName": "NW Linux",
+ "region": "US",
+ "rsyncDistMirror": "rsync://nwlinux.us/tor-dist",
+ "rsyncWebsiteMirror": "rsync://nwlinux.us/tor-web",
+ "subRegion": "WA",
+ "updateDate\n": ""
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "",
+ "httpWebsiteMirror": "",
+ "httpsDistMirror": "https://www.coevoet.nl/tor/dist/",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "NL",
+ "loadBalanced": "No",
+ "orgName": "Tor Supporter",
+ "region": "NL",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "The Netherlands",
+ "updateDate\n": ""
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.taiga-san.net/dist/",
+ "httpWebsiteMirror": "http://tor.taiga-san.net/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "FR",
+ "loadBalanced": "No",
+ "orgName": "LazyTiger",
+ "region": "FR",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "France",
+ "updateDate\n": ""
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.li/dist/",
+ "httpWebsiteMirror": "http://tor.li/",
+ "httpsDistMirror": "https://tor.li/dist/",
+ "httpsWebsiteMirror": "https://tor.li/",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "EE",
+ "loadBalanced": "No",
+ "orgName": "Tor Supporter",
+ "region": "EE",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Estonia",
+ "updateDate\n": ""
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.externenpr\u00fcfung-nichtsch\u00fcler.de/dist/",
+ "httpWebsiteMirror": "http://tor.externenpr\u00fcfung-nichtsch\u00fcler.de/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "DE",
+ "loadBalanced": "NO",
+ "orgName": "Tor Supporter",
+ "region": "DE",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Germany",
+ "updateDate\n": ""
+ },
+ {
+ "adminContact": "mirror-service@xxxxxxxxxxxxx",
+ "ftpWebsiteMirror": "ftp://mirror.netcologne.de/torproject.org/",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://mirror.netcologne.de/torproject.org/dist",
+ "httpWebsiteMirror": "http://mirror.netcologne.de/torproject.org",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "DE",
+ "loadBalanced": "No",
+ "orgName": "NetCologne GmbH",
+ "region": "",
+ "rsyncDistMirror": "rsync://mirror.netcologne.de/torproject.org/dist",
+ "rsyncWebsiteMirror": "rsync://mirror.netcologne.de/torproject.org",
+ "subRegion": "NRW",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "admin AT netgull DOT com",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://www.netgull.com/torproject/",
+ "httpWebsiteMirror": "",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "US",
+ "loadBalanced": "No",
+ "orgName": "NetGull",
+ "region": "North America",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "United States",
+ "updateDate\n": ""
+ },
+ {
+ "adminContact": "mirrors[at]ip-connect[dot]vn[dot]ua",
+ "ftpWebsiteMirror": "ftp://torproject.ip-connect.vn.ua/mirror/torproject/",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://torproject.ip-connect.vn.ua/dist",
+ "httpWebsiteMirror": "http://torproject.ip-connect.vn.ua",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "UA",
+ "loadBalanced": "Yes",
+ "orgName": "IP-Connect LLC",
+ "region": "",
+ "rsyncDistMirror": "rsync://torproject.ip-connect.vn.ua/torproject/dist",
+ "rsyncWebsiteMirror": "rsync://torproject.ip-connect.vn.ua/torproject",
+ "subRegion": "VN",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "torsupport AT tb-itf DOT de",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tormirror.tb-itf-tor.de/dist/",
+ "httpWebsiteMirror": "http://tormirror.tb-itf-tor.de",
+ "httpsDistMirror": "https://tormirror.tb-itf-tor.de/dist/",
+ "httpsWebsiteMirror": "https://tormirror.tb-itf-tor.de",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "DE",
+ "loadBalanced": "No",
+ "orgName": "TB-ITF",
+ "region": "Europe",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Germany",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "admin at koreswatanabe dottnet",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor-relay.koreswatanabe.net/dist/",
+ "httpWebsiteMirror": "http://tor-relay.koreswatanabe.net",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "RO",
+ "loadBalanced": "No",
+ "orgName": "Tor Supporter",
+ "region": "RO",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Romania",
+ "updateDate\n": ""
+ },
+ {
+ "adminContact": "calebcenter@xxxxxxxx",
+ "ftpWebsiteMirror": "ftp://ftp.calebxu.tk",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.calebxu.tk/dist",
+ "httpWebsiteMirror": "http://tor.calebxu.tk",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "US",
+ "loadBalanced": "NO",
+ "orgName": "calebxu.tk",
+ "region": "US",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "rsync://calebxu.tk/tor",
+ "subRegion": "United States",
+ "updateDate\n": ""
+ },
+ {
+ "adminContact": "maki@xxxxxxxxxxxx",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.mirrors.maki-chan.de/dist/",
+ "httpWebsiteMirror": "http://tor.mirrors.maki-chan.de/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "DE",
+ "loadBalanced": "NO",
+ "orgName": "Maki Hoshisawa",
+ "region": "DE",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Germany",
+ "updateDate\n": "Sat Aug 23 08:09:07 2014"
+ },
+ {
+ "adminContact": "info AT zentrum-der-gesundheit DOT de",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.idnr.ws/dist/",
+ "httpWebsiteMirror": "http://tor.idnr.ws/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "DK",
+ "loadBalanced": "No",
+ "orgName": "Zentrum der Gesundheit",
+ "region": "Europe",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Denmark",
+ "updateDate\n": "Tue Sep 2 11:16:00 2014"
+ },
+ {
+ "adminContact": "info /AT enn /DOT lu",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "http://btn6gqzqevlhoryd.onion",
+ "httpDistMirror": "http://torproject.lu/dist/",
+ "httpWebsiteMirror": "http://torproject.lu/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "IS",
+ "loadBalanced": "No",
+ "orgName": "Frenn vun der Enn A.S.B.L.",
+ "region": "Europe",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Iceland",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "Piratenpartei Bayern",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tormirror.piratenpartei-bayern.de/dist/",
+ "httpWebsiteMirror": "http://tormirror.piratenpartei-bayern.de",
+ "httpsDistMirror": "https://tormirror.piratenpartei-bayern.de/dist/",
+ "httpsWebsiteMirror": "https://tormirror.piratenpartei-bayern.de",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "DE",
+ "loadBalanced": "NO",
+ "orgName": "Piratenpartei Bayern",
+ "region": "DE",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Germany",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.hoi-polloi.org/dist/",
+ "httpWebsiteMirror": "http://tor.hoi-polloi.org",
+ "httpsDistMirror": "https://tor.hoi-polloi.org/dist/",
+ "httpsWebsiteMirror": "https://tor.hoi-polloi.org/",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "DE",
+ "loadBalanced": "NO",
+ "orgName": "Tor Supporter",
+ "region": "DE",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Germany",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "tor@xxxxxxx // FoDT.it Webteam",
+ "ftpWebsiteMirror": "ftp://ftp.fodt.it/pub/mirrors/torproject.org/",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.fodt.it/dist/",
+ "httpWebsiteMirror": "http://tor.fodt.it",
+ "httpsDistMirror": "https://tor.fodt.it/dist/",
+ "httpsWebsiteMirror": "https://tor.fodt.it",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "AT",
+ "loadBalanced": "No",
+ "orgName": "FoDT.it",
+ "region": "Europe",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Austria",
+ "updateDate\n": "Mon Aug 25 10:19:07 2014"
+ },
+ {
+ "adminContact": "http://www.multinet.no",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.multinet.no/dist/",
+ "httpWebsiteMirror": "http://tor.multinet.no/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "NO",
+ "loadBalanced": "No",
+ "orgName": "MultiNet AS",
+ "region": "Trondheim",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Trondheim",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "haskell at gmx.es",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.zilog.es/dist/",
+ "httpWebsiteMirror": "http://tor.zilog.es/",
+ "httpsDistMirror": "https://tor.zilog.es/dist/",
+ "httpsWebsiteMirror": "https://tor.zilog.es/",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "ES",
+ "loadBalanced": "No",
+ "orgName": "Tor Supporter",
+ "region": "Europe",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Spain",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://199.175.55.215/dist/",
+ "httpWebsiteMirror": "http://199.175.55.215/",
+ "httpsDistMirror": "https://199.175.55.215/dist/",
+ "httpsWebsiteMirror": "https://199.175.55.215/",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "US",
+ "loadBalanced": "No",
+ "orgName": "Tor Supporter",
+ "region": "US",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "United States",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://2607:8b00:2::6258:5c9/dist/",
+ "httpWebsiteMirror": "http://2607:8b00:2::6258:5c9/",
+ "httpsDistMirror": "https://2607:8b00:2::6258:5c9/dist/",
+ "httpsWebsiteMirror": "https://2607:8b00:2::6258:5c9/",
+ "ipv4": "FALSE",
+ "ipv6": "TRUE",
+ "isoCC": "US",
+ "loadBalanced": "No",
+ "orgName": "Tor Supporter",
+ "region": "US",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "United States",
+ "updateDate\n": "Tue Jan 20 16:17:52 2015"
+ },
+ {
+ "adminContact": "margus.random at mail.ee",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://cyberside.net.ee/tor/",
+ "httpWebsiteMirror": "http://cyberside.planet.ee/tor/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "EE",
+ "loadBalanced": "No",
+ "orgName": "CyberSIDE",
+ "region": "EE",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Estonia",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://www.torproject.is/dist/",
+ "httpWebsiteMirror": "http://www.torproject.is/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "IS",
+ "loadBalanced": "No",
+ "orgName": "torproject.is",
+ "region": "IS",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Iceland",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "ftp://ftp.spline.de/pub/tor",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.spline.de/dist/",
+ "httpWebsiteMirror": "http://tor.spline.de/",
+ "httpsDistMirror": "https://tor.spline.inf.fu-berlin.de/dist/",
+ "httpsWebsiteMirror": "https://tor.spline.inf.fu-berlin.de/",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "DE",
+ "loadBalanced": "No",
+ "orgName": "spline",
+ "region": "DE",
+ "rsyncDistMirror": "rsync://ftp.spline.de/tor/dist",
+ "rsyncWebsiteMirror": "rsync://ftp.spline.de/tor",
+ "subRegion": "Germany",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.me0w.cc/dist/",
+ "httpWebsiteMirror": "http://tor.me0w.cc/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "RO",
+ "loadBalanced": "No",
+ "orgName": "me0w.cc",
+ "region": "RO",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Romania",
+ "updateDate\n": "Thu Jan 1 16:17:56 2015"
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.borgmann.tv/dist/",
+ "httpWebsiteMirror": "http://tor.borgmann.tv/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "DE",
+ "loadBalanced": "No",
+ "orgName": "borgmann.tv",
+ "region": "DE",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Germany",
+ "updateDate\n": "Sun Jul 12 19:04:44 2015"
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.dont-know-me.at/dist/",
+ "httpWebsiteMirror": "http://tor.dont-know-me.at/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "AT",
+ "loadBalanced": "No",
+ "orgName": "Tor Supporter",
+ "region": "AT",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Austria",
+ "updateDate\n": "Tue Jan 20 16:17:52 2015"
+ },
+ {
+ "adminContact": "coralcdn.org",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://www.torproject.org.nyud.net/dist/",
+ "httpWebsiteMirror": "http://www.torproject.org.nyud.net/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "INT",
+ "loadBalanced": "Yes",
+ "orgName": "CoralCDN",
+ "region": "INT",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "International",
+ "updateDate\n": "Thu Jan 8 02:01:06 2015"
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://torproject.ph3x.at/dist/",
+ "httpWebsiteMirror": "http://torproject.ph3x.at/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "AT",
+ "loadBalanced": "No",
+ "orgName": "Tor Supporter",
+ "region": "AT",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Austria",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://fbnaia.homelinux.net/torproject/dist/",
+ "httpWebsiteMirror": "http://fbnaia.homelinux.net/torproject/",
+ "httpsDistMirror": "https://fbnaia.homelinux.net/torproject/dist/",
+ "httpsWebsiteMirror": "https://fbnaia.homelinux.net/torproject/",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "MX",
+ "loadBalanced": "No",
+ "orgName": "Tor Supporter",
+ "region": "MX",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Mexico",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "webmaster AT askapache DOT com",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.askapache.com/dist/",
+ "httpWebsiteMirror": "http://tor.askapache.com/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "US",
+ "loadBalanced": "No",
+ "orgName": "AskApache",
+ "region": "US",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "California",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.mirror.chekanov.net/dist/",
+ "httpWebsiteMirror": "http://tor.mirror.chekanov.net/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "FR",
+ "loadBalanced": "No",
+ "orgName": "Tor Supporter",
+ "region": "FR",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "France",
+ "updateDate\n": "Mon Mar 16 15:53:03 2015"
+ },
+ {
+ "adminContact": "kontakt AT unicorncloud DOT org",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://mirror.unicorncloud.org/torproject.org/dist",
+ "httpWebsiteMirror": "http://mirror.unicorncloud.org/torproject.org/",
+ "httpsDistMirror": "https://mirror.unicorncloud.org/torproject.org/dist",
+ "httpsWebsiteMirror": "https://mirror.unicorncloud.org/torproject.org/",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "DE",
+ "loadBalanced": "No",
+ "orgName": "UnicornCloud.org",
+ "region": "Falkenstein",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Germany",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "root AT amorphis DOT eu",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.amorphis.eu/dist/",
+ "httpWebsiteMirror": "http://tor.amorphis.eu/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "NL",
+ "loadBalanced": "No",
+ "orgName": "Amorphis",
+ "region": "Europe",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "The Netherlands",
+ "updateDate\n": "Mon Mar 16 15:53:03 2015"
+ },
+ {
+ "adminContact": "hackthissite.org",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://mirror.hackthissite.org/tor",
+ "httpWebsiteMirror": "http://tor.hackthissite.org/",
+ "httpsDistMirror": "https://mirror.hackthissite.org/tor",
+ "httpsWebsiteMirror": "https://tor.hackthissite.org/",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "US",
+ "loadBalanced": "No",
+ "orgName": "HackThisSite.org",
+ "region": "US",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "United States",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "paul at coffswifi.net",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://torproject.coffswifi.net/dist",
+ "httpWebsiteMirror": "http://torproject.coffswifi.net",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "AU",
+ "loadBalanced": "No",
+ "orgName": "CoffsWiFi",
+ "region": "APNIC",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Australia and New Zealand",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "",
+ "httpWebsiteMirror": "http://tor.cyberarmy.at/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "AT",
+ "loadBalanced": "No",
+ "orgName": "cyberarmy",
+ "region": "AT",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Austria",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "hostmaster AT example DOT com",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://www.theonionrouter.com/dist/",
+ "httpWebsiteMirror": "http://www.theonionrouter.com/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "IS",
+ "loadBalanced": "No",
+ "orgName": "TheOnionRouter",
+ "region": "Iceland",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Iceland",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.crazyhaze.de/dist/",
+ "httpWebsiteMirror": "http://tor.crazyhaze.de/",
+ "httpsDistMirror": "https://tor.crazyhaze.de/dist/",
+ "httpsWebsiteMirror": "https://tor.crazyhaze.de/",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "DE",
+ "loadBalanced": "No",
+ "orgName": "crazyhaze.de",
+ "region": "DE",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Germany",
+ "updateDate\n": "Tue Jul 7 13:16:29 2015"
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://mirrors.chaos-darmstadt.de/tor-mirror/dist/",
+ "httpWebsiteMirror": "http://mirrors.chaos-darmstadt.de/tor-mirror/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "DE",
+ "loadBalanced": "No",
+ "orgName": "chaos darmstadt",
+ "region": "Europe",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Germany",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "ftp://creep.im/mirrors/tor",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://creep.im/tor/dist/",
+ "httpWebsiteMirror": "http://creep.im/tor",
+ "httpsDistMirror": "https://creep.im/tor/dist/",
+ "httpsWebsiteMirror": "https://creep.im/tor",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "RU",
+ "loadBalanced": "No",
+ "orgName": "Soviet Anonymous",
+ "region": "RU",
+ "rsyncDistMirror": "rsync://creep.im/tor-dist",
+ "rsyncWebsiteMirror": "rsync://creep.im/tor",
+ "subRegion": "Russia",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "http://hbpvnydyyjbmhx6b.onion/mirrors/torproject.org/",
+ "httpDistMirror": "http://www.torservers.net/mirrors/torproject.org/dist/",
+ "httpWebsiteMirror": "http://www.torservers.net/mirrors/torproject.org/",
+ "httpsDistMirror": "https://www.torservers.net/mirrors/torproject.org/dist/",
+ "httpsWebsiteMirror": "https://www.torservers.net/mirrors/torproject.org/",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "DE",
+ "loadBalanced": "No",
+ "orgName": "torservers",
+ "region": "DE",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Germany",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://mirror.torland.me/torproject.org/dist/",
+ "httpWebsiteMirror": "http://mirror.torland.me/torproject.org/",
+ "httpsDistMirror": "https://mirror.torland.me/torproject.org/dist/",
+ "httpsWebsiteMirror": "https://mirror.torland.me/torproject.org/",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "GB",
+ "loadBalanced": "No",
+ "orgName": "torland",
+ "region": "GB",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "United Kingdom",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://torproject.lightning-bolt.net/dist/",
+ "httpWebsiteMirror": "http://torproject.lightning-bolt.net/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "CZ",
+ "loadBalanced": "No",
+ "orgName": "Lightning-bolt.net",
+ "region": "CZ",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Czech Republic",
+ "updateDate\n": "Mon Mar 16 15:53:03 2015"
+ },
+ {
+ "adminContact": "IceBear",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.myrl.net/dist/",
+ "httpWebsiteMirror": "http://tor.myrl.net/",
+ "httpsDistMirror": "https://tor.myrl.net/dist/",
+ "httpsWebsiteMirror": "https://tor.myrl.net/",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "IS",
+ "loadBalanced": "No",
+ "orgName": "myRL.net",
+ "region": "IS",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Iceland",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "kiro AT userzap DOT de",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://torprojekt.userzap.de/dist/",
+ "httpWebsiteMirror": "http://torprojekt.userzap.de",
+ "httpsDistMirror": "https://torprojekt.userzap.de/dist/",
+ "httpsWebsiteMirror": "https://torprojekt.userzap.de",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "DE",
+ "loadBalanced": "No",
+ "orgName": "Userzap",
+ "region": "DE",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Germany",
+ "updateDate\n": "Tue Jan 20 16:17:52 2015"
+ },
+ {
+ "adminContact": "tor@xxxxxxx",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.les.net/dist",
+ "httpWebsiteMirror": "http://tor.les.net/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "CA",
+ "loadBalanced": "NO",
+ "orgName": "tor@xxxxxxx",
+ "region": "CA",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Canada",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "tor@xxxxxxxxxx",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.stalkr.net/dist/",
+ "httpWebsiteMirror": "http://tor.stalkr.net/",
+ "httpsDistMirror": "https://tor.stalkr.net/dist/",
+ "httpsWebsiteMirror": "https://tor.stalkr.net/",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "FR",
+ "loadBalanced": "NO",
+ "orgName": "stalkr.net",
+ "region": "FR",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "France",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "doemela[AT]cyberguerrilla[DOT]org",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "http://6dvj6v5imhny3anf.onion",
+ "httpDistMirror": "",
+ "httpWebsiteMirror": "",
+ "httpsDistMirror": "https://tor-mirror.cyberguerrilla.org/dist/",
+ "httpsWebsiteMirror": "https://tor-mirror.cyberguerrilla.org",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "DE",
+ "loadBalanced": "NO",
+ "orgName": "cYbergueRrilLa AnonyMous NeXus",
+ "region": "DE",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Germany",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "contact@xxxxxxxx",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://torproject.gtor.org/dist/",
+ "httpWebsiteMirror": "http://torproject.gtor.org/",
+ "httpsDistMirror": "https://torproject.gtor.org/dist/",
+ "httpsWebsiteMirror": "https://torproject.gtor.org/",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "DE",
+ "loadBalanced": "NO",
+ "orgName": "Gtor",
+ "region": "DE",
+ "rsyncDistMirror": "rsync://torproject.gtor.org/website-mirror/dist/",
+ "rsyncWebsiteMirror": "rsync://torproject.gtor.org/website-mirror/",
+ "subRegion": "Germany",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "SDL",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://torproject.nexiom.net",
+ "httpWebsiteMirror": "http://torproject.nexiom.net",
+ "httpsDistMirror": "https://torproject.nexiom.net/dist",
+ "httpsWebsiteMirror": "https://torproject.nexiom.net",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "US",
+ "loadBalanced": "NO",
+ "orgName": "SDL",
+ "region": "US",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "United States",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://mirror.velcommuta.de/tor/dist/",
+ "httpWebsiteMirror": "http://mirror.velcommuta.de/tor/",
+ "httpsDistMirror": "https://mirror.velcommuta.de/tor/dist/",
+ "httpsWebsiteMirror": "https://mirror.velcommuta.de/tor/",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "DE",
+ "loadBalanced": "NO",
+ "orgName": "Tor Supporter",
+ "region": "DE",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Germany",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "EFF",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "",
+ "httpWebsiteMirror": "",
+ "httpsDistMirror": "https://tor.eff.org/dist/",
+ "httpsWebsiteMirror": "https://tor.eff.org",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "US",
+ "loadBalanced": "NO",
+ "orgName": "EFF",
+ "region": "US",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "United States",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.void.gr/dist/",
+ "httpWebsiteMirror": "http://tor.void.gr",
+ "httpsDistMirror": "https://tor.void.gr/dist/",
+ "httpsWebsiteMirror": "https://tor.void.gr",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "GR",
+ "loadBalanced": "NO",
+ "orgName": "Tor Supporter",
+ "region": "GR",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Greece",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "Ich Eben",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://reichster.de/mirrors/torproject.org/dist/",
+ "httpWebsiteMirror": "http://reichster.de/mirrors/torproject.org/",
+ "httpsDistMirror": "https://reichster.de/mirrors/torproject.org/dist/",
+ "httpsWebsiteMirror": "https://reichster.de/mirrors/torproject.org",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "DE",
+ "loadBalanced": "No",
+ "orgName": "Tor Supporter",
+ "region": "DE",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Germany",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "jlgaddis AT gnu DOT org",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor1.evilrouters.net/dist/",
+ "httpWebsiteMirror": "http://tor1.evilrouters.net/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "US",
+ "loadBalanced": "No",
+ "orgName": "Evil Routers",
+ "region": "US",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "United States",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "tor AT miglix DOT eu",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.miglix.eu/dist/",
+ "httpWebsiteMirror": "http://tor.miglix.eu",
+ "httpsDistMirror": "https://tor.miglix.eu/dist/",
+ "httpsWebsiteMirror": "https://tor.miglix.eu",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "DE",
+ "loadBalanced": "NO",
+ "orgName": "Tor Supporter",
+ "region": "Europe",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Germany",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "tor TA ninurta TOD name",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.ninurta.name/dist/",
+ "httpWebsiteMirror": "http://tor.ninurta.name/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "AT",
+ "loadBalanced": "no",
+ "orgName": "TorNinurtaName",
+ "region": "AT",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Austria",
+ "updateDate\n": "Wed Oct 22 15:02:17 2014"
+ },
+ {
+ "adminContact": "fr33tux <AT> general-changelog-team.fr",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.fr33tux.org/dist/",
+ "httpWebsiteMirror": "http://tor.fr33tux.org",
+ "httpsDistMirror": "https://tor.fr33tux.org/dist/",
+ "httpsWebsiteMirror": "https://tor.fr33tux.org",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "FR",
+ "loadBalanced": "No",
+ "orgName": "Tor Supporter",
+ "region": "FR",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "France",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "sebastian(at)bobrecki(dot)pl",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.iv.net.pl/dist/",
+ "httpWebsiteMirror": "http://tor.iv.net.pl",
+ "httpsDistMirror": "https://tor.iv.net.pl/dist/",
+ "httpsWebsiteMirror": "https://tor.iv.net.pl",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "PL",
+ "loadBalanced": "No",
+ "orgName": "Sebastian M. Bobrecki",
+ "region": "Europe",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Poland",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "tor-mirror AT rdns DOT cc",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.static.lu/dist/",
+ "httpWebsiteMirror": "http://tor.static.lu",
+ "httpsDistMirror": "https://tor.static.lu/dist/",
+ "httpsWebsiteMirror": "https://tor.static.lu",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "FR",
+ "loadBalanced": "No",
+ "orgName": "d0wn.biz",
+ "region": "Europe",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "France",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "tor@xxxxxxxxxxxxxxxxxx",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://www.moparisthebest.com/tor/dist/",
+ "httpWebsiteMirror": "http://www.moparisthebest.com/tor/",
+ "httpsDistMirror": "https://www.moparisthebest.com/tor/dist/",
+ "httpsWebsiteMirror": "https://www.moparisthebest.com/tor/",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "DE",
+ "loadBalanced": "No",
+ "orgName": "moparisthebest.com",
+ "region": "Europe",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Germany",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "Sebastian",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.maxanoo.com/dist/",
+ "httpWebsiteMirror": "http://tor.maxanoo.com/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "NL",
+ "loadBalanced": "NO",
+ "orgName": "Maxanoo",
+ "region": "Amsterdam",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "The Netherlands",
+ "updateDate\n": "Sun May 31 15:13:53 2015"
+ },
+ {
+ "adminContact": "rorrim AT ayo DOT tl",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://ayo.tl/tor/dist/",
+ "httpWebsiteMirror": "http://ayo.tl/tor/",
+ "httpsDistMirror": "https://ayo.tl/tor/dist/",
+ "httpsWebsiteMirror": "https://ayo.tl/tor/",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "IS",
+ "loadBalanced": "No",
+ "orgName": "Tor Supporter",
+ "region": "Europe",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Iceland",
+ "updateDate\n": "Tue Jan 20 16:17:52 2015"
+ },
+ {
+ "adminContact": "stefano.fenoglio AT gmail DOT com",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.stefanof.com/dist",
+ "httpWebsiteMirror": "http://tor.stefanof.com",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "IT",
+ "loadBalanced": "No",
+ "orgName": "Tor Supporter",
+ "region": "Europe",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Italy",
+ "updateDate\n": "Sun Jul 12 13:19:35 2015"
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.ramosresearch.com/dist/",
+ "httpWebsiteMirror": "http://tor.ramosresearch.com/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "US",
+ "loadBalanced": "No",
+ "orgName": "Ramos Research",
+ "region": "US",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "United States",
+ "updateDate\n": "Mon Mar 16 15:53:03 2015"
+ },
+ {
+ "adminContact": "Tor Fan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.euve33747.vserver.de/dist",
+ "httpWebsiteMirror": "http://tor.euve33747.vserver.de/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "DE",
+ "loadBalanced": "No",
+ "orgName": "Tor Supporter",
+ "region": "Europe",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Germany",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "s7r[at]sky-ip[d0t]org",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://beautiful-mind.sky-ip.org/dist/",
+ "httpWebsiteMirror": "http://beautiful-mind.sky-ip.org/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "NL",
+ "loadBalanced": "No",
+ "orgName": "sky-ip.org",
+ "region": "NL",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Netherlands",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "tor#pajonzeck#de",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "http://zgfgvob256pffy62.onion",
+ "httpDistMirror": "http://tor.pajonzeck.de/dist/",
+ "httpWebsiteMirror": "http://tor.pajonzeck.de/",
+ "httpsDistMirror": "https://tor.pajonzeck.de/dist/",
+ "httpsWebsiteMirror": "https://tor.pajonzeck.de/",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "DE",
+ "loadBalanced": "No",
+ "orgName": "ITsn",
+ "region": "Europe",
+ "rsyncDistMirror": "rsync://tor.pajonzeck.de/tor/dist",
+ "rsyncWebsiteMirror": "rsync://tor.pajonzeck.de/tor",
+ "subRegion": "Germany",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "peter AT ludikovsky DOT name",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "http://54lnbzjo6xlr4f4j.onion/",
+ "httpDistMirror": "http://tor.ludikovsky.name/dist",
+ "httpWebsiteMirror": "http://tor.ludikovsky.name/",
+ "httpsDistMirror": "https://tor.ludikovsky.name/dist",
+ "httpsWebsiteMirror": "https://tor.ludikovsky.name/",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "AT",
+ "loadBalanced": "No",
+ "orgName": "Tor Supporter",
+ "region": "Europe",
+ "rsyncDistMirror": "rsync://tor.ludikovsky.name/tor-dist",
+ "rsyncWebsiteMirror": "rsync://tor.ludikovsky.name/tor",
+ "subRegion": "Austria",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "admin AT nuclear DASH weapons DOT net",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.nuclear-weapons.net/dist",
+ "httpWebsiteMirror": "http://tor.nuclear-weapons.net",
+ "httpsDistMirror": "https://tor.nuclear-weapons.net/dist",
+ "httpsWebsiteMirror": "https://tor.nuclear-weapons.net",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "US",
+ "loadBalanced": "No",
+ "orgName": "Setec Administrator",
+ "region": "Austin",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Texas",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "0x43DE8191",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://torproject.hactar.bz/dist/",
+ "httpWebsiteMirror": "http://torproject.hactar.bz",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "DE",
+ "loadBalanced": "No",
+ "orgName": "Tor Supporter",
+ "region": "Europe",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Germany",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "-nick at calyx dot com",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "http://tmdrhl4e4anhsjc5.onion",
+ "httpDistMirror": "http://tor.calyxinstitute.org/dist/",
+ "httpWebsiteMirror": "http://tor.calyxinstitute.org",
+ "httpsDistMirror": "https://tor.calyxinstitute.org/dist/",
+ "httpsWebsiteMirror": "https://tor.calyxinstitute.org",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "US",
+ "loadBalanced": "No",
+ "orgName": "The Calyx Institute",
+ "region": "North America",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "United States",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "opi@xxxxxxxxxx",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor-mirror.zeropi.net/dist/",
+ "httpWebsiteMirror": "http://tor-mirror.zeropi.net/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "FR",
+ "loadBalanced": "No",
+ "orgName": "Tor Supporter",
+ "region": "FR",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "France",
+ "updateDate\n": "Mon Dec 1 12:15:20 2014"
+ },
+ {
+ "adminContact": "noc AT babylon DOT network",
+ "ftpWebsiteMirror": "ftp://mirror2.babylon.network/torproject/",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://mirror2.babylon.network/torproject/dist/",
+ "httpWebsiteMirror": "http://mirror2.babylon.network/torproject/",
+ "httpsDistMirror": "https://mirror2.babylon.network/torproject/dist/",
+ "httpsWebsiteMirror": "https://mirror2.babylon.network/torproject/",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "NL",
+ "loadBalanced": "No",
+ "orgName": "Babylon Network",
+ "region": "Europe",
+ "rsyncDistMirror": "rsync://mirror2.babylon.network/torproject/dist/",
+ "rsyncWebsiteMirror": "rsync://mirror2.babylon.network/torproject/",
+ "subRegion": "The Netherlands",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "noc AT babylon DOT network",
+ "ftpWebsiteMirror": "ftp://mirror0.babylon.network/torproject/",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://mirror0.babylon.network/torproject/dist/",
+ "httpWebsiteMirror": "http://mirror0.babylon.network/torproject/",
+ "httpsDistMirror": "https://mirror0.babylon.network/torproject/dist/",
+ "httpsWebsiteMirror": "https://mirror0.babylon.network/torproject/",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "FR",
+ "loadBalanced": "No",
+ "orgName": "Babylon Network",
+ "region": "Europe",
+ "rsyncDistMirror": "rsync://mirror0.babylon.network/torproject/dist/",
+ "rsyncWebsiteMirror": "rsync://mirror0.babylon.network/torproject/",
+ "subRegion": "France",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "noc AT babylon DOT network",
+ "ftpWebsiteMirror": "ftp://mirror1.babylon.network/torproject/",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://mirror1.babylon.network/torproject/dist/",
+ "httpWebsiteMirror": "http://mirror1.babylon.network/torproject/",
+ "httpsDistMirror": "https://mirror1.babylon.network/torproject/dist/",
+ "httpsWebsiteMirror": "https://mirror1.babylon.network/torproject/",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "FR",
+ "loadBalanced": "No",
+ "orgName": "Babylon Network",
+ "region": "Europe",
+ "rsyncDistMirror": "rsync://mirror1.babylon.network/torproject/dist/",
+ "rsyncWebsiteMirror": "rsync://mirror1.babylon.network/torproject/",
+ "subRegion": "France",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "alexander AT dietrich DOT cx",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.ybti.net/dist/",
+ "httpWebsiteMirror": "http://tor.ybti.net/",
+ "httpsDistMirror": "https://tor.ybti.net/dist/",
+ "httpsWebsiteMirror": "https://tor.ybti.net/",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "DE",
+ "loadBalanced": "No",
+ "orgName": "Tor Supporter",
+ "region": "Europe",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Germany",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "tor@xxxxxxx",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.0x3d.lu/dist/",
+ "httpWebsiteMirror": "http://tor.0x3d.lu/",
+ "httpsDistMirror": "https://tor.0x3d.lu/dist/",
+ "httpsWebsiteMirror": "https://tor.0x3d.lu/",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "DE",
+ "loadBalanced": "No",
+ "orgName": "0x3d.lu",
+ "region": "Europe",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Germany",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "kraai@xxxxxxxxx 0xADCE6065",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.ftbfs.org/dist/",
+ "httpWebsiteMirror": "http://tor.ftbfs.org/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "SE",
+ "loadBalanced": "No",
+ "orgName": "",
+ "region": "Europe",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Sweden",
+ "updateDate\n": "Fri Oct 24 08:28:32 2014"
+ },
+ {
+ "adminContact": "kontakt@xxxxxxxxxxxxxxxx",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://www.unicorncloud.org/public/torproject.org/dist",
+ "httpWebsiteMirror": "http://www.unicorncloud.org/public/torproject.org/",
+ "httpsDistMirror": "https://www.unicorncloud.org/public/torproject.org/dist",
+ "httpsWebsiteMirror": "https://www.unicorncloud.org/public/torproject.org/",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "AT",
+ "loadBalanced": "No",
+ "orgName": "UnicornCloud.org",
+ "region": "Wien",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Favoriten",
+ "updateDate\n": "Mon Mar 16 15:53:03 2015"
+ },
+ {
+ "adminContact": "James Murphy",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://108.248.87.242/dist/",
+ "httpWebsiteMirror": "http://108.248.87.242/",
+ "httpsDistMirror": "https://108.248.87.242/dist/",
+ "httpsWebsiteMirror": "https://108.248.87.242/",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "US",
+ "loadBalanced": "No",
+ "orgName": "intfxdx.com",
+ "region": "US",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "United States",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "Sam Whited 4096R/54083AE104EA7AD3 <sam@xxxxxxxxxxxxx>",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://mirrors.samwhited.net/tor/dist",
+ "httpWebsiteMirror": "http://mirrors.samwhited.net/tor",
+ "httpsDistMirror": "https://mirrors.samwhited.net/tor/dist",
+ "httpsWebsiteMirror": "https://mirrors.samwhited.net/tor",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "US",
+ "loadBalanced": "FALSE",
+ "orgName": "SamWhited.com",
+ "region": "United States",
+ "rsyncDistMirror": "rsync://mirrors.samwhited.net/tor-dist",
+ "rsyncWebsiteMirror": "rsync://mirrors.samwhited.net/tor",
+ "subRegion": "GA",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "rohit008 AT e DOT ntu DOT edu DOT sg",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://torproject.ntuoss.com/dist/",
+ "httpWebsiteMirror": "http://torproject.ntuoss.com/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "SG",
+ "loadBalanced": "No",
+ "orgName": "NTUOSS",
+ "region": "Asia",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Singapore",
+ "updateDate\n": "Mon Mar 16 15:53:03 2015"
+ },
+ {
+ "adminContact": "jvictors at jessevictors dot com",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor-relay.cs.usu.edu/mirrors/torproject.org/dist/",
+ "httpWebsiteMirror": "http://tor-relay.cs.usu.edu/mirrors/torproject.org/",
+ "httpsDistMirror": "https://www.jessevictors.com/secureMirrors/torproject.org/dist/",
+ "httpsWebsiteMirror": "https://www.jessevictors.com/secureMirrors/torproject.org/",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "US",
+ "loadBalanced": "No",
+ "orgName": "Department of CS at USU",
+ "region": "North America",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "United States",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "Jacob Henner",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.ventricle.us/dist/",
+ "httpWebsiteMirror": "http://tor.ventricle.us/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "US",
+ "loadBalanced": "TRUE",
+ "orgName": "Anatomical Networks",
+ "region": "US",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "United States",
+ "updateDate\n": "Tue Jan 20 16:17:52 2015"
+ },
+ {
+ "adminContact": "hostmaster@xxxxxxxxxxxxxxxxx",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.mirrors.lucidnetworks.net/dist",
+ "httpWebsiteMirror": "http://tor.mirrors.lucidnetworks.net",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "US",
+ "loadBalanced": "No",
+ "orgName": "Lucid Networks",
+ "region": "US",
+ "rsyncDistMirror": "rsync://tor.mirrors.lucidnetworks.net::tor-dist",
+ "rsyncWebsiteMirror": "rsync://tor.mirrors.lucidnetworks.net::tor",
+ "subRegion": "United States",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "hostmaster@xxxxxxxxxxxxxxx",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.mirror-server.de/dist/",
+ "httpWebsiteMirror": "http://tor.mirror-server.de/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "DE",
+ "loadBalanced": "No",
+ "orgName": "mirror-server.de",
+ "region": "DE",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Germany",
+ "updateDate\n": "Tue Jan 20 16:17:52 2015"
+ },
+ {
+ "adminContact": "mirror ntzk de",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://mirror.ntzk.de/torproject.org/dist/",
+ "httpWebsiteMirror": "http://mirror.ntzk.de/torproject.org/",
+ "httpsDistMirror": "https://mirror.ntzk.de/torproject.org/dist/",
+ "httpsWebsiteMirror": "https://mirror.ntzk.de/torproject.org/",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "DE",
+ "loadBalanced": "No",
+ "orgName": "Netzkonstrukt Berlin",
+ "region": "Europe",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Germany",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "mirror@xxxxxxxxxxxx",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.xfree.com.ar/dist/",
+ "httpWebsiteMirror": "http://tor.xfree.com.ar/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "AR",
+ "loadBalanced": "No",
+ "orgName": "Xfree.com.ar",
+ "region": "South America",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Argentina",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "tor AT eprci NET",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.eprci.net/dist/",
+ "httpWebsiteMirror": "http://tor.eprci.net/",
+ "httpsDistMirror": "https://www.eprci.com/tor/dist/",
+ "httpsWebsiteMirror": "https://www.eprci.com/tor/",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "US",
+ "loadBalanced": "No",
+ "orgName": "EPRCI",
+ "region": "US",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "NH",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "tor@xxxxxxx",
+ "ftpWebsiteMirror": "ftp://tor-mirror.kura.io",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor-mirror.kura.io/dist/",
+ "httpWebsiteMirror": "http://tor-mirror.kura.io/",
+ "httpsDistMirror": "https://tor-mirror.kura.io/dist/",
+ "httpsWebsiteMirror": "https://tor-mirror.kura.io/",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "NL",
+ "loadBalanced": "TRUE",
+ "orgName": "KURA IO LIMITED",
+ "region": "Europe",
+ "rsyncDistMirror": "rsync://tor-mirror.kura.io/torproject.org/dist",
+ "rsyncWebsiteMirror": "rsync://tor-mirror.kura.io/torproject.org",
+ "subRegion": "Netherlands",
+ "updateDate\n": "Thu Jan 22 16:27:59 2015"
+ },
+ {
+ "adminContact": "tor-admin AT wardsback DOT org",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://alliumcepa.wardsback.org/dist/",
+ "httpWebsiteMirror": "http://alliumcepa.wardsback.org/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "FR",
+ "loadBalanced": "No",
+ "orgName": "wardsback.org",
+ "region": "FR",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "France",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "PW",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.pw.is/dist/",
+ "httpWebsiteMirror": "http://tor.pw.is/",
+ "httpsDistMirror": "https://www.it-sicherheitschannel.de/dist/",
+ "httpsWebsiteMirror": "https://www.it-sicherheitschannel.de/",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "DE",
+ "loadBalanced": "NO",
+ "orgName": "PW",
+ "region": "DE",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Germany",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "kevin@xxxxxxxxxxxxx",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.freedom.press/dist/",
+ "httpWebsiteMirror": "http://tor.freedom.press",
+ "httpsDistMirror": "https://tor.freedom.press/dist/",
+ "httpsWebsiteMirror": "https://tor.freedom.press",
+ "ipv4": "True",
+ "ipv6": "False",
+ "isoCC": "",
+ "loadBalanced": "No",
+ "orgName": "Freedom of the Press Foundation",
+ "region": "US",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "US",
+ "updateDate\n": ""
+ },
+ {
+ "adminContact": "hsu AT peterdavehellor DOT org",
+ "ftpWebsiteMirror": "ftp://ftp.yzu.edu.tw/torproject.org/",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://ftp.yzu.edu.tw/torproject.org/dist/",
+ "httpWebsiteMirror": "http://ftp.yzu.edu.tw/torproject.org/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "TW",
+ "loadBalanced": "No",
+ "orgName": "Department of CSE. Yuan Ze University",
+ "region": "Asia",
+ "rsyncDistMirror": "rsync://ftp.yzu.edu.tw/pub/torproject.org/dist/",
+ "rsyncWebsiteMirror": "rsync://ftp.yzu.edu.tw/pub/torproject.org/",
+ "subRegion": "Taiwan",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "tormirror at sybec.net <mailto:tormirror at sybec.net>",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tormirror.sybec.net:8080/dist/ <http://tormirror.sybec.net:8080/dist/>",
+ "httpWebsiteMirror": "http://tormirror.sybec.net:8080/ <http://tormirror.sybec.net:8080/>",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "DE",
+ "loadBalanced": "FALSE",
+ "orgName": "Sybec Services Ltd.",
+ "region": "DE",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Germany",
+ "updateDate\n": ""
+ },
+ {
+ "adminContact": "tor at tvdw dot eu",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor-exit.network/dist",
+ "httpWebsiteMirror": "http://tor-exit.network",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "XX",
+ "loadBalanced": "Yes",
+ "orgName": "TvdW",
+ "region": "XX",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Around the world",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "spiderfly AT protonmail DOT com",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://onionphysics.com/dist/",
+ "httpWebsiteMirror": "http://onionphysics.com",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "FR",
+ "loadBalanced": "No",
+ "orgName": "Tor Supporter",
+ "region": "FR",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "France",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "ops at hoovism.com",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "http://bt3ehg7prnlm6tyv.onion/",
+ "httpDistMirror": "http://tor.hoovism.com/dist/",
+ "httpWebsiteMirror": "http://tor.hoovism.com/",
+ "httpsDistMirror": "https://tor.hoovism.com/dist/",
+ "httpsWebsiteMirror": "https://tor.hoovism.com/",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "US",
+ "loadBalanced": "No",
+ "orgName": "Matthew Hoover",
+ "region": "US",
+ "rsyncDistMirror": "rsync://tor.hoovism.com/tor/dist/",
+ "rsyncWebsiteMirror": "rsync://tor.hoovism.com/tor/",
+ "subRegion": "NJ",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "tormaster AT urown DOT net",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "http://torprowdd64ytmyk.onion",
+ "httpDistMirror": "http://torproject.urown.net/dist/",
+ "httpWebsiteMirror": "http://torproject.urown.net/",
+ "httpsDistMirror": "https://torproject.urown.net/dist/",
+ "httpsWebsiteMirror": "https://torproject.urown.net/",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "CH",
+ "loadBalanced": "No",
+ "orgName": "urown.net",
+ "region": "Europe",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Switzerland",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "Stefan",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://sela.io/mirrors/torproject.org/dist/",
+ "httpWebsiteMirror": "http://sela.io/mirrors/torproject.org/",
+ "httpsDistMirror": "https://sela.io/mirrors/torproject.org/dist/",
+ "httpsWebsiteMirror": "https://sela.io/mirrors/torproject.org/",
+ "ipv4": "TRUE",
+ "ipv6": "TRUE",
+ "isoCC": "DE",
+ "loadBalanced": "No",
+ "orgName": "sela Internet",
+ "region": "DE",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Germany",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "justaguy AT justaguy DOT pw",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "http://3qzbcsjhwseov7k4.onion",
+ "httpDistMirror": "http://services.justaguy.pw/dist",
+ "httpWebsiteMirror": "http://services.justaguy.pw/",
+ "httpsDistMirror": "https://services.justaguy.pw/dist",
+ "httpsWebsiteMirror": "https://services.justaguy.pw/",
+ "ipv4": "True",
+ "ipv6": "False",
+ "isoCC": "NL",
+ "loadBalanced": "No",
+ "orgName": "Justaguy",
+ "region": "NL",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "The Netherlands",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "thomaswhite AT riseup DOT net",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.thecthulhu.com/dist/",
+ "httpWebsiteMirror": "http://tor.thecthulhu.com/",
+ "httpsDistMirror": "https://tor.thecthulhu.com/dist/",
+ "httpsWebsiteMirror": "https://tor.thecthulhu.com/",
+ "ipv4": "True",
+ "ipv6": "False",
+ "isoCC": "NL",
+ "loadBalanced": "No",
+ "orgName": "TheCthulhu",
+ "region": "NL",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "The Netherlands",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "rush23 AT gmx DOT net",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor-proxy.euve59946.serverprofi24.de/dist/",
+ "httpWebsiteMirror": "http://tor-proxy.euve59946.serverprofi24.de/",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "DE",
+ "loadBalanced": "No",
+ "orgName": "Tor Supporter",
+ "region": "Europe",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "Germany",
+ "updateDate\n": "Thu Jun 4 19:06:42 2015"
+ },
+ {
+ "adminContact": "webmaster AT ccc DOT de",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "http://tor.ccc.de/dist/",
+ "httpWebsiteMirror": "http://tor.ccc.de/",
+ "httpsDistMirror": "https://tor.ccc.de/dist/",
+ "httpsWebsiteMirror": "https://tor.ccc.de",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "NL",
+ "loadBalanced": "No",
+ "orgName": "CCC",
+ "region": "Europe",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "The Netherlands",
+ "updateDate\n": "Wed Jul 15 18:49:12 2015"
+ },
+ {
+ "adminContact": "mitchell AT lcsks DOT com",
+ "ftpWebsiteMirror": "",
+ "hiddenServiceMirror": "",
+ "httpDistMirror": "",
+ "httpWebsiteMirror": "http://mirror.lcsks.com",
+ "httpsDistMirror": "",
+ "httpsWebsiteMirror": "",
+ "ipv4": "TRUE",
+ "ipv6": "FALSE",
+ "isoCC": "US",
+ "loadBalanced": "No",
+ "orgName": "CCC",
+ "region": "US",
+ "rsyncDistMirror": "",
+ "rsyncWebsiteMirror": "",
+ "subRegion": "United States",
+ "updateDate\n": ""
+ }
+]
\ No newline at end of file
diff --git a/tor-mirrors.csv b/tor-mirrors.csv
new file mode 100644
index 0000000..5ca8f03
--- /dev/null
+++ b/tor-mirrors.csv
@@ -0,0 +1,116 @@
+adminContact, orgName, isoCC, subRegion, region, ipv4, ipv6, loadBalanced, httpWebsiteMirror, httpsWebsiteMirror, rsyncWebsiteMirror, ftpWebsiteMirror, httpDistMirror, httpsDistMirror, rsyncDistMirror, hiddenServiceMirror, updateDate
+Tor Fan, Tor Supporter, US, United States, US, TRUE, TRUE, No, http://tor.loritsu.com/, , , , http://tor.loritsu.com/dist/, , , ,
+Tor Fan, Tor Supporter, LU, Luxemborg, LU, TRUE, FALSE, No, http://torproject.adamas.ai/, , , , http://torproject.adamas.ai/dist/, , , ,
+Tor Fan, Tor Supporter, UA, Ukraine, UA, TRUE, FALSE, No, http://torua.reactor-xg.kiev.ua/, , , , http://torua.reactor-xg.kiev.ua/dist/, , , ,
+Tor Fan, Tor Supporter, FR, France, FR, TRUE, FALSE, No, http://37.187.0.127/tormirror/, , , , http://37.187.0.127/tormirror/dist/, , , ,
+Tor Fan, Tor Supporter, US, United States, US, TRUE, FALSE, No, http://tor.minibofh.org/, , , , http://tor.minibofh.org/dist/, , , ,
+Tor Fan, Tor Supporter, UK, United Kingdom, UK, TRUE, FALSE, No, http://tor.mage.me.uk/, , , , http://tor.mage.me.uk/dist/, , , ,
+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/, , ,
+citizen428 AT gmail DOT com, [[:bbs:]], DE, Germany, Europe, TRUE, FALSE, No, http://tor.blingblingsquad.net/, https://tor.blingblingsquad.net/, , , http://tor.blingblingsquad.net/dist/, https://tor.blingblingsquad.net/dist/, , ,
+Tor Fan, 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, ,
+Tor Fan, Tor Supporter, NL, The Netherlands, NL, TRUE, FALSE, No, , , , , , https://www.coevoet.nl/tor/dist/, , ,
+Tor Fan, LazyTiger, FR, France, FR, TRUE, FALSE, No, http://tor.taiga-san.net/, , , , http://tor.taiga-san.net/dist/, , , ,
+Tor Fan, Tor Supporter, EE, Estonia, EE, TRUE, FALSE, No, http://tor.li/, https://tor.li/, , , http://tor.li/dist/, https://tor.li/dist/, , ,
+Tor Fan, Tor Supporter, DE, Germany, DE, TRUE, FALSE, NO, http://tor.externenprüfung-nichtschüler.de/, , , , http://tor.externenprüfung-nichtschüler.de/dist/, , , ,
+mirror-service@xxxxxxxxxxxxx, NetCologne GmbH, DE, NRW, , TRUE, TRUE, No, http://mirror.netcologne.de/torproject.org, , rsync://mirror.netcologne.de/torproject.org, ftp://mirror.netcologne.de/torproject.org/, http://mirror.netcologne.de/torproject.org/dist, , rsync://mirror.netcologne.de/torproject.org/dist, , Wed Jul 15 18:49:12 2015
+admin AT netgull DOT com, NetGull, US, United States, North America, TRUE, TRUE, No, , , , , http://www.netgull.com/torproject/, , , ,
+mirrors[at]ip-connect[dot]vn[dot]ua, IP-Connect LLC, UA, VN, , TRUE, TRUE, Yes, http://torproject.ip-connect.vn.ua, , rsync://torproject.ip-connect.vn.ua/torproject, ftp://torproject.ip-connect.vn.ua/mirror/torproject/, http://torproject.ip-connect.vn.ua/dist, , rsync://torproject.ip-connect.vn.ua/torproject/dist, , Wed Jul 15 18:49:12 2015
+torsupport AT tb-itf DOT de, TB-ITF, DE, Germany, Europe, TRUE, TRUE, No, http://tormirror.tb-itf-tor.de, https://tormirror.tb-itf-tor.de, , , http://tormirror.tb-itf-tor.de/dist/, https://tormirror.tb-itf-tor.de/dist/, , , Wed Jul 15 18:49:12 2015
+admin at koreswatanabe dottnet, Tor Supporter, RO, Romania, RO, TRUE, TRUE, No, http://tor-relay.koreswatanabe.net, , , , http://tor-relay.koreswatanabe.net/dist/, , , ,
+calebcenter@xxxxxxxx, calebxu.tk, US, United States, US, TRUE, FALSE, NO, http://tor.calebxu.tk, , rsync://calebxu.tk/tor, ftp://ftp.calebxu.tk, http://tor.calebxu.tk/dist, , , ,
+maki@xxxxxxxxxxxx, Maki Hoshisawa, DE, Germany, DE, TRUE, FALSE, NO, http://tor.mirrors.maki-chan.de/, , , , http://tor.mirrors.maki-chan.de/dist/, , , , Sat Aug 23 08:09:07 2014
+info AT zentrum-der-gesundheit DOT de, Zentrum der Gesundheit, DK, Denmark, Europe, TRUE, FALSE, No, http://tor.idnr.ws/, , , , http://tor.idnr.ws/dist/, , , , Tue Sep 2 11:16:00 2014
+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, Wed Jul 15 18:49:12 2015
+Piratenpartei Bayern, Piratenpartei Bayern, DE, Germany, DE, TRUE, FALSE, NO, http://tormirror.piratenpartei-bayern.de, https://tormirror.piratenpartei-bayern.de, , , http://tormirror.piratenpartei-bayern.de/dist/, https://tormirror.piratenpartei-bayern.de/dist/, , , Wed Jul 15 18:49:12 2015
+Tor Fan, Tor Supporter, DE, Germany, DE, TRUE, TRUE, NO, http://tor.hoi-polloi.org, https://tor.hoi-polloi.org/, , , http://tor.hoi-polloi.org/dist/, https://tor.hoi-polloi.org/dist/, , , Wed Jul 15 18:49:12 2015
+tor@xxxxxxx // FoDT.it Webteam, FoDT.it, AT, Austria, Europe, TRUE, FALSE, No, http://tor.fodt.it, https://tor.fodt.it, , ftp://ftp.fodt.it/pub/mirrors/torproject.org/, http://tor.fodt.it/dist/, https://tor.fodt.it/dist/, , , Mon Aug 25 10:19:07 2014
+http://www.multinet.no, MultiNet AS, NO, Trondheim, Trondheim, TRUE, TRUE, No, http://tor.multinet.no/, , , , http://tor.multinet.no/dist/, , , , Wed Jul 15 18:49:12 2015
+haskell at gmx.es, Tor Supporter, ES, Spain, Europe, TRUE, TRUE, No, http://tor.zilog.es/, https://tor.zilog.es/, , , http://tor.zilog.es/dist/, https://tor.zilog.es/dist/, , , Wed Jul 15 18:49:12 2015
+Tor Fan, Tor Supporter, US, United States, US, TRUE, FALSE, No, http://199.175.55.215/, https://199.175.55.215/, , , http://199.175.55.215/dist/, https://199.175.55.215/dist/, , , Wed Jul 15 18:49:12 2015
+Tor Fan, Tor Supporter, US, United States, US, FALSE, TRUE, No, http://2607:8b00:2::6258:5c9/, https://2607:8b00:2::6258:5c9/, , , http://2607:8b00:2::6258:5c9/dist/, https://2607:8b00:2::6258:5c9/dist/, , , Tue Jan 20 16:17:52 2015
+margus.random at mail.ee, CyberSIDE, EE, Estonia, EE, TRUE, FALSE, No, http://cyberside.planet.ee/tor/, , , , http://cyberside.net.ee/tor/, , , , Wed Jul 15 18:49:12 2015
+Tor Fan, torproject.is, IS, Iceland, IS, TRUE, FALSE, No, http://www.torproject.is/, , , , http://www.torproject.is/dist/, , , , Wed Jul 15 18:49:12 2015
+Tor Fan, spline, DE, Germany, 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, , Wed Jul 15 18:49:12 2015
+Tor Fan, me0w.cc, RO, Romania, RO, TRUE, FALSE, No, http://tor.me0w.cc/, , , , http://tor.me0w.cc/dist/, , , , Thu Jan 1 16:17:56 2015
+Tor Fan, borgmann.tv, DE, Germany, DE, TRUE, FALSE, No, http://tor.borgmann.tv/, , , , http://tor.borgmann.tv/dist/, , , , Sun Jul 12 19:04:44 2015
+Tor Fan, Tor Supporter, AT, Austria, AT, TRUE, TRUE, No, http://tor.dont-know-me.at/, , , , http://tor.dont-know-me.at/dist/, , , , Tue Jan 20 16:17:52 2015
+coralcdn.org, CoralCDN, INT, International, INT, TRUE, FALSE, Yes, http://www.torproject.org.nyud.net/, , , , http://www.torproject.org.nyud.net/dist/, , , , Thu Jan 8 02:01:06 2015
+Tor Fan, Tor Supporter, AT, Austria, AT, TRUE, FALSE, No, http://torproject.ph3x.at/, , , , http://torproject.ph3x.at/dist/, , , , Wed Jul 15 18:49:12 2015
+Tor Fan, Tor Supporter, MX, Mexico, 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/, , , Wed Jul 15 18:49:12 2015
+webmaster AT askapache DOT com, AskApache, US, California, US, TRUE, FALSE, No, http://tor.askapache.com/, , , , http://tor.askapache.com/dist/, , , , Wed Jul 15 18:49:12 2015
+Tor Fan, Tor Supporter, FR, France, FR, TRUE, FALSE, No, http://tor.mirror.chekanov.net/, , , , http://tor.mirror.chekanov.net/dist/, , , , Mon Mar 16 15:53:03 2015
+kontakt AT unicorncloud DOT org, UnicornCloud.org, DE, Germany, Falkenstein, TRUE, FALSE, No, http://mirror.unicorncloud.org/torproject.org/, https://mirror.unicorncloud.org/torproject.org/, , , http://mirror.unicorncloud.org/torproject.org/dist, https://mirror.unicorncloud.org/torproject.org/dist, , , Wed Jul 15 18:49:12 2015
+root AT amorphis DOT eu, Amorphis, NL, The Netherlands, Europe, TRUE, FALSE, No, http://tor.amorphis.eu/, , , , http://tor.amorphis.eu/dist/, , , , Mon Mar 16 15:53:03 2015
+hackthissite.org, HackThisSite.org, US, United States, US, TRUE, TRUE, No, http://tor.hackthissite.org/, https://tor.hackthissite.org/, , , http://mirror.hackthissite.org/tor, https://mirror.hackthissite.org/tor, , , Wed Jul 15 18:49:12 2015
+paul at coffswifi.net, CoffsWiFi, AU, Australia and New Zealand, APNIC, TRUE, FALSE, No, http://torproject.coffswifi.net, , , , http://torproject.coffswifi.net/dist, , , , Wed Jul 15 18:49:12 2015
+Tor Fan, cyberarmy, AT, Austria, AT, TRUE, FALSE, No, http://tor.cyberarmy.at/, , , , , , , , Wed Jul 15 18:49:12 2015
+hostmaster AT example DOT com, TheOnionRouter, IS, Iceland, Iceland, TRUE, FALSE, No, http://www.theonionrouter.com/, , , , http://www.theonionrouter.com/dist/, , , , Wed Jul 15 18:49:12 2015
+Tor Fan, crazyhaze.de, DE, Germany, DE, TRUE, FALSE, No, http://tor.crazyhaze.de/, https://tor.crazyhaze.de/, , , http://tor.crazyhaze.de/dist/, https://tor.crazyhaze.de/dist/, , , Tue Jul 7 13:16:29 2015
+Tor Fan, chaos darmstadt, DE, Germany, Europe, TRUE, FALSE, No, http://mirrors.chaos-darmstadt.de/tor-mirror/, , , , http://mirrors.chaos-darmstadt.de/tor-mirror/dist/, , , , Wed Jul 15 18:49:12 2015
+Tor Fan, Soviet Anonymous, RU, Russia, 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, , Wed Jul 15 18:49:12 2015
+Tor Fan, torservers, DE, Germany, 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/, Wed Jul 15 18:49:12 2015
+Tor Fan, torland, GB, United Kingdom, 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/, , , Wed Jul 15 18:49:12 2015
+Tor Fan, Lightning-bolt.net, CZ, Czech Republic, CZ, TRUE, FALSE, No, http://torproject.lightning-bolt.net/, , , , http://torproject.lightning-bolt.net/dist/, , , , Mon Mar 16 15:53:03 2015
+IceBear, myRL.net, IS, Iceland, IS, TRUE, FALSE, No, http://tor.myrl.net/, https://tor.myrl.net/, , , http://tor.myrl.net/dist/, https://tor.myrl.net/dist/, , , Wed Jul 15 18:49:12 2015
+kiro AT userzap DOT de, Userzap, DE, Germany, DE, TRUE, FALSE, No, http://torprojekt.userzap.de, https://torprojekt.userzap.de, , , http://torprojekt.userzap.de/dist/, https://torprojekt.userzap.de/dist/, , , Tue Jan 20 16:17:52 2015
+tor@xxxxxxx, tor@xxxxxxx, CA, Canada, CA, TRUE, FALSE, NO, http://tor.les.net/, , , , http://tor.les.net/dist, , , , Wed Jul 15 18:49:12 2015
+tor@xxxxxxxxxx, stalkr.net, FR, France, FR, TRUE, TRUE, NO, http://tor.stalkr.net/, https://tor.stalkr.net/, , , http://tor.stalkr.net/dist/, https://tor.stalkr.net/dist/, , , Wed Jul 15 18:49:12 2015
+doemela[AT]cyberguerrilla[DOT]org, cYbergueRrilLa AnonyMous NeXus, DE, Germany, DE, TRUE, FALSE, NO, , https://tor-mirror.cyberguerrilla.org, , , , https://tor-mirror.cyberguerrilla.org/dist/, , http://6dvj6v5imhny3anf.onion, Wed Jul 15 18:49:12 2015
+contact@xxxxxxxx, Gtor, DE, Germany, DE, TRUE, TRUE, NO, http://torproject.gtor.org/, https://torproject.gtor.org/, rsync://torproject.gtor.org/website-mirror/, , http://torproject.gtor.org/dist/, https://torproject.gtor.org/dist/, rsync://torproject.gtor.org/website-mirror/dist/, , Wed Jul 15 18:49:12 2015
+SDL, SDL, US, United States, US, TRUE, TRUE, NO, http://torproject.nexiom.net, https://torproject.nexiom.net, , , http://torproject.nexiom.net, https://torproject.nexiom.net/dist, , , Wed Jul 15 18:49:12 2015
+Tor Fan, Tor Supporter, DE, Germany, DE, TRUE, TRUE, NO, http://mirror.velcommuta.de/tor/, https://mirror.velcommuta.de/tor/, , , http://mirror.velcommuta.de/tor/dist/, https://mirror.velcommuta.de/tor/dist/, , , Wed Jul 15 18:49:12 2015
+EFF, EFF, US, United States, US, TRUE, FALSE, NO, , https://tor.eff.org, , , , https://tor.eff.org/dist/, , , Wed Jul 15 18:49:12 2015
+Tor Fan, Tor Supporter, GR, Greece, GR, TRUE, TRUE, NO, http://tor.void.gr, https://tor.void.gr, , , http://tor.void.gr/dist/, https://tor.void.gr/dist/, , , Wed Jul 15 18:49:12 2015
+Ich Eben, Tor Supporter, DE, Germany, DE, TRUE, TRUE, No, http://reichster.de/mirrors/torproject.org/, https://reichster.de/mirrors/torproject.org, , , http://reichster.de/mirrors/torproject.org/dist/, https://reichster.de/mirrors/torproject.org/dist/, , , Wed Jul 15 18:49:12 2015
+jlgaddis AT gnu DOT org, Evil Routers, US, United States, US, TRUE, FALSE, No, http://tor1.evilrouters.net/, , , , http://tor1.evilrouters.net/dist/, , , , Wed Jul 15 18:49:12 2015
+tor AT miglix DOT eu, Tor Supporter, DE, Germany, Europe, TRUE, TRUE, NO, http://tor.miglix.eu, https://tor.miglix.eu, , , http://tor.miglix.eu/dist/, https://tor.miglix.eu/dist/, , , Wed Jul 15 18:49:12 2015
+tor TA ninurta TOD name, TorNinurtaName, AT, Austria, AT, TRUE, TRUE, no, http://tor.ninurta.name/, , , , http://tor.ninurta.name/dist/, , , , Wed Oct 22 15:02:17 2014
+fr33tux <AT> general-changelog-team.fr, Tor Supporter, FR, France, FR, TRUE, TRUE, No, http://tor.fr33tux.org, https://tor.fr33tux.org, , , http://tor.fr33tux.org/dist/, https://tor.fr33tux.org/dist/, , , Wed Jul 15 18:49:12 2015
+sebastian(at)bobrecki(dot)pl, Sebastian M. Bobrecki, PL, Poland, Europe, TRUE, FALSE, No, http://tor.iv.net.pl, https://tor.iv.net.pl, , , http://tor.iv.net.pl/dist/, https://tor.iv.net.pl/dist/, , , Wed Jul 15 18:49:12 2015
+tor-mirror AT rdns DOT cc, d0wn.biz, FR, France, Europe, TRUE, FALSE, No, http://tor.static.lu, https://tor.static.lu, , , http://tor.static.lu/dist/, https://tor.static.lu/dist/, , , Wed Jul 15 18:49:12 2015
+tor@xxxxxxxxxxxxxxxxxx, moparisthebest.com, DE, Germany, Europe, TRUE, TRUE, No, http://www.moparisthebest.com/tor/, https://www.moparisthebest.com/tor/, , , http://www.moparisthebest.com/tor/dist/, https://www.moparisthebest.com/tor/dist/, , , Wed Jul 15 18:49:12 2015
+Sebastian, Maxanoo, NL, The Netherlands, Amsterdam, TRUE, FALSE, NO, http://tor.maxanoo.com/, , , , http://tor.maxanoo.com/dist/, , , , Sun May 31 15:13:53 2015
+rorrim AT ayo DOT tl, Tor Supporter, IS, Iceland, Europe, TRUE, TRUE, No, http://ayo.tl/tor/, https://ayo.tl/tor/, , , http://ayo.tl/tor/dist/, https://ayo.tl/tor/dist/, , , Tue Jan 20 16:17:52 2015
+stefano.fenoglio AT gmail DOT com, Tor Supporter, IT, Italy, Europe, TRUE, FALSE, No, http://tor.stefanof.com, , , , http://tor.stefanof.com/dist, , , , Sun Jul 12 13:19:35 2015
+Tor Fan, Ramos Research, US, United States, US, TRUE, TRUE, No, http://tor.ramosresearch.com/, , , , http://tor.ramosresearch.com/dist/, , , , Mon Mar 16 15:53:03 2015
+Tor Fan, Tor Supporter, DE, Germany, Europe, TRUE, FALSE, No, http://tor.euve33747.vserver.de/, , , , http://tor.euve33747.vserver.de/dist, , , , Wed Jul 15 18:49:12 2015
+s7r[at]sky-ip[d0t]org, sky-ip.org, NL, Netherlands, NL, TRUE, FALSE, No, http://beautiful-mind.sky-ip.org/, , , , http://beautiful-mind.sky-ip.org/dist/, , , , Wed Jul 15 18:49:12 2015
+tor#pajonzeck#de, ITsn, DE, Germany, Europe, TRUE, FALSE, No, http://tor.pajonzeck.de/, https://tor.pajonzeck.de/, rsync://tor.pajonzeck.de/tor, , http://tor.pajonzeck.de/dist/, https://tor.pajonzeck.de/dist/, rsync://tor.pajonzeck.de/tor/dist, http://zgfgvob256pffy62.onion, Wed Jul 15 18:49:12 2015
+peter AT ludikovsky DOT name, Tor Supporter, AT, Austria, Europe, TRUE, TRUE, No, http://tor.ludikovsky.name/, https://tor.ludikovsky.name/, rsync://tor.ludikovsky.name/tor, , http://tor.ludikovsky.name/dist, https://tor.ludikovsky.name/dist, rsync://tor.ludikovsky.name/tor-dist, http://54lnbzjo6xlr4f4j.onion/, Wed Jul 15 18:49:12 2015
+admin AT nuclear DASH weapons DOT net, Setec Administrator, US, Texas, Austin, TRUE, FALSE, No, http://tor.nuclear-weapons.net, https://tor.nuclear-weapons.net, , , http://tor.nuclear-weapons.net/dist, https://tor.nuclear-weapons.net/dist, , , Wed Jul 15 18:49:12 2015
+0x43DE8191, Tor Supporter, DE, Germany, Europe, TRUE, TRUE, No, http://torproject.hactar.bz, , , , http://torproject.hactar.bz/dist/, , , , Wed Jul 15 18:49:12 2015
+-nick at calyx dot com, The Calyx Institute, US, United States, North America, TRUE, FALSE, No, http://tor.calyxinstitute.org, https://tor.calyxinstitute.org, , , http://tor.calyxinstitute.org/dist/, https://tor.calyxinstitute.org/dist/, , http://tmdrhl4e4anhsjc5.onion, Wed Jul 15 18:49:12 2015
+opi@xxxxxxxxxx, Tor Supporter, FR, France, FR, TRUE, TRUE, No, http://tor-mirror.zeropi.net/, , , , http://tor-mirror.zeropi.net/dist/, , , , Mon Dec 1 12:15:20 2014
+noc AT babylon DOT network, Babylon Network, NL, The Netherlands, Europe, TRUE, TRUE, No, http://mirror2.babylon.network/torproject/, https://mirror2.babylon.network/torproject/, rsync://mirror2.babylon.network/torproject/, ftp://mirror2.babylon.network/torproject/, http://mirror2.babylon.network/torproject/dist/, https://mirror2.babylon.network/torproject/dist/, rsync://mirror2.babylon.network/torproject/dist/, , Wed Jul 15 18:49:12 2015
+noc AT babylon DOT network, Babylon Network, FR, France, Europe, TRUE, TRUE, No, http://mirror0.babylon.network/torproject/, https://mirror0.babylon.network/torproject/, rsync://mirror0.babylon.network/torproject/, ftp://mirror0.babylon.network/torproject/, http://mirror0.babylon.network/torproject/dist/, https://mirror0.babylon.network/torproject/dist/, rsync://mirror0.babylon.network/torproject/dist/, , Wed Jul 15 18:49:12 2015
+noc AT babylon DOT network, Babylon Network, FR, France, Europe, TRUE, TRUE, No, http://mirror1.babylon.network/torproject/, https://mirror1.babylon.network/torproject/, rsync://mirror1.babylon.network/torproject/, ftp://mirror1.babylon.network/torproject/, http://mirror1.babylon.network/torproject/dist/, https://mirror1.babylon.network/torproject/dist/, rsync://mirror1.babylon.network/torproject/dist/, , Wed Jul 15 18:49:12 2015
+alexander AT dietrich DOT cx, Tor Supporter, DE, Germany, Europe, TRUE, TRUE, No, http://tor.ybti.net/, https://tor.ybti.net/, , , http://tor.ybti.net/dist/, https://tor.ybti.net/dist/, , , Wed Jul 15 18:49:12 2015
+tor@xxxxxxx, 0x3d.lu, DE, Germany, Europe, TRUE, FALSE, No, http://tor.0x3d.lu/, https://tor.0x3d.lu/, , , http://tor.0x3d.lu/dist/, https://tor.0x3d.lu/dist/, , , Wed Jul 15 18:49:12 2015
+kraai@xxxxxxxxx 0xADCE6065, , SE, Sweden, Europe, TRUE, TRUE, No, http://tor.ftbfs.org/, , , , http://tor.ftbfs.org/dist/, , , , Fri Oct 24 08:28:32 2014
+kontakt@xxxxxxxxxxxxxxxx, UnicornCloud.org, 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, , , Mon Mar 16 15:53:03 2015
+James Murphy, intfxdx.com, US, United States, US, TRUE, TRUE, No, http://108.248.87.242/, https://108.248.87.242/, , , http://108.248.87.242/dist/, https://108.248.87.242/dist/, , , Wed Jul 15 18:49:12 2015
+Sam Whited 4096R/54083AE104EA7AD3 <sam@xxxxxxxxxxxxx>, SamWhited.com, US, GA, United States, TRUE, TRUE, FALSE, http://mirrors.samwhited.net/tor, https://mirrors.samwhited.net/tor, rsync://mirrors.samwhited.net/tor, , http://mirrors.samwhited.net/tor/dist, https://mirrors.samwhited.net/tor/dist, rsync://mirrors.samwhited.net/tor-dist, , Wed Jul 15 18:49:12 2015
+rohit008 AT e DOT ntu DOT edu DOT sg, NTUOSS, SG, Singapore, Asia, TRUE, FALSE, No, http://torproject.ntuoss.com/, , , , http://torproject.ntuoss.com/dist/, , , , Mon Mar 16 15:53:03 2015
+jvictors at jessevictors dot com, Department of CS at USU, US, United States, North America, TRUE, FALSE, No, http://tor-relay.cs.usu.edu/mirrors/torproject.org/, https://www.jessevictors.com/secureMirrors/torproject.org/, , , http://tor-relay.cs.usu.edu/mirrors/torproject.org/dist/, https://www.jessevictors.com/secureMirrors/torproject.org/dist/, , , Wed Jul 15 18:49:12 2015
+Jacob Henner, Anatomical Networks, US, United States, US, TRUE, TRUE, TRUE, http://tor.ventricle.us/, , , , http://tor.ventricle.us/dist/, , , , Tue Jan 20 16:17:52 2015
+hostmaster@xxxxxxxxxxxxxxxxx, Lucid Networks, US, United States, US, TRUE, FALSE, No, http://tor.mirrors.lucidnetworks.net, , rsync://tor.mirrors.lucidnetworks.net::tor, , http://tor.mirrors.lucidnetworks.net/dist, , rsync://tor.mirrors.lucidnetworks.net::tor-dist, , Wed Jul 15 18:49:12 2015
+hostmaster@xxxxxxxxxxxxxxx, mirror-server.de, DE, Germany, DE, TRUE, TRUE, No, http://tor.mirror-server.de/, , , , http://tor.mirror-server.de/dist/, , , , Tue Jan 20 16:17:52 2015
+mirror ntzk de, Netzkonstrukt Berlin, DE, Germany, Europe, TRUE, FALSE, No, http://mirror.ntzk.de/torproject.org/, https://mirror.ntzk.de/torproject.org/, , , http://mirror.ntzk.de/torproject.org/dist/, https://mirror.ntzk.de/torproject.org/dist/, , , Wed Jul 15 18:49:12 2015
+mirror@xxxxxxxxxxxx, Xfree.com.ar, AR, Argentina, South America, TRUE, FALSE, No, http://tor.xfree.com.ar/, , , , http://tor.xfree.com.ar/dist/, , , , Wed Jul 15 18:49:12 2015
+tor AT eprci NET, EPRCI, US, NH, US, TRUE, FALSE, No, http://tor.eprci.net/, https://www.eprci.com/tor/, , , http://tor.eprci.net/dist/, https://www.eprci.com/tor/dist/, , , Wed Jul 15 18:49:12 2015
+tor@xxxxxxx, KURA IO LIMITED, NL, Netherlands, Europe, TRUE, TRUE, TRUE, http://tor-mirror.kura.io/, https://tor-mirror.kura.io/, rsync://tor-mirror.kura.io/torproject.org, ftp://tor-mirror.kura.io, http://tor-mirror.kura.io/dist/, https://tor-mirror.kura.io/dist/, rsync://tor-mirror.kura.io/torproject.org/dist, , Thu Jan 22 16:27:59 2015
+tor-admin AT wardsback DOT org, wardsback.org, FR, France, FR, TRUE, FALSE, No, http://alliumcepa.wardsback.org/, , , , http://alliumcepa.wardsback.org/dist/, , , , Wed Jul 15 18:49:12 2015
+PW, PW, DE, Germany, DE, TRUE, TRUE, NO, http://tor.pw.is/, https://www.it-sicherheitschannel.de/, , , http://tor.pw.is/dist/, https://www.it-sicherheitschannel.de/dist/, , , Wed Jul 15 18:49:12 2015
+kevin@xxxxxxxxxxxxx, Freedom of the Press Foundation, , US, US, True, False, No, http://tor.freedom.press, https://tor.freedom.press, , , http://tor.freedom.press/dist/, https://tor.freedom.press/dist/, , ,
+hsu AT peterdavehellor DOT org, Department of CSE. Yuan Ze University, TW, Taiwan, Asia, TRUE, FALSE, No, http://ftp.yzu.edu.tw/torproject.org/, , rsync://ftp.yzu.edu.tw/pub/torproject.org/, ftp://ftp.yzu.edu.tw/torproject.org/, http://ftp.yzu.edu.tw/torproject.org/dist/, , rsync://ftp.yzu.edu.tw/pub/torproject.org/dist/, , Wed Jul 15 18:49:12 2015
+tormirror at sybec.net <mailto:tormirror at sybec.net>, Sybec Services Ltd., DE, Germany, DE, TRUE, FALSE, FALSE, http://tormirror.sybec.net:8080/ <http://tormirror.sybec.net:8080/>, , , , http://tormirror.sybec.net:8080/dist/ <http://tormirror.sybec.net:8080/dist/>, , , ,
+tor at tvdw dot eu, TvdW, XX, Around the world, XX, TRUE, TRUE, Yes, http://tor-exit.network, , , , http://tor-exit.network/dist, , , , Wed Jul 15 18:49:12 2015
+spiderfly AT protonmail DOT com, Tor Supporter, FR, France, FR, TRUE, FALSE, No, http://onionphysics.com, , , , http://onionphysics.com/dist/, , , , Wed Jul 15 18:49:12 2015
+ops at hoovism.com, Matthew Hoover, US, NJ, US, TRUE, TRUE, No, http://tor.hoovism.com/, https://tor.hoovism.com/, rsync://tor.hoovism.com/tor/, , http://tor.hoovism.com/dist/, https://tor.hoovism.com/dist/, rsync://tor.hoovism.com/tor/dist/, http://bt3ehg7prnlm6tyv.onion/, Wed Jul 15 18:49:12 2015
+tormaster AT urown DOT net, urown.net, CH, Switzerland, Europe, TRUE, TRUE, No, http://torproject.urown.net/, https://torproject.urown.net/, , , http://torproject.urown.net/dist/, https://torproject.urown.net/dist/, , http://torprowdd64ytmyk.onion, Wed Jul 15 18:49:12 2015
+Stefan, sela Internet, DE, Germany, DE, TRUE, TRUE, No, http://sela.io/mirrors/torproject.org/, https://sela.io/mirrors/torproject.org/, , , http://sela.io/mirrors/torproject.org/dist/, https://sela.io/mirrors/torproject.org/dist/, , , Wed Jul 15 18:49:12 2015
+justaguy AT justaguy DOT pw, Justaguy, NL, The Netherlands, NL, True, False, No, http://services.justaguy.pw/, https://services.justaguy.pw/, , , http://services.justaguy.pw/dist, https://services.justaguy.pw/dist, , http://3qzbcsjhwseov7k4.onion, Wed Jul 15 18:49:12 2015
+thomaswhite AT riseup DOT net, TheCthulhu, NL, The Netherlands, NL, True, False, No, http://tor.thecthulhu.com/, https://tor.thecthulhu.com/, , , http://tor.thecthulhu.com/dist/, https://tor.thecthulhu.com/dist/, , , Wed Jul 15 18:49:12 2015
+rush23 AT gmx DOT net, Tor Supporter, DE, Germany, Europe, TRUE, FALSE, No, http://tor-proxy.euve59946.serverprofi24.de/, , , , http://tor-proxy.euve59946.serverprofi24.de/dist/, , , , Thu Jun 4 19:06:42 2015
+webmaster AT ccc DOT de, CCC, NL, The Netherlands, Europe, TRUE, FALSE, No, http://tor.ccc.de/, https://tor.ccc.de, , , http://tor.ccc.de/dist/, https://tor.ccc.de/dist/, , , Wed Jul 15 18:49:12 2015
+mitchell AT lcsks DOT com, CCC, US, United States, US, TRUE, FALSE, No, http://mirror.lcsks.com, , , , , , , ,
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits