<HTML><HEAD>
<META content="text/html; charset=utf-8" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 8.00.7600.16588"></HEAD>
<BODY style="MARGIN: 4px 4px 1px; FONT: 10pt Segoe UI" bgColor=#ffffff text=#000000>
<DIV>Hi Julian,</DIV>
<DIV>&nbsp;</DIV>
<DIV>I've tested the LDAP authenticator and it is "working" using the last NSSLDAPAuthenticator.php file you sent to me.&nbsp;&nbsp;&nbsp; During testing I managed to lock my account several times and did not know it until I examined the zendto.log ( I wasted an hour figuring that out).</DIV>
<DIV>&nbsp;</DIV>
<DIV>My configuration:</DIV>
<DIV>Running the&nbsp;&nbsp; <A href="http://www.zendto.com/files/ZendTo-CentOS-x64-3.55-3.zip">ZendTo version 3.59-1 64-bit CentOS Virtual Machine</A>&nbsp;from the download page.</DIV>
<DIV>LDAP:&nbsp;&nbsp;The authLDAPServers I tested where both Netware 6.5 and SLES 10sp2.&nbsp; I could not get the SSL=true to work ( the issue could be on my end).</DIV>
<DIV>&nbsp;</DIV>
<DIV>Suggestions:</DIV>
<DIV>1) How about an email_admin setting in the preferences. file that notifies&nbsp;the administrator when an account is locked?</DIV>
<DIV>&nbsp;</DIV>
<DIV>2) when an account is locked, add a commentsto the zendto.log file stating the account is "locked" rather than wait until the next login attempt.</DIV>
<DIV>&nbsp;</DIV>
<DIV>3) the bin/README does not list the unlockuser utility.&nbsp;&nbsp; </DIV>
<DIV>&nbsp;</DIV>
<DIV>4) food for thought:&nbsp; perhaps rather than create separate utilities (adduser, deleteuser, listusers, setpassword, combine them into one utility</DIV>
<DIV>&nbsp;</DIV>
<DIV>ie&nbsp; user.php</DIV>
<DIV>&nbsp;</DIV>
<DIV>user.php add john password <A href="mailto:email@address.com">email@address.com</A> 'john doe' 'organization'</DIV>
<DIV>user.php delete john</DIV>
<DIV>user.php unlock john</DIV>
<DIV>
<DIV>user.php unlock all</DIV></DIV>
<DIV>user.php listusers</DIV>
<DIV>user.php setpasswd john new_password</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>5) perhaps allow the admin to unlock a user via the webpage rather than have to do it at the command line?</DIV>
<DIV>&nbsp;</DIV>
<DIV>6)&nbsp;&nbsp;in the preferences.php&nbsp; add the following to enable LDAP</DIV>
<DIV>&nbsp;</DIV>
<DIV>example 1:&nbsp; Search LDAP using only One LDAPServer and from the top of the 'O".</DIV>
<DIV>
<DIV>&nbsp; //<BR>&nbsp; // Settings for the LDAP authenticator.<BR>&nbsp; //<BR>&nbsp; //&nbsp; "authLDAPServers"&nbsp;&nbsp;&nbsp;&nbsp; Array of hostnames to try binding to<BR>&nbsp; //&nbsp; "authLDAPBaseDN"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Base distinguished name for search/bind<BR>&nbsp; //&nbsp; "authLDAPAdmins"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cheap way to grant admin privs to users; an<BR>&nbsp; //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; array of uname's<BR>&nbsp; //&nbsp; "authLDAPUseSSL"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connect using SSL/TLS.&nbsp; [ true|false ]</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp; 'authenticator'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; 'LDAP',<BR>&nbsp; 'authLDAPServers'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; array('192.168.1.1'),<BR>&nbsp;&nbsp;'authLDAPBaseDN'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; 'o=level1',<BR>&nbsp; 'authLDAPAdmins'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; array('admin1','admin2','admin3'),<BR>&nbsp; 'authLDAPUseSSL'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; false,<BR></DIV>
<DIV>Example 2:&nbsp;&nbsp; Search LDAP using two LDAPServers and using and OU=.</DIV></DIV>
<DIV>&nbsp; //<BR>&nbsp; // Settings for the LDAP authenticator.<BR>&nbsp; //<BR>&nbsp; //&nbsp; "authLDAPServers"&nbsp;&nbsp;&nbsp;&nbsp; Array of hostnames to try binding to<BR>&nbsp; //&nbsp; "authLDAPBaseDN"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Base distinguished name for search/bind<BR>&nbsp; //&nbsp; "authLDAPAdmins"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cheap way to grant admin privs to users; an<BR>&nbsp; //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; array of uname's<BR>&nbsp; //&nbsp; "authLDAPUseSSL"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connect using SSL/TLS.&nbsp; [ true|false ]</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp; 'authenticator'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; 'LDAP',<BR>&nbsp; 'authLDAPServers'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; array('192.168.1.1','192.168.1.2'),<BR>&nbsp;&nbsp;'authLDAPBaseDN'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; 'ou=level1,o=level2',</DIV>
<DIV>&nbsp; 'authLDAPAdmins'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; array('admin1','admin2','admin3'),<BR>&nbsp; 'authLDAPUseSSL'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; false,<BR></DIV>
<DIV>Note:&nbsp;&nbsp;authLDAPUseSSL = false works.&nbsp; I could not get&nbsp;it to work with a 'true' setting, but that may only be a fault on my systems.</DIV>
<DIV>Note: On authLDAPServers, I tested with both one and two configured servers, both work, even if the first one listed does not respond to the bind.</DIV>
<DIV>FYI: If the authLDAPServers is set high in the tree ( ie: o=top), then ldap does search down to lower levels looking for matches.&nbsp; Some organizations may want to exclude some lower ou's.&nbsp;&nbsp; I did not test if the BaseDN could contain multiple search ou's.</DIV>
<DIV>&nbsp;</DIV>
<DIV>Perhaps something the emailDomainRegexp would work to&nbsp;include only specific ou's below the o? (I've not looked at it myself).</DIV>
<DIV>&nbsp;</DIV>
<DIV>7) In the comments of the NSSLDAPAuthenticator.php&nbsp; please add&nbsp;comments to make it look more like the comments section in the NSSADAuthenticator.php file.&nbsp; Sample below:</DIV>
<DIV>&nbsp;</DIV>
<DIV>Example for preferences.php:</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp; 'authenticator'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; 'LDAP',<BR>&nbsp;&nbsp;&nbsp; 'authLDAPServers'&nbsp;&nbsp;&nbsp;&nbsp; =&gt; array('192.168.1.1','192.168.1.2'),<BR>&nbsp;&nbsp;&nbsp; 'authLDAPBaseDN'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; 'ou=users,o=domain',</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp; // or&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'authLDAPBaseDN'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; 'o=domain',<BR>&nbsp;&nbsp;&nbsp; 'authLDAPUseSSL'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; false,</DIV>
<DIV><BR>8)&nbsp; THANK YOU JULIAN!</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV></BODY></HTML>