in host/common/hostagenthelpers.cpp [4862:5694]
HRESULT GetAgentParamsFromRegistry( const char *pszSVRootKey,
SV_HOST_AGENT_PARAMS *pSV_HOST_AGENT_PARAMS, SV_HOST_AGENT_TYPE AgentType )
{
DebugPrintf(SV_LOG_DEBUG, "Entering %s\n", __FUNCTION__);
HRESULT hr = S_OK;
char szValue[ 4*MAX_PATH ];
CRegKey cregkey;
DWORD httpsvalue = 0;
do
{
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( "ENTERED GetAgentParamsFromRegistry()...\n" );
if( ( NULL == pszSVRootKey ) ||
( NULL == pSV_HOST_AGENT_PARAMS ) )
{
hr = E_INVALIDARG;
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( hr, "FAILED GetAgentParamsFromRegistry()... hr = %08X\n", hr );
break;
}
ZeroMemory( pSV_HOST_AGENT_PARAMS, sizeof( *pSV_HOST_AGENT_PARAMS ) );
USES_CONVERSION;
//
//
//
DWORD dwResult = ERROR_SUCCESS;
dwResult = cregkey.Open( HKEY_LOCAL_MACHINE,
pszSVRootKey );
if( ERROR_SUCCESS != dwResult )
{
hr = HRESULT_FROM_WIN32( dwResult );
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( hr, "FAILED cregkey.Open()... hr = %08X\n", hr );
break;
}
DWORD dwCount = sizeof( szValue );
dwResult = cregkey.QueryStringValue( SV_SERVER_NAME_VALUE_NAME, szValue, &dwCount );
if( ERROR_SUCCESS != dwResult )
{
hr = HRESULT_FROM_WIN32( dwResult );
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( hr, "FAILED cregkey.QueryValue()... key: %s; hr = %08X\n", SV_SERVER_NAME_VALUE_NAME, hr );
break;
}
inm_strcpy_s( pSV_HOST_AGENT_PARAMS->szSVServerName, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szSVServerName), szValue );
dwCount = sizeof( szValue );
//Akshay - Server HTTP Port defaults to 80
dwResult = cregkey.QueryDWORDValue( SV_SERVER_HTTP_PORT_VALUE_NAME, pSV_HOST_AGENT_PARAMS->ServerHttpPort);
if( ERROR_SUCCESS != dwResult )
{
pSV_HOST_AGENT_PARAMS->ServerHttpPort = INTERNET_DEFAULT_HTTP_PORT;
hr = HRESULT_FROM_WIN32( dwResult );
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( hr, "FAILED cregkey.QueryValue()... key: %s; hr = %08X\n", SV_SERVER_HTTP_PORT_VALUE_NAME, hr );
break;
}
else if(pSV_HOST_AGENT_PARAMS->ServerHttpPort > 65535 || pSV_HOST_AGENT_PARAMS->ServerHttpPort <= 0 )
{
pSV_HOST_AGENT_PARAMS->ServerHttpPort = INTERNET_DEFAULT_HTTP_PORT;
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( hr, "Port is out of range \n");
break;
}
//Reading Https Reg Key value
dwResult = cregkey.QueryDWORDValue( "Https",httpsvalue);
if( ERROR_SUCCESS != dwResult )
{
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( "ERROR failed to Read Https Key\n" );
}
else
{
DebugPrintf( "Successfully Read Https Key %d\n",httpsvalue );
if(httpsvalue==1)
{
pSV_HOST_AGENT_PARAMS->Https = true;
DebugPrintf( "Successfully Read Https Key and value %d \n",pSV_HOST_AGENT_PARAMS->Https );
}
else
{
pSV_HOST_AGENT_PARAMS->Https = false;
DebugPrintf( "Https Key value is not set value=%d\n",pSV_HOST_AGENT_PARAMS->Https );
}
}
if( AgentType == SV_AGENT_FILE_REPLICATION) {
DWORD value = 0;
dwResult = cregkey.QueryDWORDValue( SV_DEBUG_LOG_LEVEL_VALUE_NAME, value);
if( ERROR_SUCCESS != dwResult )
SetLogLevel(SV_LOG_DISABLE);
else
SetLogLevel(value);
}
// Throttle Bootstrap
dwResult = cregkey.QueryStringValue( THROTTLE_BOOTSTRAP_URL, szValue, &dwCount );
if( ERROR_SUCCESS == dwResult )
{
inm_strcpy_s( pSV_HOST_AGENT_PARAMS->szThrottleBootstrapURL, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szThrottleBootstrapURL), szValue );
dwCount = sizeof( szValue );
}
else
{
hr = HRESULT_FROM_WIN32( dwResult );
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( hr, "WARNING cregkey.QueryValue(), using default. key: %s; hr = %08X\n", THROTTLE_BOOTSTRAP_URL, hr );
inm_strcpy_s( pSV_HOST_AGENT_PARAMS->szThrottleBootstrapURL, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szThrottleBootstrapURL), "/throttle_bootstrap.php" );
dwCount = sizeof("/throttle_bootstrap.php");
}
// Throttle Sentinel
dwResult = cregkey.QueryStringValue( THROTTLE_SENTINEL_URL, szValue, &dwCount );
if( ERROR_SUCCESS == dwResult )
{
inm_strcpy_s( pSV_HOST_AGENT_PARAMS->szThrottleSentinelURL, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szThrottleSentinelURL), szValue );
dwCount = sizeof( szValue );
}
else
{
hr = HRESULT_FROM_WIN32( dwResult );
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( hr, "FAILED cregkey.QueryValue(), using default. key: %s; hr = %08X\n", THROTTLE_SENTINEL_URL, hr );
inm_strcpy_s( pSV_HOST_AGENT_PARAMS->szThrottleSentinelURL, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szThrottleSentinelURL), "/throttle_sentinel.php" );
dwCount = sizeof("/throttle_sentinel.php");
}
// Throttle OA
dwResult = cregkey.QueryStringValue( THROTTLE_OUTPOST_URL, szValue, &dwCount );
if( ERROR_SUCCESS == dwResult )
{
inm_strcpy_s( pSV_HOST_AGENT_PARAMS->szThrottleOutpostURL, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szThrottleOutpostURL), szValue );
dwCount = sizeof( szValue );
}
else
{
hr = HRESULT_FROM_WIN32( dwResult );
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( hr, "FAILED cregkey.QueryValue()... key: %s; hr = %08X\n", THROTTLE_OUTPOST_URL, hr );
inm_strcpy_s( pSV_HOST_AGENT_PARAMS->szThrottleOutpostURL, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szThrottleOutpostURL), "/throttle_outpost.php" );
dwCount = sizeof( "/throttle_outpost.php" );
}
//Throttle url added 2/2/2006
dwResult = cregkey.QueryStringValue( THROTTLE_AGENT_URL, szValue, &dwCount );
if( ERROR_SUCCESS == dwResult )
{
inm_strcpy_s( pSV_HOST_AGENT_PARAMS->szThrottleURL, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szThrottleURL), szValue );
dwCount = sizeof( szValue );
}
else
{
hr = HRESULT_FROM_WIN32( dwResult );
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( hr, "FAILED cregkey.QueryValue()... key: %s; hr = %08X\n", THROTTLE_AGENT_URL, hr );
inm_strcpy_s( pSV_HOST_AGENT_PARAMS->szThrottleURL, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szThrottleURL), "/throttle_agent.php" );
dwCount = sizeof( "/throttle_agent.php" );
}
if( SV_AGENT_FILE_REPLICATION == AgentType )
{
inm_strcpy_s( szValue, ARRAYSIZE(szValue), "FileReplicationAgent" );
}
else
{
inm_strcpy_s( szValue, ARRAYSIZE(szValue), "VxAgent" );
}
inm_strcpy_s( pSV_HOST_AGENT_PARAMS->szSVHostAgentType, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szSVHostAgentType), szValue );
inm_strcpy_s( pSV_HOST_AGENT_PARAMS->szSVHostAgentRegKey, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szSVHostAgentRegKey), pszSVRootKey );
inm_strcat_s( pSV_HOST_AGENT_PARAMS->szSVHostAgentRegKey, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szSVHostAgentRegKey), "\\" );
inm_strcat_s( pSV_HOST_AGENT_PARAMS->szSVHostAgentRegKey, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szSVHostAgentRegKey),
pSV_HOST_AGENT_PARAMS->szSVHostAgentType );
cregkey.Close();
dwResult = cregkey.Open( HKEY_LOCAL_MACHINE,
pSV_HOST_AGENT_PARAMS->szSVHostAgentRegKey );
if( ERROR_SUCCESS != dwResult )
{
hr = HRESULT_FROM_WIN32( dwResult );
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( hr,
"FAILED cregkey.Open()... key: %s; hr = %08X\n",
pSV_HOST_AGENT_PARAMS->szSVHostAgentRegKey,
hr );
break;
}
dwCount = sizeof( szValue );
dwResult = cregkey.QueryStringValue( SV_REGISTER_URL_VALUE_NAME, szValue, &dwCount );
if( ERROR_SUCCESS != dwResult )
{
hr = HRESULT_FROM_WIN32( dwResult );
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( hr, "FAILED cregkey.QueryValue()... key: %s; hr = %08X\n", SV_REGISTER_URL_VALUE_NAME, hr );
break;
}
inm_strcpy_s( pSV_HOST_AGENT_PARAMS->szSVRegisterURL, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szSVRegisterURL), szValue );
//Reading IsFxUpgraded Key for Fx _upgraded case start
dwResult = cregkey.QueryDWORDValue( SV_FX_UPGRADED, pSV_HOST_AGENT_PARAMS->Fx_Upgraded );
if( ERROR_SUCCESS != dwResult )
{
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( hr, "FAILED cregkey.QueryValue()... key: %s; hr = %08X\n", SV_FX_UPGRADED, hr );
}
else
{
DebugPrintf( " Successfully Read SV_FX_UPGRADED value = %d \n", pSV_HOST_AGENT_PARAMS->Fx_Upgraded );
}
//Reading IsFxUpgraded Key for Fx _upgraded case end
dwCount = sizeof( szValue );
dwResult = cregkey.QueryStringValue( SV_UNREGISTER_URL_VALUE_NAME, szValue, &dwCount );
if( ERROR_SUCCESS != dwResult )
{
hr = HRESULT_FROM_WIN32( dwResult );
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( hr, "FAILED cregkey.QueryValue()... key: %s; hr = %08X\n", SV_UNREGISTER_URL_VALUE_NAME, hr );
break;
}
inm_strcpy_s( pSV_HOST_AGENT_PARAMS->szUnregisterURL, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szUnregisterURL), szValue );
dwCount = sizeof( szValue );
dwResult = cregkey.QueryStringValue( SV_PROTECTED_DRIVES_URL_VALUE_NAME, szValue, &dwCount );
if( ERROR_SUCCESS != dwResult )
{
hr = HRESULT_FROM_WIN32( dwResult );
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( hr, "FAILED cregkey.QueryValue()... key: %s; hr = %08X\n", SV_PROTECTED_DRIVES_URL_VALUE_NAME, hr );
break;
}
inm_strcpy_s( pSV_HOST_AGENT_PARAMS->szSVGetProtectedDrivesURL, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szSVGetProtectedDrivesURL), szValue );
dwCount = sizeof( szValue );
dwResult = cregkey.QueryStringValue( SV_TARGET_DRIVES_URL_VALUE_NAME, szValue, &dwCount );
if( ERROR_SUCCESS != dwResult )
{
hr = HRESULT_FROM_WIN32( dwResult );
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( hr, "WARNING cregkey.QueryValue()... key: %s; hr = %08X\n", SV_TARGET_DRIVES_URL_VALUE_NAME, hr );
hr = S_FALSE;
szValue[ 0 ] = 0;
}
inm_strcpy_s( pSV_HOST_AGENT_PARAMS->szSVGetTargetDrivesURL, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szSVGetTargetDrivesURL), szValue );
hr = GetHostId( szValue, sizeof( szValue ) );
if( FAILED( hr ) )
{
DebugPrintf( "FAILED Couldn't get host id, hr = %08X\n", hr );
break;
}
inm_strcpy_s( pSV_HOST_AGENT_PARAMS->szSVHostID, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szSVHostID), szValue );
dwResult = cregkey.QueryDWORDValue( SV_AVAILABLE_DRIVES_VALUE_NAME, pSV_HOST_AGENT_PARAMS->AvailableDrives);
if( ERROR_SUCCESS != dwResult )
{
hr = HRESULT_FROM_WIN32( dwResult );
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( hr, "FAILED cregkey.QueryValue()... key: %s; hr = %08X\n", SV_AVAILABLE_DRIVES_VALUE_NAME, hr );
break;
}
//
// NOTE: Do not set protected drives == dwAvailable drives as a safety precaution against
// protected drives == 0. It's okay to have no protected drives; we don't want to start protecting
// drives that were unprotected, just because the sentinel restarted.
//
dwResult = cregkey.QueryDWORDValue( SV_PROTECTED_DRIVES_VALUE_NAME, pSV_HOST_AGENT_PARAMS->ProtectedDrives );
if( ERROR_SUCCESS != dwResult )
{
hr = HRESULT_FROM_WIN32( dwResult );
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( hr, "WARNING cregkey.QueryValue()... key: %s; hr = %08X\n", SV_PROTECTED_DRIVES_VALUE_NAME, hr );
//break;
}
// Get Protected Volume Settings
dwCount = sizeof( szValue );
dwResult = cregkey.QueryStringValue( SV_PROTECTED_VOLUME_SETTINGS_URL, szValue,&dwCount);
if( ERROR_SUCCESS != dwResult )
{
hr = HRESULT_FROM_WIN32( dwResult );
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( hr, "WARNING cregkey.QueryValue()... key: %s; hr = %08X\n", SV_PROTECTED_VOLUME_SETTINGS_URL, hr );
//break;
}
inm_strcpy_s( pSV_HOST_AGENT_PARAMS->szProtectedVolumeSettingsURL, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szProtectedVolumeSettingsURL), szValue );
//
// Optional: MAX_SENTINEL_PAYLOAD
//
pSV_HOST_AGENT_PARAMS->cbMaxSentinelPayload = 0;
dwResult = cregkey.QueryDWORDValue( SV_MAX_SENTINEL_PAYLOAD_VALUE_NAME, pSV_HOST_AGENT_PARAMS->cbMaxSentinelPayload );
if( ERROR_SUCCESS != dwResult )
{
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( SV_LOG_DEBUG, "WARNING cregkey.QueryValue()... key: %s; hr = %08X\n", SV_MAX_SENTINEL_PAYLOAD_VALUE_NAME, hr );
}
//
// Get 'report if resync required' url. If not present, use a default.
//
dwCount = sizeof( szValue );
dwResult = cregkey.QueryStringValue( SV_REPORT_RESYNC_REQUIRED_URL_VALUE_NAME, szValue, &dwCount );
if( ERROR_SUCCESS != dwResult )
{
char const* pszDefaultUrl = "/report_resync_required.php";
hr = HRESULT_FROM_WIN32( dwResult );
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( hr, "WARNING cregkey.QueryValue()... key: %s; hr = %08X, using default %s\n", SV_REPORT_RESYNC_REQUIRED_URL_VALUE_NAME, hr, pszDefaultUrl );
inm_strncpy_s( pSV_HOST_AGENT_PARAMS->szReportResyncRequiredURL, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szReportResyncRequiredURL), pszDefaultUrl, sizeof( pSV_HOST_AGENT_PARAMS->szReportResyncRequiredURL ) );
hr = S_FALSE;
}
else
{
inm_strncpy_s( pSV_HOST_AGENT_PARAMS->szReportResyncRequiredURL, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szReportResyncRequiredURL), szValue, sizeof( pSV_HOST_AGENT_PARAMS->szReportResyncRequiredURL ) );
}
//
// Get update_status url. If not present, use a default.
//
dwCount = sizeof( szValue );
dwResult = cregkey.QueryStringValue( SV_UPDATE_STATUS_URL_VALUE_NAME, szValue, &dwCount );
if( ERROR_SUCCESS != dwResult )
{
char const* pszDefaultUrl = "/update_status.php";
hr = HRESULT_FROM_WIN32( dwResult );
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( hr, "WARNING cregkey.QueryValue()... key: %s; hr = %08X, using default %s\n", SV_UPDATE_STATUS_URL_VALUE_NAME, hr, pszDefaultUrl );
inm_strncpy_s( pSV_HOST_AGENT_PARAMS->szUpdateStatusURL, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szUpdateStatusURL), pszDefaultUrl, sizeof( pSV_HOST_AGENT_PARAMS->szUpdateStatusURL ) );
hr = S_FALSE;
}
else
{
inm_strncpy_s( pSV_HOST_AGENT_PARAMS->szUpdateStatusURL, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szUpdateStatusURL), szValue, sizeof( pSV_HOST_AGENT_PARAMS->szUpdateStatusURL ) );
}
//
// Get the CacheDirectory.
//
dwCount = sizeof( szValue );
dwResult = cregkey.QueryStringValue( SV_CACHE_DIRECTORY_VALUE_NAME, szValue, &dwCount );
if( ERROR_SUCCESS != dwResult )
{
hr = HRESULT_FROM_WIN32( dwResult );
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( hr, "FAILED cregkey.QueryValue()... key: %s; hr = %08X\n", SV_CACHE_DIRECTORY_VALUE_NAME, hr );
break;
}
else
{
inm_strncpy_s( pSV_HOST_AGENT_PARAMS->szCacheDirectory, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szCacheDirectory), szValue, sizeof( pSV_HOST_AGENT_PARAMS->szCacheDirectory )-1 );
}
//
// Optional parameter: CxupdateIntervel
//
dwResult = cregkey.QueryDWORDValue( SV_CX_UPDATE_INTERVAL, pSV_HOST_AGENT_PARAMS->CxUpdateInterval);
if( ERROR_SUCCESS != dwResult )
{
hr = HRESULT_FROM_WIN32( dwResult );
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( SV_LOG_DEBUG, "Warning cregkey.QueryValue()... key: %s; using default value. hr = %08X\n", SV_CX_UPDATE_INTERVAL, hr );
pSV_HOST_AGENT_PARAMS->CxUpdateInterval = DEFAULT_CX_UPDATE_INTERVAL;
}
//
// Optional parameter: FileTransport. Default is FTP.
//
dwResult = cregkey.QueryDWORDValue( SV_FILE_TRANSPORT_VALUE_NAME, (DWORD&) pSV_HOST_AGENT_PARAMS->FileTransport);
if( ERROR_SUCCESS != dwResult )
{
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( SV_LOG_DEBUG, "WARNING cregkey.QueryValue()... key: %s; using default value. hr = %08X\n", SV_FILE_TRANSPORT_VALUE_NAME, hr );
pSV_HOST_AGENT_PARAMS->FileTransport = SV_HOST_AGENT_PARAMS::FILE_TRANSPORT_FTP;
}
//
// Optional parameter: ShouldResync. By default, use 0.
//
DWORD dwTemp = 0;
dwResult = cregkey.QueryDWORDValue( SV_SHOULD_RESYNC_VALUE_NAME, dwTemp );
pSV_HOST_AGENT_PARAMS->ShouldResync = 0 != dwTemp;
if( ERROR_SUCCESS != dwResult )
{
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( SV_LOG_DEBUG, "WARNING cregkey.QueryValue()... key: %s; using default value. hr = %08X\n", SV_SHOULD_RESYNC_VALUE_NAME, HRESULT_FROM_WIN32( GetLastError() ) );
pSV_HOST_AGENT_PARAMS->ShouldResync = false;
}
//
// Optional parameter: GetFileReplicationConfigurationURL
//
dwCount = sizeof( szValue );
dwResult = cregkey.QueryStringValue( SV_GET_FILE_REPLICATION_CONFIGURATION_URL_VALUE_NAME, szValue, &dwCount );
if( ERROR_SUCCESS != dwResult )
{
//DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
//DebugPrintf( hr, "WARNING read key: %s; using default value. hr = %08X\n", SV_GET_FILE_REPLICATION_CONFIGURATION_URL_VALUE_NAME, HRESULT_FROM_WIN32( GetLastError() ) );
inm_strcpy_s( szValue, ARRAYSIZE(szValue), "/get_file_replication_config.php" );
}
inm_strcpy_s( pSV_HOST_AGENT_PARAMS->szGetFileReplicationConfigurationURL, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szGetFileReplicationConfigurationURL), szValue );
//
// Optional parameter: UpdateFileReplicationStatusURL
//
dwCount = sizeof( szValue );
dwResult = cregkey.QueryStringValue( SV_UPDATE_FILE_REPLICATION_STATUS_URL_VALUE_NAME, szValue, &dwCount );
if( ERROR_SUCCESS != dwResult )
{
//DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
//DebugPrintf( hr, "WARNING read key: %s; using default value. hr = %08X\n", SV_UPDATE_FILE_REPLICATION_STATUS_URL_VALUE_NAME, HRESULT_FROM_WIN32( GetLastError() ) );
inm_strcpy_s( szValue, ARRAYSIZE(szValue), "/update_file_replication_status.php" );
}
inm_strcpy_s( pSV_HOST_AGENT_PARAMS->szUpdateFileReplicationStatusURL, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szUpdateFileReplicationStatusURL), szValue );
//
// Optional parameter: InmSyncExe
//
dwCount = sizeof( szValue );
dwResult = cregkey.QueryStringValue( SV_INMSYNC_EXE_VALUE_NAME, szValue, &dwCount );
if( ERROR_SUCCESS != dwResult )
{
//DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
//DebugPrintf( hr, "WARNING read key: %s; using default value. hr = %08X\n", SV_RSYNC_EXE_VALUE_NAME, HRESULT_FROM_WIN32( GetLastError() ) );
inm_strcpy_s( szValue, ARRAYSIZE(szValue), "" );
}
inm_strcpy_s( pSV_HOST_AGENT_PARAMS->szInmsyncExe, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szInmsyncExe), szValue );
//
// Optional parameter: InmsyncExe timeout
//
if (!GetInmsyncTimeoutFromRegistry(pSV_HOST_AGENT_PARAMS->RsyncTimeOut)) {
pSV_HOST_AGENT_PARAMS->RsyncTimeOut = 1800; // default seconds
}
//
// Optional parameter: ShellCommand
//
dwCount = sizeof( szValue );
dwResult = cregkey.QueryStringValue( SV_SHELL_COMMAND_VALUE_NAME, szValue, &dwCount );
if( ERROR_SUCCESS != dwResult )
{
//DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
//DebugPrintf( hr, "WARNING read key: %s; using default value. hr = %08X\n", SV_SHELL_COMMAND_VALUE_NAME, HRESULT_FROM_WIN32( GetLastError() ) );
inm_strcpy_s( szValue, ARRAYSIZE(szValue), "" );
}
inm_strcpy_s( pSV_HOST_AGENT_PARAMS->szShellCommand, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szShellCommand), szValue );
//now get Transport parameters
// BUGBUG: should not fail if params not available. Use default values.
hr = GetFTPParamsFromRegistry(SV_TRANSPORT_VALUE_NAME,pSV_HOST_AGENT_PARAMS);
if(S_OK != hr)
{
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( hr, "WARNING GetFTPParamsFromRegistry FAILED()... hr = %08X\n", hr ) ;
}
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf("[INFO] Host agent type = %s\n", pSV_HOST_AGENT_PARAMS->szSVHostAgentType ) ;
//AutoFS parameters
if( SV_AGENT_FILE_REPLICATION != AgentType )
{
SV_AUTO_FS_PARAMETERS autoFSParams;
hr = GetAutoFSInfoFromRegistry( pSV_HOST_AGENT_PARAMS->szSVHostAgentRegKey, &autoFSParams );
if( FAILED( hr ) )
{
DebugPrintf( SV_LOG_ERROR, "FAILED Couldn't read AutoFS parameters, hr %08X\n", hr );
break;
}
inm_strncpy_s(pSV_HOST_AGENT_PARAMS->szSVGetVisibleReadOnlyDrivesURL, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szSVGetVisibleReadOnlyDrivesURL), autoFSParams.szGetVisibleReadOnlyDrivesURL, INTERNET_MAX_URL_LENGTH);
pSV_HOST_AGENT_PARAMS->szSVGetVisibleReadOnlyDrivesURL[INTERNET_MAX_URL_LENGTH] = '\0';
inm_strncpy_s(pSV_HOST_AGENT_PARAMS->szSVGetVisibleReadWriteDrivesURL, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szSVGetVisibleReadWriteDrivesURL), autoFSParams.szGetVisibleReadWriteDrivesURL, INTERNET_MAX_URL_LENGTH);
pSV_HOST_AGENT_PARAMS->szSVGetVisibleReadWriteDrivesURL[INTERNET_MAX_URL_LENGTH] = '\0';
inm_strncpy_s(pSV_HOST_AGENT_PARAMS->szSVShouldUpdateResyncDrivesURL, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szSVShouldUpdateResyncDrivesURL), autoFSParams.szUpdateShouldResyncDrive, INTERNET_MAX_URL_LENGTH);
pSV_HOST_AGENT_PARAMS->szSVShouldUpdateResyncDrivesURL[INTERNET_MAX_URL_LENGTH] = '\0';
}
//
// Optional parameter: EnableFrLogFileDeletion
//
dwResult = cregkey.QueryDWORDValue( SV_ENABLE_FR_LOG_FILE_DELETION, pSV_HOST_AGENT_PARAMS->EnableFrLogFileDeletion );
if( ERROR_SUCCESS != dwResult )
{
//DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
//DebugPrintf( "WARNING read key: %s; using default value 0. hr = %08X\n", SV_ENABLE_FR_LOG_FILE_DELETION, HRESULT_FROM_WIN32( GetLastError() ) );
}
//
// Optional parameter: EnableFrDeleteOptions
//
dwResult = cregkey.QueryDWORDValue( SV_ENABLE_FR_DELETE_OPTIONS, pSV_HOST_AGENT_PARAMS->EnableFrDeleteOptions );
if( ERROR_SUCCESS != dwResult )
{
//DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
//DebugPrintf( "WARNING read key: %s; using default value 0. hr = %08X\n", SV_ENABLE_FR_DELETE_OPTIONS, HRESULT_FROM_WIN32( GetLastError() ) );
}
//
// Optional parameter: UseConfiguredIP
//
DWORD dwUseConfiguredIP = 0;
dwResult = cregkey.QueryDWORDValue( SV_USE_CONFIGURED_IP, dwUseConfiguredIP );
if( ERROR_SUCCESS != dwResult )
{
//DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
//DebugPrintf( "WARNING read key: %s; using default value 0. hr = %08X\n", SV_USE_CONFIGURED_IP, HRESULT_FROM_WIN32( GetLastError() ) );
}
if( dwUseConfiguredIP )
{
ULONG cChars = sizeof( s_szConfiguredIP );
dwResult = cregkey.QueryStringValue( SV_CONFIGURED_IP, s_szConfiguredIP, &cChars );
if( ERROR_SUCCESS != dwResult )
{
hr = GetLastError();
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( "FAILED Configured IP not read, err %d\n", GetLastError() );
}
}
else
{
s_szConfiguredIP[ 0 ] = 0;
}
//
// Optional parameter: UseConfiguredHostname
//
DWORD dwUseConfiguredHostname = 0;
dwResult = cregkey.QueryDWORDValue( SV_USE_CONFIGURED_HOSTNAME, dwUseConfiguredHostname );
if( ERROR_SUCCESS != dwResult )
{
//DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
//DebugPrintf( "WARNING read key: %s; using default value 0. hr = %08X\n", SV_USE_CONFIGURED_HOSTNAME, HRESULT_FROM_WIN32( GetLastError() ) );
}
if( dwUseConfiguredHostname )
{
ULONG cChars = sizeof( s_szConfiguredHostname );
dwResult = cregkey.QueryStringValue( SV_CONFIGURED_HOSTNAME, s_szConfiguredHostname, &cChars );
if( ERROR_SUCCESS != dwResult )
{
hr = GetLastError();
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( "FAILED Configured hostname not read, err %d\n", GetLastError() );
}
}
else
{
s_szConfiguredHostname[ 0 ] = 0;
}
dwResult = cregkey.QueryDWORDValue( SV_MAX_FR_LOG_PAYLOAD_VALUE_NAME, pSV_HOST_AGENT_PARAMS->MaxFrLogPayload );
if( ERROR_SUCCESS != dwResult || 0 == pSV_HOST_AGENT_PARAMS->MaxFrLogPayload )
{
//DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
//DebugPrintf( "WARNING read key: %s; using default value 500K. hr = %08X\n", SV_MAX_FR_LOG_PAYLOAD_VALUE_NAME, HRESULT_FROM_WIN32( GetLastError() ) );
pSV_HOST_AGENT_PARAMS->MaxFrLogPayload = 500 * 1024;
}
//
// Optional: FR uses 'SendSignalExe' to send signals to rsync
//
char szSendSignalExe[ SV_MAX_PATH+1 ];
ULONG cChars = sizeof( szSendSignalExe );
dwResult = cregkey.QueryStringValue( SV_FR_SEND_SIGNAL_EXE, szSendSignalExe, &cChars );
if( ERROR_SUCCESS != dwResult )
{
DebugPrintf( "@ LINE %d in FILE %s \n", __LINE__, __FILE__ );
DebugPrintf( "WARNING Couldn't read %s, err %d\n", SV_FR_SEND_SIGNAL_EXE, GetLastError() );
}
else
{
inm_strncpy_s(pSV_HOST_AGENT_PARAMS->szSendSignalExe, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szSendSignalExe), szSendSignalExe, ARRAYSIZE(szSendSignalExe));
}
DWORD dwenableEncryption = 0;
dwResult = cregkey.QueryDWORDValue( SV_FR_ENABLE_ENCRYPTION, dwenableEncryption );
if( ERROR_SUCCESS == dwResult )
{
if(dwenableEncryption == 1 )
{
bEnableEncryption = true;
DebugPrintf(SV_LOG_DEBUG, "Encryption is Enabled\n");
}
else
{
bEnableEncryption = false;
DebugPrintf(SV_LOG_DEBUG, "Encryption is disabled\n");
}
}
else
{
bEnableEncryption = true;
DebugPrintf(SV_LOG_DEBUG, "Encryption is Enabled\n");
}
DWORD dwRegisterHostTimeIntervel = 0;
dwResult = cregkey.QueryDWORDValue( SV_FR_REGISTER_HOST_INTERVEL, dwRegisterHostTimeIntervel );
if( ERROR_SUCCESS == dwResult )
{
RegisterHostIntervel = dwRegisterHostTimeIntervel;
DebugPrintf(SV_LOG_DEBUG, "RegisterHost call for every %d seconds\n",RegisterHostIntervel);
}
else
{
RegisterHostIntervel = 180;
DebugPrintf(SV_LOG_DEBUG, "RegisterHost call for every %d seconds\n",RegisterHostIntervel);
}
// SV_REGISTER_CLUSTER_INFO_URL_VALUE_NAME
dwCount = sizeof(szValue);
dwResult = cregkey.QueryStringValue(SV_REGISTER_CLUSTER_INFO_URL_VALUE_NAME, szValue, &dwCount);
if (ERROR_SUCCESS != dwResult) {
char const* pszDefaultUrl = "/register_cluster_info.php";
hr = HRESULT_FROM_WIN32(dwResult);
DebugPrintf("@ LINE %d in FILE %s \n", __LINE__, __FILE__);
DebugPrintf(hr, "WARNING cregkey.QueryValue()... key: %s; hr = %08X, using default %s\n", SV_REGISTER_CLUSTER_INFO_URL_VALUE_NAME, hr, pszDefaultUrl);
inm_strncpy_s(pSV_HOST_AGENT_PARAMS->szRegisterClusterInfoURL, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szRegisterClusterInfoURL), pszDefaultUrl, sizeof(pSV_HOST_AGENT_PARAMS->szRegisterClusterInfoURL));
hr = S_FALSE;
} else {
inm_strncpy_s(pSV_HOST_AGENT_PARAMS->szRegisterClusterInfoURL, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szRegisterClusterInfoURL), szValue, sizeof(pSV_HOST_AGENT_PARAMS->szRegisterClusterInfoURL));
}
// SV_UPDATE_AGENT_LOG_URL_VALUE_NAME
dwCount = sizeof(szValue);
dwResult = cregkey.QueryStringValue(SV_UPDATE_AGENT_LOG_URL_VALUE_NAME, szValue, &dwCount);
if (ERROR_SUCCESS != dwResult) {
char const* pszDefaultUrl = "/update_agent_log.php";
hr = HRESULT_FROM_WIN32(dwResult);
DebugPrintf("@ LINE %d in FILE %s \n", __LINE__, __FILE__);
DebugPrintf(hr, "WARNING cregkey.QueryValue()... key: %s; hr = %08X, using default %s\n", SV_UPDATE_AGENT_LOG_URL_VALUE_NAME, hr, pszDefaultUrl);
inm_strncpy_s(pSV_HOST_AGENT_PARAMS->szUpdateAgentLogURL, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szUpdateAgentLogURL), pszDefaultUrl, sizeof(pSV_HOST_AGENT_PARAMS->szUpdateAgentLogURL));
hr = S_FALSE;
} else {
inm_strncpy_s(pSV_HOST_AGENT_PARAMS->szUpdateAgentLogURL, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szUpdateAgentLogURL), szValue, sizeof(pSV_HOST_AGENT_PARAMS->szUpdateAgentLogURL));
}
// SV_GET_VOLUME_GROUP_SETTINGS_URL_VALUE_NAME
dwCount = sizeof(szValue);
dwResult = cregkey.QueryStringValue(SV_GET_VOLUME_GROUP_SETTINGS_URL_VALUE_NAME, szValue, &dwCount);
if (ERROR_SUCCESS != dwResult) {
char const* pszDefaultUrl = "/get_volume_group_settings.php";
hr = HRESULT_FROM_WIN32(dwResult);
DebugPrintf("@ LINE %d in FILE %s \n", __LINE__, __FILE__);
DebugPrintf(hr, "WARNING cregkey.QueryValue()... key: %s; hr = %08X, using default %s\n", SV_GET_VOLUME_GROUP_SETTINGS_URL_VALUE_NAME, hr, pszDefaultUrl);
inm_strncpy_s(pSV_HOST_AGENT_PARAMS->szGetVolumeGroupSettingsUrl, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szGetVolumeGroupSettingsUrl), pszDefaultUrl, sizeof(pSV_HOST_AGENT_PARAMS->szGetVolumeGroupSettingsUrl));
hr = S_FALSE;
} else {
inm_strncpy_s(pSV_HOST_AGENT_PARAMS->szGetVolumeGroupSettingsUrl, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szGetVolumeGroupSettingsUrl), szValue, sizeof(pSV_HOST_AGENT_PARAMS->szGetVolumeGroupSettingsUrl));
}
if( SV_AGENT_FILE_REPLICATION == AgentType ) {
// SV_UPDATE_PERMISSION_STATE_URL_VALUE_NAME
dwCount = sizeof(szValue);
dwResult = cregkey.QueryStringValue(SV_UPDATE_PERMISSION_STATE_URL_VALUE_NAME, szValue, &dwCount);
if (ERROR_SUCCESS != dwResult) {
char const* pszDefaultUrl = "/update_permission_state.php";
hr = HRESULT_FROM_WIN32(dwResult);
DebugPrintf("@ LINE %d in FILE %s \n", __LINE__, __FILE__);
DebugPrintf(hr, "WARNING cregkey.QueryValue()... key: %s; hr = %08X, using default %s\n", SV_UPDATE_PERMISSION_STATE_URL_VALUE_NAME, hr, pszDefaultUrl);
inm_strncpy_s(pSV_HOST_AGENT_PARAMS->szUpdatePermissionStateUrl, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szUpdatePermissionStateUrl), pszDefaultUrl, sizeof(pSV_HOST_AGENT_PARAMS->szUpdatePermissionStateUrl));
hr = S_FALSE;
} else {
inm_strncpy_s(pSV_HOST_AGENT_PARAMS->szUpdatePermissionStateUrl, ARRAYSIZE(pSV_HOST_AGENT_PARAMS->szUpdatePermissionStateUrl), szValue, sizeof(pSV_HOST_AGENT_PARAMS->szUpdatePermissionStateUrl));
}
}
// fast sync compare sizes
dwResult = cregkey.QueryDWORDValue(FAST_SYNC_MAX_CHUNK_SIZE_NAME, pSV_HOST_AGENT_PARAMS->fastSyncMaxChunkSize);
if (ERROR_SUCCESS != dwResult) {
DebugPrintf(SV_LOG_WARNING, "WARNING GetAgentParamsFromRegistry query %s failed (settting to default value): %d\n",
FAST_SYNC_MAX_CHUNK_SIZE_NAME, dwResult);
pSV_HOST_AGENT_PARAMS->fastSyncMaxChunkSize = FAST_SYNC_MAX_CHUNK_SIZE_DEFAULT; // default value to use 64MB
dwResult = cregkey.SetDWORDValue(FAST_SYNC_MAX_CHUNK_SIZE_NAME, pSV_HOST_AGENT_PARAMS->fastSyncMaxChunkSize);
if (ERROR_SUCCESS != dwResult) {
DebugPrintf(SV_LOG_WARNING, "WARNING GetAgentParamsFromRegistry set failed (using default value): %d\n",
FAST_SYNC_MAX_CHUNK_SIZE_NAME, dwResult);
}
}
dwResult = cregkey.QueryDWORDValue(FAST_SYNC_HASH_COMPARE_DATA_SIZE_NAME, pSV_HOST_AGENT_PARAMS->fastSyncHashCompareDataSize);
if (ERROR_SUCCESS != dwResult) {
DebugPrintf(SV_LOG_WARNING, "WARNING GetAgentParamsFromRegistry query %s failed (settting to default value): %d\n",
FAST_SYNC_HASH_COMPARE_DATA_SIZE_NAME, dwResult);
pSV_HOST_AGENT_PARAMS->fastSyncHashCompareDataSize = FAST_SYNC_HASH_COMPARE_DATA_SIZE_DEFAULT;
dwResult = cregkey.SetDWORDValue(FAST_SYNC_HASH_COMPARE_DATA_SIZE_NAME, pSV_HOST_AGENT_PARAMS->fastSyncHashCompareDataSize);
if (ERROR_SUCCESS != dwResult) {
DebugPrintf(SV_LOG_WARNING, "WARNING GetAgentParamsFromRegistry set %s failed (using default value): %d\n",
FAST_SYNC_HASH_COMPARE_DATA_SIZE_NAME, dwResult);
}
}
// resync source directory path (i.e. cx location)
dwCount = sizeof( pSV_HOST_AGENT_PARAMS->szResyncSourceDirectoryPath );
dwResult = cregkey.QueryStringValue(RESYNC_SOURCE_DIRECTORY_PATH_NAME, pSV_HOST_AGENT_PARAMS->szResyncSourceDirectoryPath, &dwCount );
if( ERROR_SUCCESS != dwResult )
{
hr = HRESULT_FROM_WIN32( dwResult );
DebugPrintf( SV_LOG_ERROR, "FAILED GetAgentParamsFromRegistry query %s: hr = %08X\n",RESYNC_SOURCE_DIRECTORY_PATH_NAME, hr );
break;
}
// max resync threads
dwResult = cregkey.QueryDWORDValue( SV_MAX_RESYNC_THREADS_VALUE_NAME, pSV_HOST_AGENT_PARAMS->maxRsyncThreads );
if (ERROR_SUCCESS != dwResult) {
DebugPrintf(SV_LOG_WARNING, "WARNING GetAgentParamsFromRegistry query %s failed (settting to default value): %d\n",
SV_MAX_RESYNC_THREADS_VALUE_NAME, dwResult);
pSV_HOST_AGENT_PARAMS->maxRsyncThreads = DEFAULT_RESYNC_THREADS;
dwResult = cregkey.SetDWORDValue(SV_MAX_RESYNC_THREADS_VALUE_NAME, pSV_HOST_AGENT_PARAMS->maxRsyncThreads);
if (ERROR_SUCCESS != dwResult) {
DebugPrintf(SV_LOG_WARNING, "WARNING GetAgentParamsFromRegistry set %s failed (using default value): %d\n",
SV_MAX_RESYNC_THREADS_VALUE_NAME, dwResult);
}
}
// settings polling interval
dwResult = cregkey.QueryDWORDValue( SV_SETTINGS_POLLING_INTERVAL, pSV_HOST_AGENT_PARAMS->settingsPollingInterval );
if (ERROR_SUCCESS != dwResult) {
DebugPrintf(SV_LOG_WARNING, "WARNING GetAgentParamsFromRegistry query %s failed (settting to default value): %d\n",
SV_SETTINGS_POLLING_INTERVAL, dwResult);
pSV_HOST_AGENT_PARAMS->settingsPollingInterval = DEFAULT_SETTINGS_POLLING_INTERVAL;
}
// Query the agent install path
CRegKey cregkeyInstall;
if( SV_AGENT_FILE_REPLICATION == AgentType )
dwResult = cregkeyInstall.Open(HKEY_LOCAL_MACHINE, SV_FILEREP_AGENT_VALUE_NAME);
else
dwResult = cregkeyInstall.Open(HKEY_LOCAL_MACHINE, SV_VXAGENT_VALUE_NAME);
if (ERROR_SUCCESS != dwResult) {
DebugPrintf(SV_LOG_WARNING, "WARNING GetAgentParamsFromRegistry cregKeyInstall.open() to %s or %s failed. Error=%d\n",
SV_FILEREP_AGENT_VALUE_NAME, SV_VXAGENT_VALUE_NAME, dwResult);
}
else
{
DWORD dwCount = sizeof( pSV_HOST_AGENT_PARAMS->AgentInstallPath );
dwResult = cregkeyInstall.QueryStringValue(SV_AGENT_INSTALL_LOCATON_VALUE_NAME, pSV_HOST_AGENT_PARAMS->AgentInstallPath, &dwCount);
if (ERROR_SUCCESS != dwResult) {
DebugPrintf(SV_LOG_WARNING, "WARNING GetAgentParamsFromRegistry cregKeyInstall.QueryStringValue() for %s failed. Error=%d\n",
SV_VXAGENT_VALUE_NAME, dwResult);
}
}
// min cache free disk space percent
dwResult = cregkey.QueryDWORDValue( SV_MIN_CACHE_FREE_DISK_SPACE_PERCENT, pSV_HOST_AGENT_PARAMS->minCacheFreeDiskSpacePercent );
if (ERROR_SUCCESS != dwResult) {
DebugPrintf(SV_LOG_WARNING, "WARNING GetAgentParamsFromRegistry query %s failed (settting to default value): %d\n",
SV_MIN_CACHE_FREE_DISK_SPACE_PERCENT, dwResult);
pSV_HOST_AGENT_PARAMS->minCacheFreeDiskSpacePercent = DEFAULT_MIN_CACHE_FREE_DISK_SPACE_PERCENT;
dwResult = cregkey.SetDWORDValue(SV_MIN_CACHE_FREE_DISK_SPACE_PERCENT, pSV_HOST_AGENT_PARAMS->minCacheFreeDiskSpacePercent);
if (ERROR_SUCCESS != dwResult) {
DebugPrintf(SV_LOG_WARNING, "WARNING GetAgentParamsFromRegistry set %s failed (using default value): %d\n",
SV_MIN_CACHE_FREE_DISK_SPACE_PERCENT, dwResult);
}
}
// min cache free disk space
dwResult = cregkey.QueryDWORDValue( SV_MIN_CACHE_FREE_DISK_SPACE, pSV_HOST_AGENT_PARAMS->minCacheFreeDiskSpace );
if (ERROR_SUCCESS != dwResult) {
DebugPrintf(SV_LOG_WARNING, "WARNING GetAgentParamsFromRegistry query %s failed (settting to default value): %d\n",
SV_MIN_CACHE_FREE_DISK_SPACE, dwResult);
pSV_HOST_AGENT_PARAMS->minCacheFreeDiskSpace = DEFAULT_MIN_CACHE_FREE_DISK_SPACE;
dwResult = cregkey.SetDWORDValue(SV_MIN_CACHE_FREE_DISK_SPACE, pSV_HOST_AGENT_PARAMS->minCacheFreeDiskSpace);
if (ERROR_SUCCESS != dwResult) {
DebugPrintf(SV_LOG_WARNING, "WARNING GetAgentParamsFromRegistry set %s failed (using default value): %d\n",
SV_MIN_CACHE_FREE_DISK_SPACE, dwResult);
}
}
}
while( false );
cregkey.Close();
DebugPrintf(SV_LOG_DEBUG, "Exiting %s\n", __FUNCTION__);
return( hr );
}