On Thu, Feb 1, 2018 at 6:57 PM, Clément OUDOT <[email protected]> wrote:
> 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.
>
Thanks, this looks promising.

I've plaved the js function right above the other js code in the
dataset section, is that correct?

> 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>

I'm getting the following error:
Feb 01 17:12:21 - ERROR - Error while synchronizing ID {cn=[GroupA]}:
org.lsc.exception.LscServiceException: javax.script.ScriptException:
ReferenceError: "ldap" is not defined in nashorn:mozilla_compat.js at
line number 67

>
>
> 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
_______________________________________________________________
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