Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

179 lines
7.6 KiB

/////////////////////////////////////////////////////////////////////////////
//
// 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;
}