什么是限制IP地址访问我的XMLRPC服务器的最佳方法?我看到web/twcgi.py中的类CGIScript有一个访问请求的render方法......但我不知道如何在我的服务器中访问此请求.我看到一个例子,有人修补twcgi.py来设置环境变量,然后在服务器中访问环境变量...但我认为必须有一个更好的解决方案.
谢谢.
建立连接后,将调用工厂的buildProtocol来创建新的协议实例来处理该连接.buildProtocol传递建立连接的对等体的地址,buildProtocol可以返回None以立即关闭连接.
因此,例如,您可以编写这样的工厂:
from twisted.internet.protocol import ServerFactory class LocalOnlyFactory(ServerFactory): def buildProtocol(self, addr): if addr.host == "127.0.0.1": return ServerFactory.buildProtocol(self, addr) return None
并且只处理本地连接(但是最初仍然会接受所有连接,因为您必须接受它们以了解对等地址是什么).
您可以将其应用于您用于提供XML-RPC资源的工厂.只需将该工厂子类化并添加这样的逻辑(或者您可以执行包装而不是子类).
不过,在某些情况下,iptables或其他平台防火墙也是一个好主意.通过这种方法,您的流程甚至不必看到连接尝试.