⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 samba3sam.py

📁 samba最新软件
💻 PY
📖 第 1 页 / 共 3 页
字号:
        # Search remote record by local DN        dn = self.samba4.dn("cn=A")        attrs = ["dnsHostName", "lastLogon"]        res = self.ldb.search(dn, scope=SCOPE_BASE, attrs=attrs)        self.assertEquals(len(res), 1)        self.assertEquals(str(str(res[0].dn)), dn)        self.assertTrue(not "dnsHostName" in res[0])        self.assertEquals(res[0]["lastLogon"], "x")        # Search remote record by remote DN        dn = self.samba3.dn("cn=A")        attrs = ["dnsHostName", "lastLogon", "sambaLogonTime"]        res = self.samba3.db.search(dn, scope=SCOPE_BASE, attrs=attrs)        self.assertEquals(len(res), 1)        self.assertEquals(str(str(res[0].dn)), dn)        self.assertTrue(not "dnsHostName" in res[0])        self.assertTrue(not "lastLogon" in res[0])        self.assertEquals(res[0]["sambaLogonTime"], "x")        # Search split record by local DN        dn = self.samba4.dn("cn=X")        attrs = ["dnsHostName", "lastLogon"]        res = self.ldb.search(dn, scope=SCOPE_BASE, attrs=attrs)        self.assertEquals(len(res), 1)        self.assertEquals(str(str(res[0].dn)), dn)        self.assertEquals(res[0]["dnsHostName"], "x")        self.assertEquals(res[0]["lastLogon"], "x")        # Search split record by remote DN        dn = self.samba3.dn("cn=X")        attrs = ["dnsHostName", "lastLogon", "sambaLogonTime"]        res = self.samba3.db.search(dn, scope=SCOPE_BASE, attrs=attrs)        self.assertEquals(len(res), 1)        self.assertEquals(str(str(res[0].dn)), dn)        self.assertTrue(not "dnsHostName" in res[0])        self.assertTrue(not "lastLogon" in res[0])        self.assertEquals(res[0]["sambaLogonTime"], "x")        print "Testing search by attribute"        # Search by ignored attribute        attrs = ["dnsHostName", "lastLogon"]        res = self.ldb.search(expression="(revision=x)", scope=SCOPE_DEFAULT, attrs=attrs)        self.assertEquals(len(res), 2)        self.assertEquals(str(str(res[0].dn)), self.samba4.dn("cn=Y"))        self.assertEquals(res[0]["dnsHostName"], "y")        self.assertEquals(res[0]["lastLogon"], "y")        self.assertEquals(str(str(res[1].dn)), self.samba4.dn("cn=X"))        self.assertEquals(res[1]["dnsHostName"], "x")        self.assertEquals(res[1]["lastLogon"], "x")        # Search by kept attribute        attrs = ["dnsHostName", "lastLogon"]        res = self.ldb.search(expression="(description=y)", scope=SCOPE_DEFAULT, attrs=attrs)        self.assertEquals(len(res), 2)        self.assertEquals(str(str(res[0].dn)), self.samba4.dn("cn=Z"))        self.assertEquals(res[0]["dnsHostName"], "z")        self.assertEquals(res[0]["lastLogon"], "z")        self.assertEquals(str(str(res[1].dn)), self.samba4.dn("cn=C"))        self.assertTrue(not "dnsHostName" in res[1])        self.assertEquals(res[1]["lastLogon"], "z")        # Search by renamed attribute        attrs = ["dnsHostName", "lastLogon"]        res = self.ldb.search(expression="(badPwdCount=x)", scope=SCOPE_DEFAULT, attrs=attrs)        self.assertEquals(len(res), 2)        self.assertEquals(str(res[0].dn), self.samba4.dn("cn=B"))        self.assertTrue(not "dnsHostName" in res[0])        self.assertEquals(res[0]["lastLogon"], "y")        self.assertEquals(str(res[1].dn), self.samba4.dn("cn=A"))        self.assertTrue(not "dnsHostName" in res[1])        self.assertEquals(res[1]["lastLogon"], "x")        # Search by converted attribute        attrs = ["dnsHostName", "lastLogon", "objectSid"]        # TODO:        #   Using the SID directly in the parse tree leads to conversion        #   errors, letting the search fail with no results.        #res = self.ldb.search("(objectSid=S-1-5-21-4231626423-2410014848-2360679739-552)", scope=SCOPE_DEFAULT, attrs)        res = self.ldb.search(expression="(objectSid=*)", attrs=attrs)        self.assertEquals(len(res), 3)        self.assertEquals(str(res[0].dn), self.samba4.dn("cn=X"))        self.assertEquals(res[0]["dnsHostName"], "x")        self.assertEquals(res[0]["lastLogon"], "x")        self.assertEquals(res[0]["objectSid"], "S-1-5-21-4231626423-2410014848-2360679739-552")        self.assertEquals(str(res[1].dn), self.samba4.dn("cn=A"))        self.assertTrue(not "dnsHostName" in res[1])        self.assertEquals(res[1]["lastLogon"], "x")        self.assertEquals(res[1]["objectSid"], "S-1-5-21-4231626423-2410014848-2360679739-552")        # Search by generated attribute         # In most cases, this even works when the mapping is missing        # a `convert_operator' by enumerating the remote db.        attrs = ["dnsHostName", "lastLogon", "primaryGroupID"]        res = self.ldb.search(expression="(primaryGroupID=512)", attrs=attrs)        self.assertEquals(len(res), 1)        self.assertEquals(str(res[0].dn), self.samba4.dn("cn=A"))        self.assertTrue(not "dnsHostName" in res[0])        self.assertEquals(res[0]["lastLogon"], "x")        self.assertEquals(res[0]["primaryGroupID"], "512")        # TODO: There should actually be two results, A and X.  The        # primaryGroupID of X seems to get corrupted somewhere, and the        # objectSid isn't available during the generation of remote (!) data,        # which can be observed with the following search.  Also note that Xs        # objectSid seems to be fine in the previous search for objectSid... */        #res = ldb.search(expression="(primaryGroupID=*)", NULL, ldb. SCOPE_DEFAULT, attrs)        #print len(res) + " results found"        #for i in range(len(res)):        #    for (obj in res[i]) {        #        print obj + ": " + res[i][obj]        #    }        #    print "---"        #            # Search by remote name of renamed attribute */        attrs = ["dnsHostName", "lastLogon"]        res = self.ldb.search(expression="(sambaBadPasswordCount=*)", attrs=attrs)        self.assertEquals(len(res), 0)        # Search by objectClass        attrs = ["dnsHostName", "lastLogon", "objectClass"]        res = self.ldb.search(expression="(objectClass=user)", attrs=attrs)        self.assertEquals(len(res), 2)        self.assertEquals(str(res[0].dn), self.samba4.dn("cn=X"))        self.assertEquals(res[0]["dnsHostName"], "x")        self.assertEquals(res[0]["lastLogon"], "x")        self.assertTrue(res[0]["objectClass"] is not None)        self.assertEquals(res[0]["objectClass"][0], "user")        self.assertEquals(str(res[1].dn), self.samba4.dn("cn=A"))        self.assertTrue(not "dnsHostName" in res[1])        self.assertEquals(res[1]["lastLogon"], "x")        self.assertTrue(res[1]["objectClass"] is not None)        self.assertEquals(res[1]["objectClass"][0], "user")        # Prove that the objectClass is actually used for the search        res = self.ldb.search(expression="(|(objectClass=user)(badPwdCount=x))", attrs=attrs)        self.assertEquals(len(res), 3)        self.assertEquals(str(res[0].dn), self.samba4.dn("cn=B"))        self.assertTrue(not "dnsHostName" in res[0])        self.assertEquals(res[0]["lastLogon"], "y")        self.assertTrue(res[0]["objectClass"] is not None)        for oc in set(res[0]["objectClass"]):            self.assertEquals(oc, "user")        self.assertEquals(str(res[1].dn), self.samba4.dn("cn=X"))        self.assertEquals(res[1]["dnsHostName"], "x")        self.assertEquals(res[1]["lastLogon"], "x")        self.assertTrue(res[1]["objectClass"] is not None)        self.assertEquals(res[1]["objectClass"][0], "user")        self.assertEquals(str(res[2].dn), self.samba4.dn("cn=A"))        self.assertTrue(not "dnsHostName" in res[2])        self.assertEquals(res[2]["lastLogon"], "x")        self.assertTrue(res[2]["objectClass"] is not None)        self.assertEquals(res[2]["objectClass"][0], "user")        print "Testing search by parse tree"        # Search by conjunction of local attributes        attrs = ["dnsHostName", "lastLogon"]        res = self.ldb.search(expression="(&(codePage=x)(revision=x))", attrs=attrs)        self.assertEquals(len(res), 2)        self.assertEquals(str(res[0].dn), self.samba4.dn("cn=Y"))        self.assertEquals(res[0]["dnsHostName"], "y")        self.assertEquals(res[0]["lastLogon"], "y")        self.assertEquals(str(res[1].dn), self.samba4.dn("cn=X"))        self.assertEquals(res[1]["dnsHostName"], "x")        self.assertEquals(res[1]["lastLogon"], "x")        # Search by conjunction of remote attributes        attrs = ["dnsHostName", "lastLogon"]        res = self.ldb.search(expression="(&(lastLogon=x)(description=x))", attrs=attrs)        self.assertEquals(len(res), 2)        self.assertEquals(str(res[0].dn), self.samba4.dn("cn=X"))        self.assertEquals(res[0]["dnsHostName"], "x")        self.assertEquals(res[0]["lastLogon"], "x")        self.assertEquals(str(res[1].dn), self.samba4.dn("cn=A"))        self.assertTrue(not "dnsHostName" in res[1])        self.assertEquals(res[1]["lastLogon"], "x")                # Search by conjunction of local and remote attribute         attrs = ["dnsHostName", "lastLogon"]        res = self.ldb.search(expression="(&(codePage=x)(description=x))", attrs=attrs)        self.assertEquals(len(res), 2)        self.assertEquals(str(res[0].dn), self.samba4.dn("cn=Y"))        self.assertEquals(res[0]["dnsHostName"], "y")        self.assertEquals(res[0]["lastLogon"], "y")        self.assertEquals(str(res[1].dn), self.samba4.dn("cn=X"))        self.assertEquals(res[1]["dnsHostName"], "x")        self.assertEquals(res[1]["lastLogon"], "x")        # Search by conjunction of local and remote attribute w/o match        attrs = ["dnsHostName", "lastLogon"]        res = self.ldb.search(expression="(&(codePage=x)(nextRid=x))", attrs=attrs)        self.assertEquals(len(res), 0)        res = self.ldb.search(expression="(&(revision=x)(lastLogon=z))", attrs=attrs)        self.assertEquals(len(res), 0)        # Search by disjunction of local attributes        attrs = ["dnsHostName", "lastLogon"]        res = self.ldb.search(expression="(|(revision=x)(dnsHostName=x))", attrs=attrs)        self.assertEquals(len(res), 2)        self.assertEquals(str(res[0].dn), self.samba4.dn("cn=Y"))        self.assertEquals(res[0]["dnsHostName"], "y")        self.assertEquals(res[0]["lastLogon"], "y")        self.assertEquals(str(res[1].dn), self.samba4.dn("cn=X"))        self.assertEquals(res[1]["dnsHostName"], "x")        self.assertEquals(res[1]["lastLogon"], "x")        # Search by disjunction of remote attributes        attrs = ["dnsHostName", "lastLogon"]        res = self.ldb.search(expression="(|(badPwdCount=x)(lastLogon=x))", attrs=attrs)        self.assertEquals(len(res), 3)        self.assertEquals(str(res[0].dn), self.samba4.dn("cn=B"))        self.assertTrue("dnsHostName" in res[0])        self.assertEquals(res[0]["lastLogon"], "y")        self.assertEquals(str(res[1].dn), self.samba4.dn("cn=X"))        self.assertEquals(res[1]["dnsHostName"], "x")        self.assertEquals(res[1]["lastLogon"], "x")        self.assertEquals(str(res[2].dn), self.samba4.dn("cn=A"))        self.assertTrue("dnsHostName" in res[2])        self.assertEquals(res[2]["lastLogon"], "x")        # Search by disjunction of local and remote attribute        attrs = ["dnsHostName", "lastLogon"]        res = self.ldb.search(expression="(|(revision=x)(lastLogon=y))", attrs=attrs)        self.assertEquals(len(res), 3)        self.assertEquals(str(res[0].dn), self.samba4.dn("cn=Y"))        self.assertEquals(res[0]["dnsHostName"], "y")        self.assertEquals(res[0]["lastLogon"], "y")        self.assertEquals(str(res[1].dn), self.samba4.dn("cn=B"))        self.assertTrue("dnsHostName" in res[1])        self.assertEquals(res[1]["lastLogon"], "y")        self.assertEquals(str(res[2].dn), self.samba4.dn("cn=X"))        self.assertEquals(res[2]["dnsHostName"], "x")        self.assertEquals(res[2]["lastLogon"], "x")        # Search by disjunction of local and remote attribute w/o match        attrs = ["dnsHostName", "lastLogon"]        res = self.ldb.search(expression="(|(codePage=y)(nextRid=z))", attrs=attrs)        self.assertEquals(len(res), 0)        # Search by negated local attribute        attrs = ["dnsHostName", "lastLogon"]        res = self.ldb.search(expression="(!(revision=x))", attrs=attrs)        self.assertEquals(len(res), 5)        self.assertEquals(str(res[0].dn), self.samba4.dn("cn=B"))        self.assertTrue(not "dnsHostName" in res[0])        self.assertEquals(res[0]["lastLogon"], "y")        self.assertEquals(str(res[1].dn), self.samba4.dn("cn=A"))        self.assertTrue(not "dnsHostName" in res[1])        self.assertEquals(res[1]["lastLogon"], "x")        self.assertEquals(str(res[2].dn), self.samba4.dn("cn=Z"))        self.assertEquals(res[2]["dnsHostName"], "z")        self.assertEquals(res[2]["lastLogon"], "z")        self.assertEquals(str(res[3].dn), self.samba4.dn("cn=C"))        self.assertTrue(not "dnsHostName" in res[3])        self.assertEquals(res[3]["lastLogon"], "z")        # Search by negated remote attribute        attrs = ["dnsHostName", "lastLogon"]        res = self.ldb.search(expression="(!(description=x))", attrs=attrs)        self.assertEquals(len(res), 3)        self.assertEquals(str(res[0].dn), self.samba4.dn("cn=Z"))        self.assertEquals(res[0]["dnsHostName"], "z")        self.assertEquals(res[0]["lastLogon"], "z")        self.assertEquals(str(res[1].dn), self.samba4.dn("cn=C"))        self.assertTrue(not "dnsHostName" in res[1])        self.assertEquals(res[1]["lastLogon"], "z")        # Search by negated conjunction of local attributes        attrs = ["dnsHostName", "lastLogon"]        res = self.ldb.search(expression="(!(&(codePage=x)(revision=x)))", attrs=attrs)        self.assertEquals(len(res), 5)        self.assertEquals(str(res[0].dn), self.samba4.dn("cn=B"))        self.assertTrue(not "dnsHostName" in res[0])        self.assertEquals(res[0]["lastLogon"], "y")        self.assertEquals(str(res[1].dn), self.samba4.dn("cn=A"))        self.assertTrue(not "dnsHostName" in res[1])        self.assertEquals(res[1]["lastLogon"], "x")        self.assertEquals(str(res[2].dn), self.samba4.dn("cn=Z"))        self.assertEquals(res[2]["dnsHostName"], "z")        self.assertEquals(res[2]["lastLogon"], "z")        self.assertEquals(str(res[3].dn), self.samba4.dn("cn=C"))        self.assertTrue(not "dnsHostName" in res[3])        self.assertEquals(res[3]["lastLogon"], "z")        # Search by negated conjunction of remote attributes        attrs = ["dnsHostName", "lastLogon"]        res = self.ldb.search(expression="(!(&(lastLogon=x)(description=x)))", attrs=attrs)        self.assertEquals(len(res), 5)        self.assertEquals(str(res[0].dn), self.samba4.dn("cn=Y"))        self.assertEquals(res[0]["dnsHostName"], "y")        self.assertEquals(res[0]["lastLogon"], "y")        self.assertEquals(str(res[1].dn), self.samba4.dn("cn=B"))        self.assertTrue(not "dnsHostName" in res[1])        self.assertEquals(res[1]["lastLogon"], "y")        self.assertEquals(str(res[2].dn), self.samba4.dn("cn=Z"))        self.assertEquals(res[2]["dnsHostName"], "z")        self.assertEquals(res[2]["lastLogon"], "z")        self.assertEquals(str(res[3].dn), self.samba4.dn("cn=C"))        self.assertTrue(not "dnsHostName" in res[3])        self.assertEquals(res[3]["lastLogon"], "z")        # Search by negated conjunction of local and remote attribute        attrs = ["dnsHostName", "lastLogon"]        res = self.ldb.search(expression="(!(&(codePage=x)(description=x)))", attrs=attrs)        self.assertEquals(len(res), 5)        self.assertEquals(str(res[0].dn), self.samba4.dn("cn=B"))        self.assertTrue(not "dnsHostName" in res[0])        self.assertEquals(res[0]["lastLogon"], "y")        self.assertEquals(str(res[1].dn), self.samba4.dn("cn=A"))        self.assertTrue(not "dnsHostName" in res[1])        self.assertEquals(res[1]["lastLogon"], "x")        self.assertEquals(str(res[2].dn), self.samba4.dn("cn=Z"))        self.assertEquals(res[2]["dnsHostName"], "z")        self.assertEquals(res[2]["lastLogon"], "z")        self.assertEquals(str(res[3].dn), self.samba4.dn("cn=C"))        self.assertTrue(not "dnsHostName" in res[3])        self.assertEquals(res[3]["lastLogon"], "z")        # Search by negated disjunction of local attributes        attrs = ["dnsHostName", "lastLogon"]        res = self.ldb.search(expression="(!(|(revision=x)(dnsHostName=x)))", attrs=attrs)        self.assertEquals(str(res[0].dn), self.samba4.dn("cn=B"))        self.assertTrue(not "dnsHostName" in res[0])        self.assertEquals(res[0]["lastLogon"], "y")        self.assertEquals(str(res[1].dn), self.samba4.dn("cn=A"))        self.assertTrue(not "dnsHostName" in res[1])        self.assertEquals(res[1]["lastLogon"], "x")        self.assertEquals(str(res[2].dn), self.samba4.dn("cn=Z"))        self.assertEquals(res[2]["dnsHostName"], "z")        self.assertEquals(res[2]["lastLogon"], "z")        self.assertEquals(str(res[3].dn), self.samba4.dn("cn=C"))        self.assertTrue(not "dnsHostName" in res[3])        self.assertEquals(res[3]["lastLogon"], "z")        # Search by negated disjunction of remote attributes        attrs = ["dnsHostName", "lastLogon"]        res = self.ldb.search(expression="(!(|(badPwdCount=x)(lastLogon=x)))", attrs=attrs)        self.assertEquals(len(res), 4)        self.assertEquals(str(res[0].dn), self.samba4.dn("cn=Y"))        self.assertEquals(res[0]["dnsHostName"], "y")        self.assertEquals(res[0]["lastLogon"], "y")        self.assertEquals(str(res[1].dn), self.samba4.dn("cn=Z"))        self.assertEquals(res[1]["dnsHostName"], "z")        self.assertEquals(res[1]["lastLogon"], "z")        self.assertEquals(str(res[2].dn), self.samba4.dn("cn=C"))        self.assertTrue(not "dnsHostName" in res[2])        self.assertEquals(res[2]["lastLogon"], "z")

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -