def respond_bind(message_id): res = BindResponse() res['resultCode'] = ResultCode('success') res['matchedDN'] = '' res['diagnosticMessage'] = '' msg = LDAPMessage() msg['messageID'] = MessageID(message_id) msg['protocolOp'] = ProtocolOp().setComponentByName('bindResponse', res) return msg
def respond_search_done(message_id): res = SearchResultDone() res['resultCode'] = ResultCode('success') res['matchedDN'] = '' res['diagnosticMessage'] = '' msg = LDAPMessage() msg['messageID'] = MessageID(message_id) msg['protocolOp'] = ProtocolOp().setComponentByName('searchResDone', res) return msg
def encapsulate_ldap_message(message_id, obj_name, obj, controls=None): ldap_message = LDAPMessage() ldap_message['messageID'] = MessageID(message_id) ldap_message['protocolOp'] = ProtocolOp().setComponentByName(obj_name, obj) msg_controls = build_controls_list(controls) if msg_controls: ldap_message['controls'] = msg_controls return ldap_message
def bind(message_id, name, password): req = BindRequest() req['version'] = Version(3) req['name'] = name req['authentication'] = \ AuthenticationChoice().setComponentByName('simple', Simple(password)) msg = LDAPMessage() msg['messageID'] = MessageID(message_id) msg['protocolOp'] = ProtocolOp().setComponentByName('bindRequest', req) return msg
def produce_response(self, connection_id): message_id = min(self.ready_to_send.keys()) logging.debug('SERVER: processing response ' + message_id) if message_id in self.ready_to_send: ldap_message = LDAPMessage() ldap_message['messageID'] = MessageID(message_id) ldap_message['protocolOp'] = self.ready_to_send.pop(message_id) encoded_message = encoder.encode(ldap_message) with self.lock: return encoded_message else: raise LDAPExceptionError('response not ready in mock server')
def respond_search_entry(message_id, name, attributes): res = SearchResultEntry() res['object'] = LDAPDN(name) res['attributes'] = PartialAttributeList() for i, (k, v) in enumerate(attributes.items()): res['attributes'][i] = PartialAttribute() res['attributes'][i]['type'] = AttributeDescription(k) res['attributes'][i]['vals'] = Vals() res['attributes'][i]['vals'][0] = AttributeValue(v) msg = LDAPMessage() msg['messageID'] = MessageID(message_id) msg['protocolOp'] = ProtocolOp().setComponentByName('searchResEntry', res) return msg
def build_ldap_message(message_id, response_type, response, controls=None): # LDAPMessage ::= SEQUENCE { # messageID MessageID, # protocolOp CHOICE { # bindRequest BindRequest, # bindResponse BindResponse, # unbindRequest UnbindRequest, # searchRequest SearchRequest, # searchResEntry SearchResultEntry, # searchResDone SearchResultDone, # searchResRef SearchResultReference, # modifyRequest ModifyRequest, # modifyResponse ModifyResponse, # addRequest AddRequest, # addResponse AddResponse, # delRequest DelRequest, # delResponse DelResponse, # modDNRequest ModifyDNRequest, # modDNResponse ModifyDNResponse, # compareRequest CompareRequest, # compareResponse CompareResponse, # abandonRequest AbandonRequest, # extendedReq ExtendedRequest, # extendedResp ExtendedResponse, # ..., # intermediateResponse IntermediateResponse }, # controls [0] Controls OPTIONAL } ldap_message = LDAPMessage() ldap_message['messageID'] = MessageID(message_id) ldap_message['protocolOp'] = ProtocolOp().setComponentByName( response_type, response) message_controls = build_controls_list(controls) if message_controls is not None: ldap_message['controls'] = message_controls return ldap_message