Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
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;
}