static DWORD _VmDirGetReplicateStatusCycle( PCSTR pszHostName, PCSTR pszUserName, PCSTR pszPassword ) { DWORD dwError = 0; PSTR pszDomainName = NULL; PSTR pszURI = NULL; DWORD dwCycleCount = 0; PVMDIR_CONNECTION pConnection = NULL; if ( VmDirIsIPV6AddrFormat( pszHostName ) ) { dwError = VmDirAllocateStringPrintf( &pszURI, "ldap://[%s]", pszHostName ); BAIL_ON_VMDIR_ERROR(dwError); } else { dwError = VmDirAllocateStringPrintf( &pszURI, "ldap://%s", pszHostName ); BAIL_ON_VMDIR_ERROR(dwError); } dwError = VmDirGetDomainName( pszHostName, &pszDomainName ); BAIL_ON_VMDIR_ERROR(dwError); dwError = VmDirConnectionOpen( pszURI, pszDomainName, pszUserName, pszPassword, &pConnection ); BAIL_ON_VMDIR_ERROR(dwError); dwError = VmDirGetReplicationCycleCount( pConnection, &dwCycleCount ); BAIL_ON_VMDIR_ERROR(dwError); if (dwCycleCount == 0) { printf("First replication cycle done: FALSE\n"); } else { printf("First replication cycle done: TRUE\n"); } cleanup: VMDIR_SAFE_FREE_MEMORY( pszURI ); VMDIR_SAFE_FREE_MEMORY( pszDomainName ); VmDirConnectionClose( pConnection ); return dwError; error: printf("First replication cycle done: UNKNOWN, error code (%u)\n", dwError); goto cleanup; }
/* * Bind to partner via "SRP" mechanism. */ DWORD VmDirSafeLDAPBind( LDAP** ppLd, PCSTR pszHost, PCSTR pszUPN, PCSTR pszPassword ) { DWORD dwError = 0; LDAP* pLd = NULL; char ldapURI[VMDIR_MAX_LDAP_URI_LEN + 1] = {0}; if (ppLd == NULL || pszHost == NULL || pszUPN == NULL || pszPassword == NULL) { dwError = VMDIR_ERROR_INVALID_PARAMETER; BAIL_ON_VMDIR_ERROR(dwError); } if ( VmDirIsIPV6AddrFormat( pszHost ) ) { dwError = VmDirStringPrintFA( ldapURI, sizeof(ldapURI)-1, "%s://[%s]:%d", VMDIR_LDAP_PROTOCOL, pszHost, DEFAULT_LDAP_PORT_NUM); } else { dwError = VmDirStringPrintFA( ldapURI, sizeof(ldapURI)-1, "%s://%s:%d", VMDIR_LDAP_PROTOCOL, pszHost, DEFAULT_LDAP_PORT_NUM); } BAIL_ON_VMDIR_ERROR(dwError); dwError = VmDirSASLSRPBind( &pLd, &(ldapURI[0]), pszUPN, pszPassword); BAIL_ON_VMDIR_ERROR(dwError); *ppLd = pLd; cleanup: return dwError; error: VMDIR_LOG_ERROR( VMDIR_LOG_MASK_ALL, "VmDirSafeLDAPBind to (%s) failed. SRP(%d)", ldapURI, dwError ); if ( pLd ) { ldap_unbind_ext_s( pLd, NULL, NULL); } goto cleanup; }
DWORD VmDirSafeLDAPBindToPort( LDAP** ppLd, PCSTR pszHost, DWORD dwPort, PCSTR pszUPN, PCSTR pszPassword, int iTimeout ) { DWORD dwError = 0; LDAP* pLd = NULL; char ldapURI[VMDIR_MAX_LDAP_URI_LEN + 1] = {0}; DWORD dwLdapPort = DEFAULT_LDAP_PORT_NUM; DWORD dwTmpLdapPort = 0; if (ppLd == NULL || pszHost == NULL || pszUPN == NULL || pszPassword == NULL) { dwError = VMDIR_ERROR_INVALID_PARAMETER; BAIL_ON_VMDIR_ERROR(dwError); } if (dwPort) { dwLdapPort = dwPort; } else if (VmDirGetRegKeyValueDword( VMDIR_CONFIG_PARAMETER_V1_KEY_PATH, VMDIR_REG_KEY_LDAP_PORT, &dwTmpLdapPort, DEFAULT_LDAP_PORT_NUM) == ERROR_SUCCESS) { dwLdapPort = dwTmpLdapPort; } if ( VmDirIsIPV6AddrFormat( pszHost ) ) { dwError = VmDirStringPrintFA( ldapURI, sizeof(ldapURI)-1, "%s://[%s]:%d", VMDIR_LDAP_PROTOCOL, pszHost, dwLdapPort); } else { dwError = VmDirStringPrintFA( ldapURI, sizeof(ldapURI)-1, "%s://%s:%d", VMDIR_LDAP_PROTOCOL, pszHost, dwLdapPort); } BAIL_ON_VMDIR_ERROR(dwError); dwError = VmDirSASLSRPBindExt1( &pLd, &(ldapURI[0]), pszUPN, pszPassword, iTimeout); BAIL_ON_VMDIR_ERROR(dwError); *ppLd = pLd; cleanup: return dwError; error: VMDIR_LOG_ERROR( VMDIR_LOG_MASK_ALL, "%s to (%s) failed. SRP(%d)", __FUNCTION__, ldapURI, dwError ); if ( pLd ) { ldap_unbind_ext_s( pLd, NULL, NULL); } goto cleanup; }