try:
res = self.search(base=dn, scope=ldb.SCOPE_SUBTREE, attrs=[],
expression="(|(objectclass=user)(objectclass=computer))")
- except ldb.LdbError, (ldb.ERR_NO_SUCH_OBJECT, _):
- # Ignore no such object errors
- return
- pass
+ except ldb.LdbError, (errno, _):
+ if errno == ldb.ERR_NO_SUCH_OBJECT:
+ # Ignore no such object errors
+ return
+ else:
+ raise
try:
for msg in res:
self.delete(msg.dn)
- except ldb.LdbError, (ldb.ERR_NO_SUCH_OBJECT, _):
- # Ignore no such object errors
- return
+ except ldb.LdbError, (errno, _):
+ if errno != ldb.ERR_NO_SUCH_OBJECT:
+ # Ignore no such object errors
+ raise
def erase_except_schema_controlled(self):
"""Erase this ldb, removing all records, except those that are controlled by Samba4's schema."""
[], controls=["show_deleted:0"]):
try:
self.delete(msg.dn)
- except ldb.LdbError, (ldb.ERR_NO_SUCH_OBJECT, _):
- # Ignore no such object errors
- pass
+ except ldb.LdbError, (errno, _):
+ if errno != ldb.ERR_NO_SUCH_OBJECT:
+ # Ignore no such object errors
+ raise
res = self.search(basedn, ldb.SCOPE_SUBTREE,
"(&(|(objectclass=*)(distinguishedName=*))(!(distinguishedName=@BASEINFO)))",
"@OPTIONS", "@PARTITION", "@KLUDGEACL"]:
try:
self.delete(attr)
- except ldb.LdbError, (ldb.ERR_NO_SUCH_OBJECT, _):
- # Ignore missing dn errors
- pass
+ except ldb.LdbError, (errno, _):
+ if errno != ldb.ERR_NO_SUCH_OBJECT:
+ # Ignore missing dn errors
+ raise
def erase(self):
"""Erase this ldb, removing all records."""
for attr in ["@INDEXLIST", "@ATTRIBUTES"]:
try:
self.delete(attr)
- except ldb.LdbError, (ldb.ERR_NO_SUCH_OBJECT, _):
- # Ignore missing dn errors
- pass
+ except ldb.LdbError, (errno, _):
+ if errno != ldb.ERR_NO_SUCH_OBJECT
+ # Ignore missing dn errors
+ raise
def erase_partitions(self):
"""Erase an ldb, removing all records."""
try:
res = self.search(base=dn, scope=ldb.SCOPE_ONELEVEL, attrs=[],
controls=["show_deleted:0"])
- except ldb.LdbError, (ldb.ERR_NO_SUCH_OBJECT, _):
- # Ignore no such object errors
- return
+ except ldb.LdbError, (errno, _):
+ if errno == ldb.ERR_NO_SUCH_OBJECT:
+ # Ignore no such object errors
+ return
for msg in res:
erase_recursive(self, msg.dn)
try:
self.delete(dn)
- except ldb.LdbError, (ldb.ERR_NO_SUCH_OBJECT, _):
- # Ignore no such object errors
- pass
+ except ldb.LdbError, (errno, _):
+ if errno != ldb.ERR_NO_SUCH_OBJECT:
+ # Ignore no such object errors
+ raise
res = self.search("", ldb.SCOPE_BASE, "(objectClass=*)",
["namingContexts"])
import ldb
def messageEltFlagToString(flag):
- if flag == ldb.FLAG_MOD_ADD:
- return "MOD_ADD"
- elif flag == ldb.FLAG_MOD_REPLACE:
- return "MOD_REPLACE"
- elif flag == ldb.FLAG_MOD_DELETE:
- return "MOD_DELETE"
+ if flag == ldb.FLAG_MOD_ADD:
+ return "MOD_ADD"
+ elif flag == ldb.FLAG_MOD_REPLACE:
+ return "MOD_REPLACE"
+ elif flag == ldb.FLAG_MOD_DELETE:
+ return "MOD_DELETE"
ntacl = ndr_unpack(xattr.NTACL,attribute)
return ntacl
-def setntacl(lp,file,sddl,domsid,backend=None,eadbfile=None):
+def setntacl(lp, file, sddl, domsid, backend=None, eadbfile=None):
checkset_backend(lp,backend,eadbfile)
ntacl=xattr.NTACL()
ntacl.version = 1
eadbname = lp.get("posix:eadb")
if eadbname != None and eadbname != "":
try:
- attribute = samba.xattr_tdb.wrap_setxattr(eadbname,file,xattr.XATTR_NTACL_NAME,ndr_pack(ntacl))
+ samba.xattr_tdb.wrap_setxattr(eadbname,file,xattr.XATTR_NTACL_NAME,ndr_pack(ntacl))
except:
print "Fail to open %s"%eadbname
- attribute = samba.xattr_native.wrap_setxattr(file,xattr.XATTR_NTACL_NAME,ndr_pack(ntacl))
+ samba.xattr_native.wrap_setxattr(file,xattr.XATTR_NTACL_NAME,ndr_pack(ntacl))
else:
- attribute = samba.xattr_native.wrap_setxattr(file,xattr.XATTR_NTACL_NAME,ndr_pack(ntacl))
+ samba.xattr_native.wrap_setxattr(file,xattr.XATTR_NTACL_NAME,ndr_pack(ntacl))
def ldapmask2filemask(ldm):
"""Takes the access mask of a DS ACE and transform them in a File ACE mask"""
fdescr.revision = ref.revision
fdescr.sacl = ref.sacl
aces = ref.dacl.aces
- for i in range(0,len(aces)):
+ for i in range(0, len(aces)):
ace = aces[i]
if not ace.type & security.SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT and str(ace.trustee) != security.SID_BUILTIN_PREW2K:
# if fdescr.type & security.SEC_DESC_DACL_AUTO_INHERITED:
"privateKeytab"]
- msg = ldb.Message(ldb.Dn(secretsdb, "flatname=%s,cn=Primary Domains" % domain));
+ msg = ldb.Message(ldb.Dn(secretsdb, "flatname=%s,cn=Primary Domains" % domain))
msg["secureChannelType"] = str(secure_channel_type)
msg["flatname"] = [domain]
msg["objectClass"] = ["top", "primaryDomain"]
msg["realm"] = realm
msg["saltPrincipal"] = "host/%s.%s@%s" % (netbiosname.lower(), dnsdomain.lower(), realm.upper())
msg["msDS-KeyVersionNumber"] = [str(key_version_number)]
- msg["privateKeytab"] = ["secrets.keytab"];
+ msg["privateKeytab"] = ["secrets.keytab"]
msg["secret"] = [machinepass]
setup_add_ldif(samdb, setup_path("aggregate_schema.ldif"),
{"SCHEMADN": names.schemadn})
- message("Reopening sam.ldb with new schema");
+ message("Reopening sam.ldb with new schema")
samdb.transaction_commit()
samdb = Ldb(session_info=admin_session_info,
credentials=provision_backend.credentials, lp=lp)
def init(self):
#Check to see that this 'existing' LDAP backend in fact exists
ldapi_db = Ldb(self.ldapi_uri, credentials=self.credentials)
- search_ol_rootdse = ldapi_db.search(base="", scope=SCOPE_BASE,
+ ldapi_db.search(base="", scope=SCOPE_BASE,
expression="(objectClass=OpenLDAProotDSE)")
# If we have got here, then we must have a valid connection to the LDAP server, with valid credentials supplied
try:
ldapi_db = Ldb(self.ldapi_uri)
ldapi_db.search(base="", scope=SCOPE_BASE,
- expression="(objectClass=OpenLDAProotDSE)");
+ expression="(objectClass=OpenLDAProotDSE)")
try:
f = open(self.paths.slapdpid, "r")
p = f.read()
except OSError:
pass
- self.schema.write_to_tmp_ldb(schemadb_path);
+ self.schema.write_to_tmp_ldb(schemadb_path)
self.credentials = Credentials()
self.credentials.guess(self.lp)
return
except LdbError:
time.sleep(1)
- pass
raise ProvisioningError("slapd died before we could make a connection to it")
self.domainsid,
schemadn=self.names.schemadn,
serverdn=self.names.serverdn,
- files=[setup_path("schema_samba4.ldif")]);
+ files=[setup_path("schema_samba4.ldif")])
def provision(self):
# Wipe the directories so we can start
fedora_ds_dir = os.path.join(self.paths.ldapdir, "slapd-samba4")
shutil.rmtree(fedora_ds_dir, True)
- self.slapd_provision_command = [self.slapd_path, "-D", fedora_ds_dir, "-i", self.paths.slapdpid];
+ self.slapd_provision_command = [self.slapd_path, "-D", fedora_ds_dir, "-i", self.paths.slapdpid]
#In the 'provision' command line, stay in the foreground so we can easily kill it
self.slapd_provision_command.append("-d0")
except:
self.transaction_cancel()
raise
- self.transaction_commit();
+ self.transaction_commit()
class Disabled(object):
+
def test_setup_templatesdb(self):
raise NotImplementedError(self.test_setup_templatesdb)
import re
import shutil
-import samba
from samba import Ldb, DS_DOMAIN_FUNCTION_2000
from ldb import SCOPE_SUBTREE, SCOPE_ONELEVEL, SCOPE_BASE
import ldb