Skip to content

Instantly share code, notes, and snippets.

@shuckc
Last active September 30, 2015 19:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shuckc/af7490e1c4a2652ca740 to your computer and use it in GitHub Desktop.
Save shuckc/af7490e1c4a2652ca740 to your computer and use it in GitHub Desktop.
import sys, os
from twisted.python.runtime import platform
from twisted.python import log
from twisted.names import root, resolve, cache, client
from twisted.internet import utils
def parseIpconfigDNSServers(output):
servers = []
found = False
for line in output.split('\n'):
if 'DNS Servers . . . . . . . . . . . :' in line or (found and not '. . . .' in line):
servers.append(line[38:].strip())
found = True
else:
found = False
log.msg( 'Windows: Detected DNS servers %s' % (str(servers)))
return servers
def patchWindowsDNS():
if platform.getType() != 'posix':
d = utils.getProcessOutput(os.path.join(os.environ['WINDIR'], 'system32', 'ipconfig.exe'), ["/all"])
d.addCallback(parseIpconfigDNSServers)
d.addCallback(lambda r: client.Resolver(servers=[(h, 53) for h in r]))
d.addErrback(log.msg)
theResolver = root.DeferredResolver(d)
client.theResolver = resolve.ResolverChain([cache.CacheResolver(), theResolver])
if __name__ == '__main__':
log.startLogging(sys.stdout)
def do_lookup(domain):
d = client.getHostByName(domain)
d.addBoth(log.msg)
patchWindowsDNS()
from twisted.internet import reactor
reactor.callLater(0, do_lookup, 'example.com')
reactor.run()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment