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
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;
}