Lorsqu'une connexion est établie, le buildProtocol d'une fabrique est appelé pour créer une nouvelle instance de protocole pour gérer cette connexion. buildProtocol est passé l'adresse de l'homologue qui a établi la connexion et buildProtocol peut renvoyer None pour que la connexion soit immédiatement fermée.
Ainsi, par exemple, vous pouvez écrire une usine comme ceci:
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
Et seules les connexions locales seront traitées (mais toutes les connexions, sera accepté initialement puisque vous devez les accepter d'apprendre ce que les pairs L'adresse est).
Vous pouvez l'appliquer à l'usine que vous utilisez pour traiter les ressources XML-RPC. Il suffit de sous-classer cette fabrique et d'ajouter une logique comme celle-ci (ou vous pouvez faire un wrapper au lieu d'une sous-classe). Toutefois, iptables ou un autre pare-feu de plate-forme est également une bonne idée pour certains cas. Avec cette approche, votre processus n'a même jamais besoin de voir la tentative de connexion.
+1 en effet, c'est le meilleur endroit pour appliquer le chèque. Merci. – nosklo