XMLRPCサーバーへのアクセスをIPアドレスで制限する最も良い方法は何ですか? web/twcgi.pyのCGIScriptクラスがリクエストにアクセスするレンダリングメソッドを持っているのを見ていますが、私のサーバでこのリクエストにアクセスする方法がわかりません。私はtwcgi.pyをパッチして環境変数を設定し、次にサーバーに環境変数にアクセスする例を見ましたが、より良い解決策が必要だと私は思いました。Python Twisted:IPアドレスによるアクセス制限
ありがとうございました。
XMLRPCサーバーへのアクセスをIPアドレスで制限する最も良い方法は何ですか? web/twcgi.pyのCGIScriptクラスがリクエストにアクセスするレンダリングメソッドを持っているのを見ていますが、私のサーバでこのリクエストにアクセスする方法がわかりません。私はtwcgi.pyをパッチして環境変数を設定し、次にサーバーに環境変数にアクセスする例を見ましたが、より良い解決策が必要だと私は思いました。Python Twisted:IPアドレスによるアクセス制限
ありがとうございました。
接続が確立されると、ファクトリの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や他のプラットフォームのファイアウォールも、場合によっては良い考えです。このアプローチでは、プロセスは接続の試行を見る必要がありません。
私は窓でファイアウォールを使用したい、またはLinuxでiptables
を使用します。
iptablesはIPをロックアウトするためのオプションですが、特定のIPに特定のメソッドを許可するようなカスタムを実行したいと考えています。 – sberry
さて、別の答えは、任意のプロトコルの内部で、輸送からIPアドレスを取得することです:
d =
self.transport.getHost
() ; print d.type, d.host, d.port
次に、あなたが望む任意の方法でそれをフィルタリングするために値を使用します。
+1実際には、小切手を適用するのに最適な場所です。ありがとう。 – nosklo