Example #1
0
def run():
    global log
    parseOpts()
    logger.create_logger("torcheck",
            level  = logger.NOTICE, 
            stdout = True, 
            file   = config['log_file'],
            )
    log = logger.get_logger("torcheck")

    update_elist()

    reactor.listenTCP(config['listen_port'],
                      server.Site(WebResource(
                          use_forwarded_header=config['use_forwarded_header']
                      )), interface=config['listen_address'])
    try:
        log.debug("Loaded Twisted server (exit list has %d routers).", len(elist.cache_id))
        reactor.run()
    finally:
        log.notice("Exiting...")
        if update_timer: update_timer.cancel()
Example #2
0
from datetime import datetime
from calendar import timegm

from zope.interface import implements
from twisted.names import server, dns, common, error
from twisted.internet import reactor, interfaces, defer
from twisted.python import failure

from torbel.dnsel import config
from torbel.query import ExitList
from torbel.utils import *
from torbel import logger

from ipaddr import IPAddress

log = logger.create_logger("tordnsel", logger.DEBUG)

nxdomain = error.DomainError

class TorDNSServerFactory(server.DNSServerFactory):
    def __init__(self, zone, filename, status, *args, **kwargs):
        server.DNSServerFactory.__init__(self, *args, **kwargs)
        self.el = ExitList(filename, status)

        if self.el.stale:
            log.info("Export %s likely stale.", filename)

        # Set up updates.
        nextUpdate = timegm(self.el.next_update.timetuple()) - time.time()
        if nextUpdate > 0:
            log.debug("Scheduling first update in %.1f seconds.", nextUpdate)
Example #3
0
import socket, struct, signal, errno
import time, random
import threading

from TorCtl import TorCtl

from twisted.internet import error, defer
from twisted.names import client

from torbel import logger, controller
from torbel.utils import config_check, ConfigurationError
from torbel.query import ExitList
from ipaddr import IPAddress

config = controller.config
log = logger.create_logger("torbelTests", config.log_level)
# HACK FIXME create reactor per-application
reactor = controller.reactor

dnsel_zone = "exitlist.torproject.org"
local_zone = "dnsel.torproject.org"

match = 0
mismatch = 0

# TorDNSEL vs. TorBEL consistency checker.
#
# The consistency checker updates to the latest TorBEL export
# available on the local system and expects a local TorBEL
# implementation of the DNSEL to be running.  The checker takes a list
# of IP addresses, generated from addresses outside of the Tor network