Home | Trees | Indices | Help |
|
---|
|
1 """LDAP protocol proxy server""" 2 3 from twisted.internet import reactor, defer 4 from ldaptor.protocols.ldap import ldapserver, ldapconnector, ldapclient 5 from ldaptor.protocols import pureldap 68 protocol = ldapclient.LDAPClient 9 10 client = None 11 waitingConnect = [] 12 unbound = False 1394 95 if __name__ == '__main__': 96 """ 97 Demonstration LDAP proxy; passes all requests to localhost:389. 98 """ 99 from twisted.internet import protocol 100 from twisted.python import log 101 import sys 102 log.startLogging(sys.stderr) 103 104 factory = protocol.ServerFactory() 105 factory.protocol = lambda : Proxy(overrides={ 106 '': ('localhost', 389), 107 }) 108 reactor.listenTCP(10389, factory) 109 reactor.run() 11015 """ 16 Initialize the object. 17 18 @param config: The configuration. 19 @type config: ldaptor.interfaces.ILDAPConfig 20 """ 21 ldapserver.BaseLDAPServer.__init__(self) 22 self.config = config2325 if self.client is None: 26 d = defer.Deferred() 27 self.waitingConnect.append((d, fn, a, kw)) 28 return d 29 else: 30 return defer.maybeDeferred(fn, *a, **kw)3133 self.client = proto 34 while self.waitingConnect: 35 d, fn, a, kw = self.waitingConnect.pop(0) 36 d2 = defer.maybeDeferred(fn, *a, **kw) 37 d2.chainDeferred(d)3840 # TODO controls 41 if request.needs_answer: 42 d = self.client.send_multiResponse(request, self._gotResponse, reply) 43 # TODO handle d errbacks 44 else: 45 self.client.send_noResponse(request)4648 reply(response) 49 50 # TODO this is ugly 51 return isinstance(response, ( 52 pureldap.LDAPSearchResultDone, 53 pureldap.LDAPBindResponse, 54 ))55 5961 clientCreator = ldapconnector.LDAPClientCreator( 62 reactor, self.protocol) 63 d = clientCreator.connect( 64 dn='', 65 overrides=self.config.getServiceLocationOverrides()) 66 d.addCallback(self._cbConnectionMade) 67 d.addErrback(self._failConnection) 68 69 ldapserver.BaseLDAPServer.connectionMade(self)7072 assert self.client is not None 73 if self.client.connected: 74 if not self.unbound: 75 self.client.unbind() 76 self.unbound = True 77 else: 78 self.client.transport.loseConnection() 79 self.client = None 80 ldapserver.BaseLDAPServer.connectionLost(self, reason)81 85 90
Home | Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1 on Mon Mar 24 14:29:55 2014 | http://epydoc.sourceforge.net |