def _get_bytes_ldapobject(self, explicit=True): if explicit: kwargs = {'bytes_mode': True} else: kwargs = {} l = LDAPObject(server.get_url(), **kwargs) l.protocol_version = 3 l.set_option(ldap.OPT_REFERRALS, 0) l.simple_bind_s(self.server.get_root_dn().encode('utf-8'), self.server.get_root_password().encode('utf-8')) return l
def _get_bytes_ldapobject(self, explicit=True): if explicit: kwargs = {'bytes_mode': True} else: kwargs = {} l = LDAPObject(server.get_url(), **kwargs) l.protocol_version = 3 l.set_option(ldap.OPT_REFERRALS,0) l.simple_bind_s(self.server.get_root_dn().encode('utf-8'), self.server.get_root_password().encode('utf-8')) return l
def setUp(self): global server if server is None: server = SlapdObject() server.start() base = server.suffix suffix_dc = base.split(',')[0][3:] # insert some Foo* objects via ldapadd server.ldapadd("\n".join([ 'dn: ' + server.suffix, 'objectClass: dcObject', 'objectClass: organization', 'dc: ' + suffix_dc, 'o: ' + suffix_dc, '', 'dn: ' + server.root_dn, 'objectClass: applicationProcess', 'cn: ' + server.root_cn, '', "dn: cn=Foo1," + base, "objectClass: organizationalRole", "cn: Foo1", "", "dn: cn=Foo2," + base, "objectClass: organizationalRole", "cn: Foo2", "", "dn: cn=Foo3," + base, "objectClass: organizationalRole", "cn: Foo3", "", "dn: ou=Container," + base, "objectClass: organizationalUnit", "ou: Container", "", "dn: cn=Foo4,ou=Container," + base, "objectClass: organizationalRole", "cn: Foo4", "", ]) + "\n") l = LDAPObject(server.ldap_uri, bytes_mode=False) l.protocol_version = 3 l.set_option(ldap.OPT_REFERRALS, 0) l.simple_bind_s(server.root_dn, server.root_pw) self.ldap = l self.server = server
class Add(object): ''' Description: -------------------------------------------------------- Add a user to a group -------------------------------------------------------- ''' def __init__(self, server, user_email, password, dc, port = 389): self.dc = dc self.server = server self.port = port self.user_email = user_email self.pwd = password self.logger = logging.getLogger("ADQueryLogger") self.uri = 'ldap://' + self.server + ':' + str(self.port) def __connect(self): self.ldap_obj = LDAPObject(self.uri) self.ldap_obj.protocol_version = ldap.VERSION3 self.ldap_obj.set_option(ldap.OPT_REFERRALS,0) self.ldap_obj.simple_bind_s(self.user_email, self.pwd) def __disconnect(self): self.ldap_obj.unbind_ext_s() def add_group(self, gp_dn, user_dn): self.__connect() attrib = ([(ldap.MOD_ADD,'member', user_dn)]) success = False print type(gp_dn), gp_dn print type(user_dn), user_dn try: self.ldap_obj.modify_s(gp_dn, attrib) success = True except Exception, e: print e finally:
def setUp(self): global server if server is None: server = slapd.Slapd() server.start() base = server.get_dn_suffix() # insert some Foo* objects via ldapadd server.ldapadd("\n".join([ "dn: cn=Foo1,"+base, "objectClass: organizationalRole", "cn: Foo1", "", "dn: cn=Foo2,"+base, "objectClass: organizationalRole", "cn: Foo2", "", "dn: cn=Foo3,"+base, "objectClass: organizationalRole", "cn: Foo3", "", "dn: ou=Container,"+base, "objectClass: organizationalUnit", "ou: Container", "", "dn: cn=Foo4,ou=Container,"+base, "objectClass: organizationalRole", "cn: Foo4", "", ])+"\n") l = LDAPObject(server.get_url()) l.protocol_version = 3 l.set_option(ldap.OPT_REFERRALS,0) l.simple_bind_s(server.get_root_dn(), server.get_root_password()) self.ldap = l self.server = server
from ldap.ldapobject import LDAPObject from ldapurl import LDAPUrl try: ldap_url = LDAPUrl(sys.argv[1]) num_tests = int(sys.argv[2]) except IndexError: print 'Usage: pref_test.py <LDAP URL> <number of tests>' sys.exit(1) iter = num_tests start_time = time.time() l = LDAPObject(ldap_url.initializeUrl(), trace_level=0) l.protocol_version = 3 l.simple_bind_s(ldap_url.who or '', ldap_url.cred or '') while iter: l.search_s(ldap_url.dn, ldap_url.scope or ldap.SCOPE_BASE, ldap_url.filterstr or '(objectClass=*)', ldap_url.attrs or ['*']) iter -= 1 end_time = time.time() l.unbind_s() del l print 'Reusing connection:', end_time - start_time
'start_tls': 'startTLS', 'trace_level': 'trace', } ldap_url = MyLDAPUrl(sys.argv[1]) trace_level = int(ldap_url.trace_level or '0') print('***trace_level', trace_level) ldap.trace_level = trace_level l = LDAPObject( ldap_url.initializeUrl(), trace_level=trace_level, ) l.protocol_version = 3 l.set_option(ldap.OPT_REFERRALS, 0) l.simple_bind_s((ldap_url.who or ''), (ldap_url.cred or '')) result = l.search_s(ldap_url.dn, ldap_url.scope or ldap.SCOPE_SUBTREE, ldap_url.filterstr or '(objectClass=*)', ldap_url.attrs or ['*']) pprint.pprint(result) print('***DIAGNOSTIC_MESSAGE', repr(l.get_option(ldap.OPT_DIAGNOSTIC_MESSAGE))) l.unbind_s()
def main(): adhost = 'w2k8x8664.testdomain.com' adport = 389 aduri = "ldap://%s:%d/" % (adhost, adport) suffix = "DC=testdomain,DC=com" name = sys.argv[1] pwd = sys.argv[2] # adroot = "cn=Dirsync User,cn=users," + suffix # adrootpw = "Secret123" adroot = "cn=%s,cn=users,%s" % (name, suffix) adrootpw = pwd verbose = False # ldap.set_option(ldap.OPT_DEBUG_LEVEL, 15) ad = LDAPObject(aduri) ad.simple_bind_s(adroot, adrootpw) # do initial dirsync search to get entries and the initial dirsync # cookie scope = ldap.SCOPE_SUBTREE filt = '(objectclass=*)' attrlist = None dirsyncctrl = DirSyncCtrl() page_size = 1000 lc = SimplePagedResultsControl( ldap.LDAP_CONTROL_PAGE_OID,True,(page_size,'') ) serverctrls = [dirsyncctrl, lc] msgid = ad.search_ext(suffix, scope, filt, attrlist, 0, serverctrls) initiallist = {} # the dirsync control is returned with the LDAP_RES_SEARCH_RESULT # def result3(self,msgid=_ldap.RES_ANY,all=1,timeout=None): while True: (rtype, rdata, rmsgid, decoded_serverctrls) = ad.result3(msgid) print "Search returned %d results" % len(rdata) for dn, ent in rdata: print "dn: ", dn if verbose: pprint.pprint(ent) if rtype == ldap.RES_SEARCH_RESULT: dirsyncctrl.update(decoded_serverctrls) break # now search again with the updated dirsync control # we should get back no results since nothing in AD # has changed msgid = ad.search_ext(suffix, scope, filt, attrlist, 0, serverctrls) while True: (rtype, rdata, rmsgid, decoded_serverctrls) = ad.result3(msgid) print "Search returned %d results" % len(rdata) if len(rdata) > 0: print "Nothing changed but something was returned????" pprint.pprint(rdata) if rtype == ldap.RES_SEARCH_RESULT: dirsyncctrl.update(decoded_serverctrls) break print "Change something on the AD side, and press Enter" sys.stdin.readline() print "Searching for changes . . ." msgid = ad.search_ext(suffix, scope, filt, attrlist, 0, serverctrls) while True: (rtype, rdata, rmsgid, decoded_serverctrls) = ad.result3(msgid) print "Search returned %d results" % len(rdata) for dn, ent in rdata: print "dn: ", dn pprint.pprint(ent) if rtype == ldap.RES_SEARCH_RESULT: dirsyncctrl.update(decoded_serverctrls) break
from ldap.ldapobject import LDAPObject from ldapurl import LDAPUrl try: ldap_url = LDAPUrl(sys.argv[1]) num_tests = int(sys.argv[2]) except IndexError: print 'Usage: pref_test.py <LDAP URL> <number of tests>' sys.exit(1) iter = num_tests start_time = time.time() l = LDAPObject(ldap_url.initializeUrl(),trace_level=0) l.protocol_version = 3 l.simple_bind_s(ldap_url.who or '',ldap_url.cred or '') while iter: l.search_s( ldap_url.dn, ldap_url.scope or ldap.SCOPE_BASE, ldap_url.filterstr or '(objectClass=*)', ldap_url.attrs or ['*'] ) iter -= 1 end_time = time.time() l.unbind_s() del l
ldap_url = MyLDAPUrl(sys.argv[1]) trace_level = int(ldap_url.trace_level or '0') print '***trace_level',trace_level ldap.trace_level = trace_level l = LDAPObject( ldap_url.initializeUrl(), trace_level=trace_level, ) l.protocol_version = 3 l.set_option(ldap.OPT_REFERRALS,0) l.simple_bind_s((ldap_url.who or ''),(ldap_url.cred or '')) msgid = l.search( ldap_url.dn, ldap_url.scope or ldap.SCOPE_SUBTREE, ldap_url.filterstr or '(objectClass=*)', ldap_url.attrs or ['*'] ) print "msgid=",msgid count = 0 result = l.result(msgid, True, 0) while(result[0] != ldap.RES_SEARCH_RESULT): count += 1
class EditionTests(SlapdTestCase): @classmethod def setUpClass(cls): super().setUpClass() base = cls.server.suffix suffix_dc = base.split(',')[0][3:] # insert some Foo* objects via ldapadd cls.server.ldapadd("\n".join([ 'dn: '+cls.server.suffix, 'objectClass: dcObject', 'objectClass: organization', 'dc: '+suffix_dc, 'o: '+suffix_dc, '', 'dn: '+cls.server.root_dn, 'objectClass: applicationProcess', 'cn: '+cls.server.root_cn, '', "dn: cn=Foo1,"+base, "objectClass: organizationalRole", "cn: Foo1", "", "dn: cn=Foo2,"+base, "objectClass: organizationalRole", "cn: Foo2", "", "dn: cn=Foo3,"+base, "objectClass: organizationalRole", "cn: Foo3", "", "dn: ou=Container,"+base, "objectClass: organizationalUnit", "ou: Container", "", "dn: cn=Foo4,ou=Container,"+base, "objectClass: organizationalRole", "cn: Foo4", "", ])+"\n") def setUp(self): self.ldap = LDAPObject(self.server.ldap_uri, bytes_mode=False) self.ldap.protocol_version = 3 self.ldap.set_option(ldap.OPT_REFERRALS, 0) self.ldap.simple_bind_s( self.server.root_dn, self.server.root_pw ) def tearDown(self): self.ldap.unbind() def test_add_object(self): base = self.server.suffix dn = "cn=Added,ou=Container," + base self.ldap.add_ext_s(dn, [ ("objectClass", [b'organizationalRole']), ("cn", [b'Added']), ]) # Lookup the object result = self.ldap.search_s(base, ldap.SCOPE_SUBTREE, '(cn=Added)', ['*']) self.assertEqual(result, [ ("cn=Added,ou=Container," + base, {'cn': [b'Added'], 'objectClass': [b'organizationalRole']}), ]) # Delete object self.ldap.delete_s(dn) result = self.ldap.search_s( base, ldap.SCOPE_SUBTREE, '(cn=Added)', ['*'] ) self.assertEqual(result, [])
def main(): adhost = 'w2k8x8664.testdomain.com' adport = 389 aduri = "ldap://%s:%d/" % (adhost, adport) suffix = "DC=testdomain,DC=com" name = sys.argv[1] pwd = sys.argv[2] # adroot = "cn=Dirsync User,cn=users," + suffix # adrootpw = "Secret123" adroot = "cn=%s,cn=users,%s" % (name, suffix) adrootpw = pwd verbose = False # ldap.set_option(ldap.OPT_DEBUG_LEVEL, 15) ad = LDAPObject(aduri) ad.simple_bind_s(adroot, adrootpw) # do initial dirsync search to get entries and the initial dirsync # cookie scope = ldap.SCOPE_SUBTREE filt = '(objectclass=*)' attrlist = None dirsyncctrl = DirSyncCtrl() page_size = 1000 lc = SimplePagedResultsControl(ldap.LDAP_CONTROL_PAGE_OID, True, (page_size, '')) serverctrls = [dirsyncctrl, lc] msgid = ad.search_ext(suffix, scope, filt, attrlist, 0, serverctrls) initiallist = {} # the dirsync control is returned with the LDAP_RES_SEARCH_RESULT # def result3(self,msgid=_ldap.RES_ANY,all=1,timeout=None): while True: (rtype, rdata, rmsgid, decoded_serverctrls) = ad.result3(msgid) print "Search returned %d results" % len(rdata) for dn, ent in rdata: print "dn: ", dn if verbose: pprint.pprint(ent) if rtype == ldap.RES_SEARCH_RESULT: dirsyncctrl.update(decoded_serverctrls) break # now search again with the updated dirsync control # we should get back no results since nothing in AD # has changed msgid = ad.search_ext(suffix, scope, filt, attrlist, 0, serverctrls) while True: (rtype, rdata, rmsgid, decoded_serverctrls) = ad.result3(msgid) print "Search returned %d results" % len(rdata) if len(rdata) > 0: print "Nothing changed but something was returned????" pprint.pprint(rdata) if rtype == ldap.RES_SEARCH_RESULT: dirsyncctrl.update(decoded_serverctrls) break print "Change something on the AD side, and press Enter" sys.stdin.readline() print "Searching for changes . . ." msgid = ad.search_ext(suffix, scope, filt, attrlist, 0, serverctrls) while True: (rtype, rdata, rmsgid, decoded_serverctrls) = ad.result3(msgid) print "Search returned %d results" % len(rdata) for dn, ent in rdata: print "dn: ", dn pprint.pprint(ent) if rtype == ldap.RES_SEARCH_RESULT: dirsyncctrl.update(decoded_serverctrls) break