180 lines
7.5 KiB
C++
180 lines
7.5 KiB
C++
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// 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;
|
||
|
}
|
||
|
|