2016-05-01 1 views
1

J'ai un script simple proxy où j'utilise installResolver fonction pour choisir l'endroit où le script lit son fichier hosts:createResolver() dans torsadé ne fonctionne pas

from twisted.internet import reactor 
from twisted.web import proxy, server 
from twisted.python import log 
from twisted.names import client 

def createResolver(servers=None, resolvconf=None, hosts=None): 
    if platform.getType() == 'posix': 
     if resolvconf is None: 
      resolvconf = b'/etc/resolv.conf' 
     if hosts is None: 
      hosts = b'/root/example' 
     theResolver = Resolver(resolvconf, servers) 
     hostResolver = hostsModule.Resolver(hosts) 
    else: 
     if hosts is None: 
      hosts = r'c:\windows\hosts' 
     from twisted.internet import reactor 
     bootstrap = _ThreadedResolverImpl(reactor) 
     hostResolver = hostsModule.Resolver(hosts) 
     theResolver = root.bootstrap(bootstrap, resolverFactory=Resolver) 

    L = [hostResolver, cache.CacheResolver(), theResolver] 
    return resolve.ResolverChain(L) 

site = server.Site(proxy.ReverseProxyResource('www.example.com', 80, ''.encode("utf-8"))) 
reactor.listenTCP(80, site) 
reactor.run() 

Chaque fois que je lance ce script, il vient de fois sur et doesn ne fonctionne pas. Quelqu'un pourrait-il me dire ce que je fais mal? Merci!!

+0

Chaque fois que je réponds à votre question, vous la changez en quelque chose d'autre et ignorez ce que j'ai réellement dit. s'il vous plaît lire ceci ... http://meta.stackoverflow.com/questions/252113/how-to-deal-with-constant-changing-questions – Harry

Répondre

1

createResolver() dans torsadé ne fonctionne pas

Vous devez passer les hôtes vous déposer voulez lire et vous devez vous assurer qu'il est lisible à-dire où il est /root/example signifie que vous devez courir en tant que root pour le lire. Vous n'avez pas besoin de remplacer la méthode. Je vais l'installer demain et l'essayer.

Créez un fichier /tmp/example avec une entrée dans ce à dire que j'utilisé

127.0.0.6 twistfoo.com 

C'est le code de travail

from twisted.names import client 
from twisted.internet import reactor 

def do_lookup(domain): 
    hosts = "/tmp/example" 
    resolver = client.createResolver(servers=None, resolvconf=None, hosts="/tmp/example") 
    d = resolver.getHostByName(domain) 
    d.addBoth(lookup_done) 

def lookup_done(result): 
    print(result) 
    reactor.stop() 

domain = b'twistfoo.com' 
reactor.callLater(0, do_lookup, domain) 
reactor.run() 

exécuter sur la ligne de commande et vous verrez la sortie

127.0.0.6 
+0

Ainsi le script ressemblerait-il à quelque chose comme ça? (édité ma question) – Cristian

+0

Chaque fois que je réponds à ta question, tu la modifies à autre chose et j'ignore ce que j'ai réellement dit. s'il vous plaît lire ceci ... http://meta.stackoverflow.com/questions/252113/how-to-deal-with-constant-changing-questions – Harry

+0

désolé je ne cherche pas à le changer à autre chose, je suis nouveau à tordu et je ne suis pas sûr comment réellement surcharger »createResolver()' – Cristian