createResolver()在扭曲不起作用 [英] createResolver() in twisted not working

查看:162
本文介绍了createResolver()在扭曲不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个简单的代理脚本,我使用 installResolver 函数来选择脚本读取其主机文件的位置:

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

def createResolver(servers = None,resolvconf = None,hosts = None):
如果platform.getType()=='posix':
如果resolvconf为无:
resolvconf = b'/ etc / resolv.conf'
如果主机为None:
hosts = b'/ root / example'
theResolver = Resolver(resolvconf,servers)
hostResolver = hostsModule.Resolver(hosts)
else:
如果主机为None:
hosts = r'c:\windows\hosts'
from twisted.internet import反应堆
bootstrap = _ThreadedResolverImpl(reactor)
hostResolver = hostsModule.Resolver(hosts)
theReso lver = 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()

每当我运行这个脚本,它只是超时,不工作。有人会告诉我我在做错什么吗?谢谢!!

解决方案


createResolver()扭曲不起作用


你需要传入你想要阅读的hosts文件,你需要确保它是可读的,即它在哪里 / root /例如意味着您需要以root身份运行才能读取它。您不需要覆盖该方法。我明天会安装它,尝试一下。



创建一个文件 / tmp / example 即我使用

  127.0.0.6 twistfoo.com 

这是工作代码

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

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

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

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

在命令行上运行,您将看到输出

  127.0.0.6 


I have a simple proxy script where I use installResolver function to choose where the script reads its hosts file:

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()

Whenever I run this script, It just times out and doesn't work. Could anybody tell me what it is I'm doing wrong? thanks!!

解决方案

createResolver() in twisted not working

You need to pass in the hosts file you want it to read and you need to make sure that it's readable ie where it is /root/example means you need to be running as root to read it. You don't need to override the method. I'll install it tomorrow and try it.

Create a file /tmp/example with an entry in it ie I used

127.0.0.6 twistfoo.com

This is working code

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()

Run this on command line and you will see the output

127.0.0.6

这篇关于createResolver()在扭曲不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆