SVERROR DeleteStaleRegistrySettings()

in host/common/hostagenthelpers.cpp [3232:3382]


SVERROR DeleteStaleRegistrySettings(SV_HOST_AGENT_TYPE AgentType)
{
    SVERROR rc;
    std::string sConfigFilePath;
    CRegKey cregkey;
    char KeyName[256], ValueName[256];
    int AgentCount = 0;

    if(AgentType == SV_AGENT_SENTINEL)
    {
        inm_strcpy_s(KeyName, ARRAYSIZE(KeyName), SV_VXAGENT_VALUE_NAME);
    }
    else if(AgentType == SV_AGENT_OUTPOST )
    {
        inm_strcpy_s(KeyName, ARRAYSIZE(KeyName), SV_VXAGENT_VALUE_NAME);
    }
    else if(AgentType == SV_AGENT_FILE_REPLICATION)
    {
        inm_strcpy_s(KeyName, ARRAYSIZE(KeyName), SV_FILEREP_AGENT_VALUE_NAME);
    }

    if(AgentType != SV_AGENT_UNKNOWN)
    {
        rc = GetConfigFileName(sConfigFilePath);
        if(rc == SVS_OK)
        {
            if( ERROR_SUCCESS == cregkey.Open( HKEY_LOCAL_MACHINE, KeyName ))
            {
                if(AgentType == SV_AGENT_SENTINEL)
                {
                    CRegKey cregkey2;
                    char ch_str[] = "A", ch_end = 'Z';
                    cregkey2.Open( HKEY_LOCAL_MACHINE, SV_ROOT_TRANSPORT_KEY );

                    while(ch_str[0] <= ch_end)
                    {
                        inm_strcpy_s(ValueName, ARRAYSIZE(ValueName), SV_SRC_SECURE_VALUE_NAME);
                        inm_strcat_s(ValueName, ARRAYSIZE(ValueName), " ");
                        inm_strcat_s(ValueName, ARRAYSIZE(ValueName), ch_str);
                        cregkey2.DeleteValue(ValueName);
                        inm_strcpy_s(ValueName, ARRAYSIZE(ValueName), SV_DEST_SECURE_VALUE_NAME);
                        inm_strcat_s(ValueName, ARRAYSIZE(ValueName), " ");
                        inm_strcat_s(ValueName, ARRAYSIZE(ValueName), ch_str);
                        cregkey2.DeleteValue(ValueName);

                        inm_strcpy_s(ValueName, ARRAYSIZE(ValueName), SV_INITIALSYNC_OFFSET_LOW_VALUE_NAME);
                        inm_strcat_s(ValueName, ARRAYSIZE(ValueName), " ");
                        inm_strcat_s(ValueName, ARRAYSIZE(ValueName), ch_str);
                        cregkey.DeleteValue(ValueName);
                        inm_strcpy_s(ValueName, ARRAYSIZE(ValueName), SV_INITIALSYNC_OFFSET_HIGH_VALUE_NAME);
                        inm_strcat_s(ValueName, ARRAYSIZE(ValueName), " ");
                        inm_strcat_s(ValueName, ARRAYSIZE(ValueName), ch_str);
                        cregkey.DeleteValue(ValueName);
                        ch_str[0] += 1;
                    }
                    cregkey2.Close();
                    cregkey.DeleteValue(SV_REGISTER_SYSTEM_DRIVE);
                }
                if(AgentType == SV_AGENT_OUTPOST)
                {
                    CRegKey cregkey2;
                    char ch_str[] = "A", ch_end = 'Z';
                    cregkey2.Open( HKEY_LOCAL_MACHINE, SV_ROOT_TRANSPORT_KEY );

                    while(ch_str[0] <= ch_end)
                    {
                        inm_strcpy_s(ValueName, ARRAYSIZE(ValueName), SV_SRC_SECURE_VALUE_NAME);
                        inm_strcat_s(ValueName, ARRAYSIZE(ValueName), " ");
                        inm_strcat_s(ValueName, ARRAYSIZE(ValueName), ch_str);
                        cregkey2.DeleteValue(ValueName);
                        inm_strcpy_s(ValueName, ARRAYSIZE(ValueName), SV_DEST_SECURE_VALUE_NAME);
                        inm_strcat_s(ValueName, ARRAYSIZE(ValueName), " ");
                        inm_strcat_s(ValueName, ARRAYSIZE(ValueName), ch_str);
                        cregkey2.DeleteValue(ValueName);

                        inm_strcpy_s(ValueName, ARRAYSIZE(ValueName), SV_BYTES_APPLIED_THRESHOLD_VALUE_NAME);
                        inm_strcat_s(ValueName, ARRAYSIZE(ValueName), "\\");
                        inm_strcat_s(ValueName, ARRAYSIZE(ValueName), ch_str);
                        cregkey.DeleteValue(ValueName);
                        inm_strcpy_s(ValueName, ARRAYSIZE(ValueName), SV_SYNC_BYTES_APPLIED_THRESHOLD_VALUE_NAME);
                        inm_strcat_s(ValueName, ARRAYSIZE(ValueName), "\\");
                        inm_strcat_s(ValueName, ARRAYSIZE(ValueName), ch_str);
                        cregkey.DeleteValue(ValueName);
                        inm_strcpy_s(ValueName, ARRAYSIZE(ValueName), SV_SNAPSHOT_OFFSET_HIGH);
                        inm_strcat_s(ValueName, ARRAYSIZE(ValueName), " ");
                        inm_strcat_s(ValueName, ARRAYSIZE(ValueName), ch_str);
                        cregkey.DeleteValue(ValueName);
                        inm_strcpy_s(ValueName, ARRAYSIZE(ValueName), SV_SNAPSHOT_OFFSET_LOW);
                        inm_strcat_s(ValueName, ARRAYSIZE(ValueName), " ");
                        inm_strcat_s(ValueName, ARRAYSIZE(ValueName), ch_str);
                        cregkey.DeleteValue(ValueName);
                        ch_str[0] += 1;
                    }
                    cregkey2.Close();
                }
                if(AgentType == SV_AGENT_FILE_REPLICATION)
                {
                }
                cregkey.Close();
            }
        }
    }

    /* Now delete shared values */
    if(ERROR_SUCCESS == cregkey.Open(HKEY_LOCAL_MACHINE, SV_VXAGENT_VALUE_NAME))
    {
        cregkey.Close();
        AgentCount++;
    }
    if(ERROR_SUCCESS == cregkey.Open(HKEY_LOCAL_MACHINE, SV_VXAGENT_VALUE_NAME))
    {
        cregkey.Close();
        AgentCount++;
    }
    if(ERROR_SUCCESS == cregkey.Open(HKEY_LOCAL_MACHINE, SV_FILEREP_AGENT_VALUE_NAME))
    {
        cregkey.Close();
        AgentCount++;
    }
    if( AgentCount <= 1)
    {
        if(ERROR_SUCCESS == cregkey.Open(HKEY_LOCAL_MACHINE, SV_VALUE_NAME))
        {
            /* Delete shared keys under SV root */
            cregkey.DeleteValue(SV_SERVER_NAME_VALUE_NAME);
            cregkey.DeleteValue(SV_SERVER_HTTP_PORT_VALUE_NAME);
            cregkey.DeleteValue(SV_HOST_AGENT_TYPE_VALUE_NAME);
            cregkey.DeleteValue(SV_UNCOMPRESS_EXE_VALUE_NAME);
            cregkey.DeleteValue(THROTTLE_BOOTSTRAP_URL);
            cregkey.DeleteValue(THROTTLE_SENTINEL_URL);
            cregkey.DeleteValue(THROTTLE_OUTPOST_URL);
            cregkey.DeleteValue(THROTTLE_AGENT_URL);
            cregkey.DeleteValue(SV_DEBUG_LOG_LEVEL_VALUE_NAME);
            cregkey.DeleteValue(SV_SERVER_NAME_VALUE_NAME);
            cregkey.Close();
        }

        if(ERROR_SUCCESS == cregkey.Open(HKEY_LOCAL_MACHINE, SV_TRANSPORT_VALUE_NAME))
        {
            /* Delete Transport shared keys */
            cregkey.DeleteValue(SV_FTP_HOST_VALUE_NAME);
            cregkey.DeleteValue(SV_FTP_USER_VALUE_NAME);
            cregkey.DeleteValue(SV_FTP_PASSWORD_VALUE_NAME);
            cregkey.DeleteValue(SV_FTP_PORT_VALUE_NAME);
            cregkey.DeleteValue(SV_FTP_URL_VALUE_NAME);
            cregkey.DeleteValue(SV_INMSYNC_TIMEOUT_SECONDS_VALUE_NAME);
            cregkey.Close();
        }
    }
    return SVS_OK;
}