コード例 #1
0
DWORD
VmAfdConnectLdapWithMachineAccount(
    LDAP** ppLotus
    )
{
    DWORD dwError = 0;
    LDAP* pLotus = NULL;
    PSTR pszUpn = NULL;
    PVMAFD_REG_ARG pArgs = NULL;
    PWSTR pwszDCName = NULL;
    PSTR pszDCName = NULL;

    dwError = VmAfdGetMachineInfo(&pArgs);
    BAIL_ON_VMAFD_ERROR_NO_LOG(dwError);

    dwError = VmAfSrvGetAffinitizedDC(&pwszDCName);
    BAIL_ON_VMAFD_ERROR(dwError);

    dwError = VmAfdAllocateStringAFromW(pwszDCName, &pszDCName);
    BAIL_ON_VMAFD_ERROR(dwError);

    dwError = VmAfdAllocateStringPrintf(
                &pszUpn,
                "%s@%s",
                pArgs->pszAccount,
                pArgs->pszDomain);
    BAIL_ON_VMAFD_ERROR(dwError);

    dwError = VmAfdLDAPConnect(
                pszDCName,
                LDAP_PORT,
                pszUpn,
                pArgs->pszPassword,
                &pLotus);
    BAIL_ON_VMAFD_ERROR_NO_LOG(dwError);

    *ppLotus = pLotus;

cleanup:
    VMAFD_SAFE_FREE_STRINGA(pszUpn);
    VMAFD_SAFE_FREE_STRINGA(pszDCName);
    VMAFD_SAFE_FREE_STRINGW(pwszDCName);
    VmAfdFreeRegArgs(pArgs);
    return dwError;
error:
    if (pLotus)
    {
        VmAfdLdapClose(pLotus);
    }
    goto cleanup;

}
コード例 #2
0
ファイル: dcfinder.c プロジェクト: vmware/lightwave
static
DWORD
VmAfSrvCheckDC(
    PDNS_SERVER_INFO pServerInfo,
    PCSTR pszDomain,
    PCSTR pszUPN,
    PCSTR pszPassword,
    PSTR* ppszHostname,
    PSTR* ppszNetworkAddress
    )
{
    DWORD dwError = 0;
    PSTR  pszHostname = NULL;
    PSTR  pszNetworkAddress = NULL;
    PSTR  pszDomainOther = NULL;
    LDAP* pLd = NULL;

    dwError = VmAfdLDAPConnect(
                    pServerInfo->pszAddress,
                    0,
                    pszUPN,
                    pszPassword,
                    &pLd);
    BAIL_ON_VMAFD_ERROR(dwError);

    dwError = VmAfdGetDefaultDomainName(pLd, &pszDomainOther);
    BAIL_ON_VMAFD_ERROR(dwError);

    if (VmAfdStringCompareA(pszDomain, pszDomainOther, FALSE) != 0)
    {
        dwError = ERROR_DC_NOT_FOUND;
        BAIL_ON_VMAFD_ERROR(dwError);
    }

    dwError = VmAfdAllocateStringA(pServerInfo->pszName, &pszHostname);
    BAIL_ON_VMAFD_ERROR(dwError);

    dwError = VmAfdAllocateStringA(pServerInfo->pszAddress, &pszNetworkAddress);
    BAIL_ON_VMAFD_ERROR(dwError);

    *ppszHostname = pszHostname;
    *ppszNetworkAddress = pszNetworkAddress;

cleanup:

    if (pLd)
    {
        VmAfdLdapClose(pLd);
    }

    VMAFD_SAFE_FREE_MEMORY(pszDomainOther);

    return dwError;

error:

    *ppszNetworkAddress = NULL;
    *ppszHostname = NULL;

    VMAFD_SAFE_FREE_MEMORY(pszHostname);
    VMAFD_SAFE_FREE_MEMORY(pszNetworkAddress);

    goto cleanup;
}