|
|
/////////////////////////////////////////////////////////////////////////////
//
// Copyright(C) 2000 Microsoft Corporation all rights reserved.
//
// Module: Policy.cpp
//
// Project: Windows 2000 IAS
//
// Description: Implementation of the CPolicy class
//
// Author: tperraut
//
// Revision 02/24/2000 created
//
/////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Policy.h"
//////////////////////////////////////////////////////////////////////////////
// AddmsManipulationRules
//////////////////////////////////////////////////////////////////////////////
void CPolicy::SetmsManipulationRules( const _bstr_t& Search, const _bstr_t& Replace ) { m_Search = Search; m_Replace = Replace; }
//////////////////////////////////////////////////////////////////////////////
// Persist
// return the Identity of the new profile
//////////////////////////////////////////////////////////////////////////////
LONG CPolicy::Persist(CGlobalData& GlobalData) { const LONG MAX_LONG = 14;
// Get the proxy policy and proxyprofiles containers
const WCHAR ProxyPoliciesPath[] = L"Root\0" L"Microsoft Internet Authentication Service\0" L"Proxy Policies\0";
LONG ProxyPolicyIdentity; GlobalData.m_pObjects->WalkPath(ProxyPoliciesPath, ProxyPolicyIdentity);
const WCHAR ProxyProfilesPath[] = L"Root\0" L"Microsoft Internet Authentication Service\0" L"Proxy Profiles\0";
LONG ProxyProfileIdentity; GlobalData.m_pObjects->WalkPath(ProxyProfilesPath, ProxyProfileIdentity); // Create a new policy
GlobalData.m_pObjects->InsertObject( m_PolicyName, ProxyPolicyIdentity, m_NewPolicyIdentity );
// create a new profile
GlobalData.m_pObjects->InsertObject( m_PolicyName, ProxyProfileIdentity, m_NewProfileIdentity ); m_Persisted = TRUE;
// Now insert the attributes in the policy and in the profile
const _bstr_t msNPAction = L"msNPAction"; GlobalData.m_pProperties->InsertProperty( m_NewPolicyIdentity, msNPAction, VT_BSTR, m_PolicyName ); const _bstr_t msNPConstraint = L"msNPConstraint"; GlobalData.m_pProperties->InsertProperty( m_NewPolicyIdentity, msNPConstraint, VT_BSTR, m_Constraint ); const _bstr_t msNPSequence = L"msNPSequence"; WCHAR TempString[MAX_LONG]; _bstr_t Seq = _ltow(m_Sequence, TempString, 10);
GlobalData.m_pProperties->InsertProperty( m_NewPolicyIdentity, msNPSequence, VT_I4, Seq ); const _bstr_t msAuthProviderType = L"msAuthProviderType"; _bstr_t Provider = _ltow(m_AuthType, TempString, 10); GlobalData.m_pProperties->InsertProperty( m_NewProfileIdentity, msAuthProviderType, VT_I4, Provider ); if ( m_ServerGroup.length() ) { const _bstr_t msAuthProviderName = L"msAuthProviderName"; GlobalData.m_pProperties->InsertProperty( m_NewProfileIdentity, msAuthProviderName, VT_BSTR, m_ServerGroup ); }
// If there's an Accounting provider, then its name should
// be persisted too
if ( m_AcctType ) { const _bstr_t msAcctProviderType = L"msAcctProviderType"; Provider = _ltow(m_AuthType, TempString, 10); GlobalData.m_pProperties->InsertProperty( m_NewProfileIdentity, msAcctProviderType, VT_I4, Provider );
const _bstr_t msAcctProviderName = L"msAcctProviderName"; GlobalData.m_pProperties->InsertProperty( m_NewProfileIdentity, msAcctProviderName, VT_BSTR, m_ServerGroup ); } // persist the seearch / replace rules only if there's a search rule
if ( m_Search.length() ) { const _bstr_t msManipulationRule = L"msManipulationRule"; GlobalData.m_pProperties->InsertProperty( m_NewProfileIdentity, msManipulationRule, VT_BSTR, m_Search );
// make sure that InsertProperty has some valid parameters
if ( ! m_Replace.length() ) { m_Replace = L""; } GlobalData.m_pProperties->InsertProperty( m_NewProfileIdentity, msManipulationRule, VT_BSTR, m_Replace ); } // Sets the validation target
if ( m_ManipulationTarget ) { const _bstr_t msManipulationTarget = L"msManipulationTarget"; _bstr_t Target = _ltow(m_ManipulationTarget, TempString, 10); GlobalData.m_pProperties->InsertProperty( m_NewProfileIdentity, msManipulationTarget, VT_I4, Target ); } return m_NewProfileIdentity; }
|