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; }
int main( int argc, char * argv[]) { DWORD dwError = 0; const char * logFileName = NULL; const char * pszBootstrapSchemaFile = NULL; const char * pszStateDir = VMDIR_DB_DIR VMDIR_PATH_SEP; BOOLEAN bEnableSysLog = FALSE; BOOLEAN bConsoleMode = FALSE; int iLocalLogMask = 0; BOOLEAN bVmDirInit = FALSE; BOOLEAN bShutdownKDCService = FALSE; BOOLEAN bWaitTimeOut = FALSE; dwError = VmDirSrvUpdateConfig(); BAIL_ON_VMDIR_ERROR(dwError); dwError = VmDirParseArgs( argc, argv, &pszBootstrapSchemaFile, &iLocalLogMask, &logFileName, &bEnableSysLog, &bConsoleMode); if(dwError != ERROR_SUCCESS) { ShowUsage( argv[0] ); BAIL_ON_VMDIR_ERROR(dwError); } dwError = VmDirAllocateStringA( pszBootstrapSchemaFile, &gVmdirGlobals.pszBootStrapSchemaFile); BAIL_ON_VMDIR_ERROR(dwError); dwError = VmDirAllocateStringA(pszStateDir, &gVmdirGlobals.pszBDBHome); BAIL_ON_VMDIR_ERROR(dwError); dwError = VmDirLogInitialize( logFileName, bEnableSysLog, "vmdird", VMDIR_LOG_INFO, iLocalLogMask); BAIL_ON_VMDIR_ERROR(dwError); VmDirdStateSet(VMDIRD_STATE_STARTUP); VMDIR_LOG_INFO( VMDIR_LOG_MASK_ALL, "Lotus Vmdird: starting..."); VmDirBlockSelectedSignals(); dwError = VmDirSetEnvironment(); BAIL_ON_VMDIR_ERROR(dwError); dwError = VmDirInit(); BAIL_ON_VMDIR_ERROR(dwError); bVmDirInit = TRUE; VMDIR_LOG_INFO( VMDIR_LOG_MASK_ALL, "Lotus Vmkdcd: starting..."); if (VmDirdGetTargetState() != VMDIRD_STATE_RESTORE) { // Normal server startup route dwError = VmKdcServiceStartup(); BAIL_ON_VMDIR_ERROR(dwError); bShutdownKDCService = TRUE; VMDIR_LOG_INFO( VMDIR_LOG_MASK_ALL, "Lotus Vmkdcd: running..."); dwError = VmDirNotifyLikewiseServiceManager(); BAIL_ON_VMDIR_ERROR(dwError); VmDirdStateSet( VmDirdGetTargetState() ); VMDIR_LOG_INFO( VMDIR_LOG_MASK_ALL, "Lotus Vmdird: running... state (%d)", VmDirdState()); // main thread waits on signals dwError = VmDirHandleSignals(); BAIL_ON_VMDIR_ERROR(dwError); } VMDIR_LOG_INFO( VMDIR_LOG_MASK_ALL, "Lotus Vmdird: exiting..." ); cleanup: if ( bShutdownKDCService ) { VmKdcServiceShutdown(); VMDIR_LOG_INFO( VMDIR_LOG_MASK_ALL, "Lotus Vmkdcd: stop" ); } if ( bVmDirInit ) { VmDirdStateSet(VMDIRD_STATE_SHUTDOWN); VmDirShutdown(&bWaitTimeOut); if (bWaitTimeOut) { VMDIR_LOG_INFO( VMDIR_LOG_MASK_ALL, "Lotus Vmdird: stop" ); goto done; } VMDIR_LOG_INFO( VMDIR_LOG_MASK_ALL, "Lotus Vmdird: stop" ); } VmDirLogTerminate(); VmDirSrvFreeConfig(); done: return dwError; error: 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; }