Skip to content

Instantly share code, notes, and snippets.

@Kami
Created December 4, 2010 01:57
Show Gist options
  • Select an option

  • Save Kami/727830 to your computer and use it in GitHub Desktop.

Select an option

Save Kami/727830 to your computer and use it in GitHub Desktop.
service
import os
from twisted.application import service, internet
from twisted.names import dns
from twisted.names import server
from names_test import TestResolver
import names_test
def getService():
ca, cl = [], []
cl.append(TestResolver())
f = server.DNSServerFactory([], ca, cl, 1)
p = dns.DNSDatagramProtocol(f)
f.noisy = 0
ret = service.MultiService()
for (klass, arg) in [(internet.TCPServer, f), (internet.UDPServer, p)]:
s = klass(5555, arg)
s.setServiceParent(ret)
return ret
application = service.Application("names test")
service = getService()
service.setServiceParent(application)
from twisted.names import common, dns
from twisted.python import failure
from twisted.internet import defer
class TestResolver(common.ResolverBase):
def __init__(self, ttl = 300):
common.ResolverBase.__init__(self)
self.ttl = ttl
def _fail(self, name):
return defer.fail(failure.Failure(dns.DomainError(name)))
def lookupZone(self, name, timeout = None):
records = []
soa = dns.RRHeader(name='foo', type=dns.SOA, cls=dns.IN, ttl=86400, auth=False,
payload=dns.Record_SOA(mname='foo',
rname='bar',
serial=100,
refresh=10,
retry=10,
expire=2000,
minimum=100,
ttl=100))
records.append(soa)
for i in range(0, 2800):
dname = '%s-%s.%s' % ('foo', i, 'bar.test')
record = dns.RRHeader(dname, dns.A, dns.IN, self.ttl,
dns.Record_A('127.0.0.1', 300))
records.append(record)
records.append(soa)
return defer.succeed([
records, (), ()
])
dig @127.0.0.1 -p 5555 foo.bar axfr
;; Warning: query response not set
;; Got bad packet: bad label type
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment