DWORD VmDirSrvUpdateConfig( VOID ) { DWORD dwError = 0; VMDIR_CONFIG_ENTRY initTable[] = VMDIR_CONFIG_INIT_TABLE_INITIALIZER; DWORD dwNumEntries = sizeof(initTable)/sizeof(initTable[0]); DWORD iEntry = 0; dwError = VmDirRegGetConfig( VMDIR_CONFIG_PARAMETER_PARAMS_KEY_PATH, initTable, dwNumEntries); BAIL_ON_VMDIR_ERROR(dwError); for (; iEntry < dwNumEntries; iEntry++) { PVMDIR_CONFIG_ENTRY pEntry = &initTable[iEntry]; if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_ALLOW_INSECURE_AUTH, TRUE)) { gVmdirGlobals.bAllowInsecureAuth = pEntry->dwValue ? TRUE : FALSE; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_DISABLE_VECS, TRUE)) { gVmdirGlobals.bDisableVECSIntegration = pEntry->dwValue ? TRUE : FALSE; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_LDAP_LISTEN_PORTS, TRUE)) { dwError = VmDirRegConfigMultiStringToDwords( pEntry->pszValue, &gVmdirGlobals.pdwLdapListenPorts, &gVmdirGlobals.dwLdapListenPorts); BAIL_ON_VMDIR_ERROR(dwError); } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_LDAPS_LISTEN_PORTS, TRUE)) { dwError = VmDirRegConfigMultiStringToDwords( pEntry->pszValue, &gVmdirGlobals.pdwLdapsListenPorts, &gVmdirGlobals.dwLdapsListenPorts); BAIL_ON_VMDIR_ERROR(dwError); } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_LDAP_CONNECT_PORTS, TRUE)) { dwError = VmDirRegConfigMultiStringToDwords( pEntry->pszValue, &gVmdirGlobals.pdwLdapConnectPorts, &gVmdirGlobals.dwLdapConnectPorts); BAIL_ON_VMDIR_ERROR(dwError); } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_LDAPS_CONNECT_PORTS, TRUE)) { dwError = VmDirRegConfigMultiStringToDwords( pEntry->pszValue, &gVmdirGlobals.pdwLdapsConnectPorts, &gVmdirGlobals.dwLdapsConnectPorts); BAIL_ON_VMDIR_ERROR(dwError); } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_HTTP_LISTEN_PORT, TRUE)) { gVmdirGlobals.dwHTTPListenPort = pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_HTTPS_LISTEN_PORT, TRUE)) { gVmdirGlobals.dwHTTPSListenPort = pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_HTTPS_API_LISTEN_PORT, TRUE)) { gVmdirGlobals.dwHTTPSApiListenPort = pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_LDAP_RECV_TIMEOUT_SEC, TRUE)) { gVmdirGlobals.dwLdapRecvTimeoutSec = pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_MAX_OP_THREADS, TRUE)) { gVmdirGlobals.dwMaxFlowCtrlThr = pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_MAX_INDEX_SCAN, TRUE)) { gVmdirGlobals.dwMaxIndexScan = VMDIR_MAX(pEntry->dwValue, 512); } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_EFFICIENT_READ_OP, TRUE)) { gVmdirServerGlobals.dwEfficientReadOpTimeMS = pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_EFFICIENT_WRITE_OP, TRUE)) { gVmdirServerGlobals.dwEfficientWriteOpTimeMS = pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_SMALL_CANDIDATE_SET, TRUE)) { gVmdirGlobals.dwSmallCandidateSet = VMDIR_MAX(pEntry->dwValue, 32); } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_ALLOW_ADMIN_LOCKOUT, TRUE)) { gVmdirGlobals.bAllowAdminLockout = pEntry->dwValue ? TRUE : FALSE; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_MAX_SIZELIMIT_SCAN, TRUE)) { gVmdirGlobals.dwMaxSizelimitScan = VMDIR_MAX(pEntry->dwValue, 0); } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_ALLOW_IMPORT_OP_ATTR, TRUE)) { gVmdirGlobals.bAllowImportOpAttrs = pEntry->dwValue ? TRUE : FALSE; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_LDAP_SEARCH_TIMEOUT_SEC, TRUE)) { gVmdirGlobals.dwLdapSearchTimeoutSec = pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_TRACK_LAST_LOGIN_TIME, TRUE)) { gVmdirGlobals.bTrackLastLoginTime = pEntry->dwValue ? TRUE : FALSE; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_PAGED_SEARCH_READ_AHEAD, TRUE)) { gVmdirGlobals.bPagedSearchReadAhead = !!pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_TOMBSTONE_EXPIRATION_IN_SEC, TRUE)) { gVmdirServerGlobals.dwTombstoneExpirationPeriod = pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_TOMBSTONE_REAPING_FREQ_IN_SEC, TRUE)) { gVmdirServerGlobals.dwTombstoneThreadFrequency = pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_LDAP_CONNECT_TIMEOUT_SEC, TRUE)) { gVmdirGlobals.dwLdapConnectTimeoutSec = pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_MAX_INTERNAL_SEARCH, TRUE)) { gVmdirServerGlobals.dwMaxInternalSearchLimit = pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_OPERATIONS_THREAD_TIMEOUT_IN_MILLI_SEC, TRUE)) { gVmdirGlobals.dwOperationsThreadTimeoutInMilliSec = pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_REPL_CONSUMER_THREAD_TIMEOUT_IN_MILLI_SEC, TRUE)) { gVmdirGlobals.dwReplConsumerThreadTimeoutInMilliSec = pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_EMPTY_PAGE_COUNT, TRUE)) { //TODO_REMOVE_REPLV2 gVmdirGlobals.dwEmptyPageCnt = pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_SUPPLIER_THREAD_TIMEOUT_IN_MILLI_SEC, TRUE)) { gVmdirGlobals.dwSupplierThrTimeoutInMilliSec = pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_WRITE_TIMEOUT_IN_MILLI_SEC, TRUE)) { gVmdirGlobals.dwWriteTimeoutInMilliSec = pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_ENABLE_REGIONAL_MASTER, TRUE)) { gVmdirGlobals.bEnableRegionalMaster = pEntry->dwValue ? TRUE : FALSE; } } cleanup: VmDirRegConfigTableFreeContents(initTable, dwNumEntries); return dwError; error: VmDirSrvFreeConfig(); goto cleanup; }
DWORD VmDirSrvUpdateConfig( VOID ) { DWORD dwError = 0; VMDIR_CONFIG_ENTRY initTable[] = VMDIR_CONFIG_INIT_TABLE_INITIALIZER; DWORD dwNumEntries = sizeof(initTable)/sizeof(initTable[0]); DWORD iEntry = 0; dwError = VmDirRegGetConfig( VMDIR_CONFIG_PARAMETER_PARAMS_KEY_PATH, initTable, dwNumEntries); BAIL_ON_VMDIR_ERROR(dwError); for (; iEntry < dwNumEntries; iEntry++) { PVMDIR_CONFIG_ENTRY pEntry = &initTable[iEntry]; if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_ALLOW_INSECURE_AUTH, TRUE)) { gVmdirGlobals.bAllowInsecureAuth = pEntry->dwValue ? TRUE : FALSE; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_DISABLE_VECS, TRUE)) { gVmdirGlobals.bDisableVECSIntegration = pEntry->dwValue ? TRUE : FALSE; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_LDAP_LISTEN_PORTS, TRUE)) { dwError = VmDirRegConfigMultiStringToDwords( pEntry->pszValue, &gVmdirGlobals.pdwLdapListenPorts, &gVmdirGlobals.dwLdapListenPorts); BAIL_ON_VMDIR_ERROR(dwError); } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_LDAPS_LISTEN_PORTS, TRUE)) { dwError = VmDirRegConfigMultiStringToDwords( pEntry->pszValue, &gVmdirGlobals.pdwLdapsListenPorts, &gVmdirGlobals.dwLdapsListenPorts); BAIL_ON_VMDIR_ERROR(dwError); } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_LDAP_CONNECT_PORTS, TRUE)) { dwError = VmDirRegConfigMultiStringToDwords( pEntry->pszValue, &gVmdirGlobals.pdwLdapConnectPorts, &gVmdirGlobals.dwLdapConnectPorts); BAIL_ON_VMDIR_ERROR(dwError); } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_LDAPS_CONNECT_PORTS, TRUE)) { dwError = VmDirRegConfigMultiStringToDwords( pEntry->pszValue, &gVmdirGlobals.pdwLdapsConnectPorts, &gVmdirGlobals.dwLdapsConnectPorts); BAIL_ON_VMDIR_ERROR(dwError); } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_HTTP_LISTEN_PORT, TRUE)) { gVmdirGlobals.dwHTTPListenPort = pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_HTTPS_LISTEN_PORT, TRUE)) { gVmdirGlobals.dwHTTPSListenPort = pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_LDAP_RECV_TIMEOUT_SEC, TRUE)) { gVmdirGlobals.dwLdapRecvTimeoutSec = pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_MAX_OP_THREADS, TRUE)) { gVmdirGlobals.dwMaxFlowCtrlThr = pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_MAX_INDEX_SCAN, TRUE)) { gVmdirGlobals.dwMaxIndexScan = VMDIR_MAX(pEntry->dwValue, 512); } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_SMALL_CANDIDATE_SET, TRUE)) { gVmdirGlobals.dwSmallCandidateSet = VMDIR_MAX(pEntry->dwValue, 32); } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_ALLOW_ADMIN_LOCKOUT, TRUE)) { gVmdirGlobals.bAllowAdminLockout = pEntry->dwValue ? TRUE : FALSE; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_MAX_SIZELIMIT_SCAN, TRUE)) { gVmdirGlobals.dwMaxSizelimitScan = VMDIR_MAX(pEntry->dwValue, 0); } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_ALLOW_IMPORT_OP_ATTR, TRUE)) { gVmdirGlobals.bAllowImportOpAttrs = pEntry->dwValue ? TRUE : FALSE; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_LDAP_SEARCH_TIMEOUT_SEC, TRUE)) { gVmdirGlobals.dwLdapSearchTimeoutSec = pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_TRACK_LAST_LOGIN_TIME, TRUE)) { gVmdirGlobals.bTrackLastLoginTime = pEntry->dwValue ? TRUE : FALSE; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_PAGED_SEARCH_READ_AHEAD, TRUE)) { gVmdirGlobals.bPagedSearchReadAhead = !!pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_COPY_DB_WRITES_MIN, TRUE)) { gVmdirGlobals.dwCopyDbWritesMin = pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_COPY_DB_INTERVAL_IN_SEC, TRUE)) { gVmdirGlobals.dwCopyDbIntervalInSec = pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_COPY_DB_BLOCK_WRITE_IN_SEC, TRUE)) { gVmdirGlobals.dwCopyDbBlockWriteInSec = pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_TOMBSTONE_EXPIRATION_IN_SEC, TRUE)) { gVmdirServerGlobals.dwTombstoneExpirationPeriod = pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_TOMBSTONE_REAPING_FREQ_IN_SEC, TRUE)) { gVmdirServerGlobals.dwTombstoneThreadFrequency = pEntry->dwValue; } else if (!VmDirStringCompareA( pEntry->pszName, VMDIR_REG_KEY_LDAP_CONNECT_TIMEOUT_SEC, TRUE)) { gVmdirGlobals.dwLdapConnectTimeoutSec = pEntry->dwValue; } } cleanup: VmDirRegConfigTableFreeContents(initTable, dwNumEntries); return dwError; error: VmDirSrvFreeConfig(); goto cleanup; }