Hello,
if this can help, I have a small script that I use in LSC to convert
group of groups from AD to a flatten group in OpenLDAP.
The javascript method is:
// Return members DN
function getMembersDn(srcLdap, dstLdap, dn) {
var result = new java.util.ArrayList();;
if ( dn.match(/ou=groupes/i) ) {
// Browse group to find members
var membersDn = new java.util.ArrayList();;
try {
membersDn = srcLdap.attribute(dn, "member");
} catch(e) {
return result;
}
for (var i=0; i<membersDn.size(); i++) {
var memberDn = membersDn.get(i);
result.addAll( getMembersDn(srcLdap,dstLdap,memberDn) );
}
}
else {
var uid = "";
try {
uid = srcLdap.attribute(dn, "sAMAccountName").get(0);
} catch(e) {
return result;
}
var destDn = dstLdap.search("ou=utilisateurs", "(uid="
+ uid + ")");
if (destDn.size() == 0 || destDn.size() > 1) {
return result;
}
var destMemberDn = destDn.get(0) + "," +
dstLdap.getContextDn();
result.add(destMemberDn);
}
return result;
}
And you call it for example :
<dataset>
<name>member</name>
<policy>FORCE</policy>
<forceValues>
<string>
<![CDATA[js:
var membersSrcDn = srcBean.getDatasetValuesById("member");
var membersDstDn = new java.util.ArrayList();
for (var i=0; i<membersSrcDn.size(); i++) {
var memberSrcDn = membersSrcDn.get(i);
membersDstDn.addAll( getMembersDn(srcLdap,
ldap, memberSrcDn) );
}
if ( membersDstDn.size() == 0) {
membersDstDn.add("cn=empty");
}
membersDstDn
]]>
</string>
</forceValues>
</dataset>
Clément.
_______________________________________________________________
Ldap Synchronization Connector (LSC) - http://lsc-project.org
lsc-users mailing list
[email protected]
https://lists.lsc-project.org/cgi-bin/mailman/listinfo/lsc-users