251 lines
7 KiB
C++
251 lines
7 KiB
C++
//////////////////////////////////////////////////////////////////////////////
|
|
/*++
|
|
|
|
Copyright (C) Microsoft Corporation
|
|
|
|
Module Name: rapwz_profile.cpp
|
|
|
|
Abstract:
|
|
Implementation file for the CNewRAPWiz_EditProfile class.
|
|
We implement the class needed to handle the first property page for a Policy node.
|
|
|
|
Revision History:
|
|
mmaguire 12/15/97 - created
|
|
byao 1/22/98 Modified for Network Access Policy
|
|
|
|
--*/
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
#include "Precompiled.h"
|
|
#include "rapwz_profile.h"
|
|
#include "NapUtil.h"
|
|
#include "PolicyNode.h"
|
|
#include "PoliciesNode.h"
|
|
#include "rasprof.h"
|
|
#include "ChangeNotification.h"
|
|
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Function: CNewRAPWiz_EditProfile
|
|
//
|
|
// Class: CNewRAPWiz_EditProfile
|
|
//
|
|
// Synopsis: class constructor
|
|
//
|
|
// Arguments: CPolicyNode *pPolicyNode - policy node for this property page
|
|
// CIASAttrList *pAttrList -- attribute list
|
|
// TCHAR* pTitle = NULL -
|
|
//
|
|
// Returns: Nothing
|
|
//
|
|
// History: Created Header byao 2/16/98 4:31:52 PM
|
|
//
|
|
//+---------------------------------------------------------------------------
|
|
CNewRAPWiz_EditProfile::CNewRAPWiz_EditProfile(
|
|
CRapWizardData* pWizData,
|
|
LONG_PTR hNotificationHandle,
|
|
CIASAttrList *pIASAttrList,
|
|
TCHAR* pTitle, BOOL bOwnsNotificationHandle,
|
|
bool isWin2k
|
|
)
|
|
: CIASWizard97Page<CNewRAPWiz_EditProfile, IDS_NEWRAPWIZ_EDITPROFILE_TITLE, IDS_NEWRAPWIZ_EDITPROFILE_SUBTITLE> ( hNotificationHandle, pTitle, bOwnsNotificationHandle ),
|
|
m_spWizData(pWizData),
|
|
m_isWin2k(isWin2k)
|
|
{
|
|
TRACE_FUNCTION("CNewRAPWiz_EditProfile::CNewRAPWiz_EditProfile");
|
|
|
|
m_pIASAttrList = pIASAttrList;
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Function: CNewRAPWiz_EditProfile
|
|
//
|
|
// Class: CNewRAPWiz_EditProfile
|
|
//
|
|
// Synopsis: class destructor
|
|
//
|
|
// Returns: Nothing
|
|
//
|
|
// History: Created Header byao 2/16/98 4:31:52 PM
|
|
//
|
|
//+---------------------------------------------------------------------------
|
|
CNewRAPWiz_EditProfile::~CNewRAPWiz_EditProfile()
|
|
{
|
|
TRACE_FUNCTION("CNewRAPWiz_EditProfile::~CNewRAPWiz_EditProfile");
|
|
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
/*++
|
|
|
|
CNewRAPWiz_EditProfile::OnInitDialog
|
|
|
|
--*/
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
LRESULT CNewRAPWiz_EditProfile::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
|
{
|
|
TRACE_FUNCTION("CNewRAPWiz_EditProfile::OnInitDialog");
|
|
|
|
HRESULT hr = S_OK;
|
|
BOOL fRet;
|
|
CComPtr<IUnknown> spUnknown;
|
|
CComPtr<IEnumVARIANT> spEnumVariant;
|
|
long ulCount;
|
|
ULONG ulCountReceived;
|
|
|
|
SetModified(FALSE);
|
|
return TRUE; // ISSUE: what do we need to be returning here?
|
|
}
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
/*++
|
|
|
|
CNewRAPWiz_EditProfile::OnWizardFinish
|
|
|
|
--*/
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
BOOL CNewRAPWiz_EditProfile::OnWizardNext()
|
|
{
|
|
|
|
// reset the dirty bit
|
|
SetModified(FALSE);
|
|
|
|
return m_spWizData->GetNextPageId(((PROPSHEETPAGE*)(*this))->pszTemplate);
|
|
|
|
}
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
/*++
|
|
CNewRAPWiz_EditProfile::OnQueryCancel
|
|
|
|
--*/
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
BOOL CNewRAPWiz_EditProfile::OnQueryCancel()
|
|
{
|
|
TRACE_FUNCTION("CNewRAPWiz_EditProfile::OnQueryCancel");
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
/*++
|
|
|
|
CNewRAPWiz_EditProfile::OnEditProfile
|
|
|
|
--*/
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
//////////
|
|
// Signature of the entry point to the profile editing DLL.
|
|
//////////
|
|
typedef HRESULT (APIENTRY *OPENRAS_IASPROFILEDLG)(
|
|
LPCWSTR pszMachineName,
|
|
ISdo* pProfile, // profile SDO pointer
|
|
ISdoDictionaryOld* pDictionary, // dictionary SDO pointer
|
|
BOOL bReadOnly, // if the dlg is for readonly
|
|
DWORD dwTabFlags, // what to show
|
|
void *pvData // additional data
|
|
);
|
|
|
|
LRESULT CNewRAPWiz_EditProfile::OnEditProfile(UINT uMsg, WPARAM wParam, HWND hwnd, BOOL& bHandled)
|
|
{
|
|
TRACE_FUNCTION("CNewRAPWiz_EditProfile::OnEditProfile");
|
|
|
|
OPENRAS_IASPROFILEDLG pfnProfileEditor = NULL;
|
|
|
|
HRESULT hr = S_OK;
|
|
HMODULE hProfileDll = NULL;
|
|
|
|
hProfileDll = LoadLibrary(_T("rasuser.dll"));
|
|
if ( NULL == hProfileDll )
|
|
{
|
|
hr = HRESULT_FROM_WIN32(GetLastError());
|
|
ErrorTrace(ERROR_NAPMMC_POLICYPAGE1, "LoadLibrary() failed, err = %x", hr);
|
|
|
|
ShowErrorDialog(m_hWnd, IDS_ERROR_CANT_FIND_PROFILEDLL, NULL, hr);
|
|
return 0;
|
|
}
|
|
|
|
pfnProfileEditor = (OPENRAS_IASPROFILEDLG) GetProcAddress(hProfileDll, "OpenRAS_IASProfileDlg");
|
|
if ( NULL == pfnProfileEditor )
|
|
{
|
|
hr = HRESULT_FROM_WIN32(GetLastError());
|
|
ErrorTrace(ERROR_NAPMMC_POLICYPAGE1, "GetProcAddress() failed, err = %x", hr);
|
|
|
|
ShowErrorDialog(m_hWnd, IDS_ERROR_CANT_FIND_PROFILEAPI, NULL, hr);
|
|
FreeLibrary(hProfileDll);
|
|
return 0;
|
|
}
|
|
|
|
// findout if this is extending RRAS or IAS
|
|
|
|
CPoliciesNode* pPoliciesNode = dynamic_cast<CPoliciesNode*>(m_spWizData->m_pPolicyNode->m_pParentNode);
|
|
|
|
DWORD dwFlags = RAS_IAS_PROFILEDLG_SHOW_IASTABS;
|
|
if(pPoliciesNode != NULL)
|
|
{
|
|
if(!pPoliciesNode->m_fExtendingIAS)
|
|
dwFlags = RAS_IAS_PROFILEDLG_SHOW_RASTABS;
|
|
}
|
|
|
|
if(m_isWin2k)
|
|
{
|
|
dwFlags |= RAS_IAS_PROFILEDLG_SHOW_WIN2K;
|
|
}
|
|
|
|
//
|
|
// now we do have this profile sdo, call the API
|
|
//
|
|
hr = pfnProfileEditor(
|
|
m_spWizData->m_pPolicyNode->m_pszServerAddress,
|
|
m_spWizData->m_spProfileSdo,
|
|
m_spWizData->m_spDictionarySdo,
|
|
FALSE,
|
|
dwFlags,
|
|
(void *)&(m_pIASAttrList->m_AttrList)
|
|
);
|
|
FreeLibrary(hProfileDll);
|
|
DebugTrace(DEBUG_NAPMMC_POLICYPAGE1, "OpenRAS_IASProfileDlg() returned %x", hr);
|
|
if ( FAILED(hr) )
|
|
{
|
|
return hr;
|
|
}
|
|
|
|
return hr;
|
|
}
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
/*++
|
|
|
|
CNewRAPWiz_EditProfile::OnSetActive
|
|
|
|
Return values:
|
|
|
|
TRUE if the page can be made active
|
|
FALSE if the page should be be skipped and the next page should be looked at.
|
|
|
|
Remarks:
|
|
|
|
If you want to change which pages are visited based on a user's
|
|
choices in a previous page, return FALSE here as appropriate.
|
|
|
|
--*/
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
BOOL CNewRAPWiz_EditProfile::OnSetActive()
|
|
{
|
|
ATLTRACE(_T("# CNewRAPWiz_EditProfile::OnSetActive\n"));
|
|
|
|
// MSDN docs say you need to use PostMessage here rather than SendMessage.
|
|
::PropSheet_SetWizButtons(GetParent(), PSWIZB_BACK | PSWIZB_NEXT);
|
|
|
|
return TRUE;
|
|
|
|
}
|