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

Reply via email to