|
@@ -1318,6 +1318,7 @@ static __int64 getMaxPwdAge(Owned<ILdapConnectionPool> _conns, const char * _bas
|
|
|
return maxPwdAge;
|
|
|
}
|
|
|
|
|
|
+static CriticalSection lcCrit;
|
|
|
class CLdapClient : public CInterface, implements ILdapClient
|
|
|
{
|
|
|
private:
|
|
@@ -1349,28 +1350,34 @@ public:
|
|
|
m_pp = pp;
|
|
|
if(m_ldapconfig->getServerType() == OPEN_LDAP)
|
|
|
{
|
|
|
- try
|
|
|
- {
|
|
|
- addDC(m_ldapconfig->getBasedn());
|
|
|
- }
|
|
|
- catch(...)
|
|
|
- {
|
|
|
- }
|
|
|
- try
|
|
|
+ static bool createdOU = false;
|
|
|
+ CriticalBlock block(lcCrit);
|
|
|
+ if (!createdOU)
|
|
|
{
|
|
|
+ try
|
|
|
+ {
|
|
|
+ addDC(m_ldapconfig->getBasedn());
|
|
|
+ }
|
|
|
+ catch(...)
|
|
|
+ {
|
|
|
+ }
|
|
|
+ try
|
|
|
+ {
|
|
|
addGroup("Directory Administrators", NULL, NULL, m_ldapconfig->getBasedn());
|
|
|
+ }
|
|
|
+ catch(...)
|
|
|
+ {
|
|
|
+ }
|
|
|
}
|
|
|
- catch(...)
|
|
|
- {
|
|
|
- }
|
|
|
- }
|
|
|
- createLdapBasedn(NULL, m_ldapconfig->getResourceBasedn(RT_DEFAULT), PT_ADMINISTRATORS_ONLY);
|
|
|
- createLdapBasedn(NULL, m_ldapconfig->getResourceBasedn(RT_FILE_SCOPE), PT_ADMINISTRATORS_ONLY);
|
|
|
- createLdapBasedn(NULL, m_ldapconfig->getResourceBasedn(RT_WORKUNIT_SCOPE), PT_ADMINISTRATORS_ONLY);
|
|
|
- createLdapBasedn(NULL, m_ldapconfig->getResourceBasedn(RT_SUDOERS), PT_ADMINISTRATORS_ONLY);
|
|
|
+ createLdapBasedn(NULL, m_ldapconfig->getResourceBasedn(RT_DEFAULT), PT_ADMINISTRATORS_ONLY);
|
|
|
+ createLdapBasedn(NULL, m_ldapconfig->getResourceBasedn(RT_FILE_SCOPE), PT_ADMINISTRATORS_ONLY);
|
|
|
+ createLdapBasedn(NULL, m_ldapconfig->getResourceBasedn(RT_WORKUNIT_SCOPE), PT_ADMINISTRATORS_ONLY);
|
|
|
+ createLdapBasedn(NULL, m_ldapconfig->getResourceBasedn(RT_SUDOERS), PT_ADMINISTRATORS_ONLY);
|
|
|
|
|
|
- createLdapBasedn(NULL, m_ldapconfig->getUserBasedn(), PT_ADMINISTRATORS_ONLY);
|
|
|
- createLdapBasedn(NULL, m_ldapconfig->getGroupBasedn(), PT_ADMINISTRATORS_ONLY);
|
|
|
+ createLdapBasedn(NULL, m_ldapconfig->getUserBasedn(), PT_ADMINISTRATORS_ONLY);
|
|
|
+ createLdapBasedn(NULL, m_ldapconfig->getGroupBasedn(), PT_ADMINISTRATORS_ONLY);
|
|
|
+ createdOU = true;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
virtual LdapServerType getServerType()
|