【问题标题】:createResolver() in twisted not working扭曲中的createResolver()不起作用
【发布时间】:2016-08-26 14:21:11
【问题描述】:

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

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

每当我运行这个脚本时,它都会超时并且不起作用。谁能告诉我我做错了什么?谢谢!!

【问题讨论】:

标签: python dns twisted reverse-proxy hosts


【解决方案1】:

createResolver() 在twisted 中不起作用

您需要传入您希望它读取的主机文件,并且您需要确保它是可读的,即它在哪里/root/example 意味着您需要以root 身份运行才能读取它。您不需要重写该方法。我明天安装试试看。

创建一个文件/tmp/example,其中包含一个条目,即我使用过

127.0.0.6 twistfoo.com

这是工作代码

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

在命令行上运行,你会看到输出

127.0.0.6

【讨论】:

  • 所以脚本看起来像这样吗? (编辑了我的问题)
  • 每次我回答您的问题时,您都会将其更改为其他内容,而忽略我实际所说的话。请阅读此内容...meta.stackoverflow.com/questions/252113/…
  • 对不起,我不是想把它改成别的东西,我是新来的,我不知道如何实际覆盖`createResolver()`
  • 我提供的代码对我有用,它创建了一个读取本地文件的解析器。
  • 谢谢你真的很好用!!你说得对,我需要做很多关于扭曲的研究。那么https://www.twistedmatrix.com 站点会是获取最多信息的站点,还是您知道的另一个站点?
猜你喜欢
  • 2016-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-30
  • 1970-01-01
  • 2020-02-08
相关资源
最近更新 更多