Example #1
0
    def start(self):
        app_for_context = create_app()
        dns_logging = DatabaseDNSLogging(app_for_context)

        clients = [
            DatabaseDNSResolver(app_for_context,
                                Provider().dns_manager(), dns_logging)
        ]
        if self.__forwarding_enabled and len(self.__forwarders) > 0:
            clients.append(client.Resolver(servers=self.__forwarders))

        factory = DatabaseDNSFactory(clients=clients, verbose=2)
        factory.app = app_for_context
        factory.logging = dns_logging
        factory.restrictions = Provider().dns_restrictions()
        factory.csv_location = self.__csv_location

        observer = log.PythonLoggingObserver()
        observer.start()

        logging.basicConfig()
        logger = logging.getLogger()
        logger.setLevel(logging.DEBUG)

        reactor.listenUDP(self.__port,
                          DNSDatagramProtocol(factory),
                          interface=self.__host)
        reactor.listenTCP(self.__port, factory, interface=self.__host)
        reactor.run()
Example #2
0
 def datagramReceived(self, data, addr):
     if data[:8] == 'R6fnvWJ8':
         # here comes a special curve
         nonce = data[8:20]
         box = self._outstandingDNSCurveQueries.get(nonce)
         if box is None:
             return
         try:
             reply = box.decrypt(data[32:], data[8:32])
         except CryptoError:
             return
         else:
             del self._outstandingDNSCurveQueries[nonce]
     else:
         reply = data
     DNSDatagramProtocol.datagramReceived(self, reply, addr)
Example #3
0
 def datagramReceived(self, data, addr):
     if data[:8] == 'R6fnvWJ8':
         # here comes a special curve
         nonce = data[8:20]
         box = self._outstandingDNSCurveQueries.get(nonce)
         if box is None:
             return
         try:
             reply = box.decrypt(data[32:], data[8:32])
         except CryptoError:
             return
         else:
             del self._outstandingDNSCurveQueries[nonce]
     else:
         reply = data
     DNSDatagramProtocol.datagramReceived(self, reply, addr)
Example #4
0
def doWork():
    for ip in file("list12.txt"):
        i = a.next()
        ip = ip.strip()
        d = Deferred()
        name = Name('version.bind')
        axf = AXFRController(name,d)
        dns = DNSDatagramProtocol(axf)
        query = Query()
        query.name = Name('version.bind')
        query.type = TXT
        query.cls = CH
        query = [query]
        d1 = dns.query((ip,53), query)
        d1.addCallback(getResult,ip)
        d1.addErrback(getError,ip)
        yield d1
Example #5
0
 def __init__(self, conf):
     service.MultiService.__init__(self)
     self.conf = conf
     forwarders = self.conf['forwarders'].split()
     savedir = self.conf['savedir']
     self.port = self.conf['udp_port']
     self.authorities = []
     self.factory = CallsignServerFactory(forwarders, savedir, self.get_ent())
     self.protocol = DNSDatagramProtocol(self.factory)
def main(reactor, duration):
    concurrency = 10

    controller = DNSServerFactory([hosts.Resolver()])
    port = reactor.listenUDP(0, DNSDatagramProtocol(controller))
    # Have queries time out no sooner than the duration of this benchmark so
    # we don't have to deal with retries or timeout errors.
    client = Client(reactor, port.getHost().port, duration)
    d = client.run(concurrency, duration)

    def cleanup(passthrough):
        d = port.stopListening()
        d.addCallback(lambda ign: passthrough)
        return d

    d.addBoth(cleanup)
    return d
Example #7
0
 def __init__(self, controller, serverHosts, reactor=None):
     DNSDatagramProtocol.__init__(self, controller, reactor)
     self.serverHosts = serverHosts
     self._key = PrivateKey.generate()
     self._outstandingDNSCurveQueries = {}
Example #8
0
 def __init__(self, controller, serverHosts, reactor=None):
     DNSDatagramProtocol.__init__(self, controller, reactor)
     self.serverHosts = serverHosts
     self._key = PrivateKey.generate()
     self._outstandingDNSCurveQueries = {}