svn commit: samba r26610 - in branches/SAMBA_4_0/source/setup: .

abartlet at samba.org abartlet at samba.org
Thu Dec 27 04:18:54 GMT 2007


Author: abartlet
Date: 2007-12-27 04:18:54 +0000 (Thu, 27 Dec 2007)
New Revision: 26610

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=26610

Log:
Write out a memberof.conf, to run the memberof plugin on all linked
attributes, as found in the schema.

Index 'cn', as otherwise exact match searches on this attribute always
fail (need to figure out what is so special about cn in OpenLDAP).

Andrew Bartlett

Modified:
   branches/SAMBA_4_0/source/setup/provision-backend
   branches/SAMBA_4_0/source/setup/slapd.conf


Changeset:
Modified: branches/SAMBA_4_0/source/setup/provision-backend
===================================================================
--- branches/SAMBA_4_0/source/setup/provision-backend	2007-12-27 04:17:28 UTC (rev 26609)
+++ branches/SAMBA_4_0/source/setup/provision-backend	2007-12-27 04:18:54 UTC (rev 26610)
@@ -141,6 +141,36 @@
 	} else {
 		slapd_command = "slapd -f " + subobj.LDAPDIR + "/slapd.conf -h " + subobj.LDAPI_URI;
 	}
+
+	var ldb = ldb_init();
+	ldb.filename = tmp_schema_ldb;
+
+	var connect_ok = ldb.connect(ldb.filename);
+	assert(connect_ok);
+	var attrs = new Array("linkID", "lDAPDisplayName");
+	var res = ldb.search("(&(&(linkID=*)(!(linkID:1.2.840.113556.1.4.803:=1)))(objectclass=attributeSchema))", subobj.SCHEMADN, ldb.SCOPE_SUBTREE, attrs);
+	assert(res.error == 0);
+	var memberof_config = "";
+	for (i=0; i < res.msgs.length; i++) {
+searchone(ldb, subobj.DOMAINDN, "(&(objectClass=computer)(cn=" + subobj.NETBIOSNAME + "))", "objectGUID");
+		var target = searchone(ldb, subobj.SCHEMADN, "(&(objectclass=attributeSchema)(linkID=" + (res.msgs[i].linkID + 1) + "))", "lDAPDisplayName");
+		if (target != undefined) {
+			memberof_config = memberof_config + "overlay memberof
+memberof-dangling error
+memberof-refint TRUE
+memberof-group-oc top
+memberof-member-ad " + res.msgs[i].lDAPDisplayName + "
+memberof-memberof-ad " + target + "
+
+";
+		}
+	}
+	ok = sys.file_save(subobj.LDAPDIR + "/memberof.conf", memberof_config);
+	if (!ok) {
+		message("failed to create file: " + f + "\n");
+		assert(ok);
+	}
+
 }
 var schema_command = "ad2oLschema --option=convert:target=" + options["ldap-backend-type"] + " -I " + lp.get("setup directory") + "/" + mapping + " -H tdb://" + tmp_schema_ldb + " -O " + subobj.LDAPDIR + "/" + backend_schema;
 

Modified: branches/SAMBA_4_0/source/setup/slapd.conf
===================================================================
--- branches/SAMBA_4_0/source/setup/slapd.conf	2007-12-27 04:17:28 UTC (rev 26609)
+++ branches/SAMBA_4_0/source/setup/slapd.conf	2007-12-27 04:18:54 UTC (rev 26610)
@@ -31,6 +31,7 @@
 index objectCategory eq
 index lDAPDisplayName eq
 index subClassOf eq
+index cn eq
 
 database        hdb
 suffix		${CONFIGDN}
@@ -44,6 +45,7 @@
 index subClassOf eq
 index dnsRoot eq
 index nETBIOSName eq
+index cn eq
 
 database        hdb
 suffix		${DOMAINDN}
@@ -65,9 +67,12 @@
 index subClassOf eq
 index dnsRoot eq
 index nETBIOSName eq
+index cn eq
 
 #syncprov is stable in OpenLDAP 2.3, and available in 2.2.  
 #We only need this for the contextCSN attribute anyway....
 overlay syncprov
 syncprov-checkpoint 100 10
 syncprov-sessionlog 100
+
+include ${LDAPDIR}/memberof.conf



More information about the samba-cvs mailing list