windows-nt/Source/XPSP1/NT/net/wlbs/nlbmgr/exe/clusterpage.cpp
2020-09-26 16:20:57 +08:00

323 lines
9.9 KiB
C++

#include "ClusterPage.h"
#include "CommonUtils.h"
// History:
// --------
//
// Revised by : mhakim
// Date : 02-12-01
// Reason : Added passwords and remote control for nlbmgr.
BEGIN_MESSAGE_MAP( ClusterPage, CPropertyPage )
ON_WM_HELPINFO()
ON_WM_CONTEXTMENU()
END_MESSAGE_MAP()
ClusterPage::ClusterPage( ClusterProperties* pClusterProperty,
bool fDisablePage, UINT ID )
:
CPropertyPage( ID ),
m_pClusterProperty( pClusterProperty ),
m_fDisablePage (fDisablePage)
{
ZeroMemory(&m_WlbsConfig, sizeof(m_WlbsConfig));
lstrcpyn(m_WlbsConfig.cl_ip_addr, pClusterProperty->cIP, CVY_MAX_CL_IP_ADDR);
lstrcpyn(m_WlbsConfig.cl_net_mask, pClusterProperty->cSubnetMask, CVY_MAX_NETWORK_ADDR);
lstrcpyn(m_WlbsConfig.domain_name, pClusterProperty->cFullInternetName, CVY_MAX_DOMAIN_NAME);
lstrcpyn(m_WlbsConfig.cl_mac_addr, pClusterProperty->cNetworkAddress, CVY_MAX_NETWORK_ADDR);
//
// pClusterProperty->multicastIPAddress could be NULL
//
if (pClusterProperty->multicastIPAddress.length() > 0)
{
lstrcpyn(m_WlbsConfig.szMCastIpAddress, pClusterProperty->multicastIPAddress, CVY_MAX_CL_IP_ADDR);
}
m_WlbsConfig.fMcastSupport = pClusterProperty->multicastSupportEnabled;
m_WlbsConfig.fIGMPSupport = pClusterProperty->igmpSupportEnabled;
m_WlbsConfig.fRctEnabled = pClusterProperty->remoteControlEnabled;
m_WlbsConfig.fMcastSupport = pClusterProperty->multicastSupportEnabled;
m_WlbsConfig.fIpToMCastIp = pClusterProperty->clusterIPToMulticastIP;
m_WlbsConfig.fConvertMac = TRUE; // Always generate the MAC address from IP
lstrcpyn(m_WlbsConfig.szPassword, pClusterProperty->password, CVY_MAX_RCT_CODE + 1);
// m_pCommonClusterPage = new CCommonClusterPage(AfxGetInstanceHandle(),
// &m_WlbsConfig, true, NULL); // fDisablePassword = true
m_pCommonClusterPage = new CCommonClusterPage(AfxGetInstanceHandle(),
&m_WlbsConfig, false, NULL); // fDisablePassword = true
}
ClusterPage::~ClusterPage()
{
delete m_pCommonClusterPage;
}
//+----------------------------------------------------------------------------
//
// Function: ClusterPage::OnInitDialog
//
// Description: Process WM_INITDIALOG message
//
// Arguments: None
//
// Returns: BOOL -
//
// History: fengsun Created Header 1/4/01
//
//+----------------------------------------------------------------------------
BOOL ClusterPage::OnInitDialog()
{
CPropertyPage::OnInitDialog();
//
// Always set that the page has changed, so we don't have to keep track of this.
//
SetModified(TRUE);
m_pCommonClusterPage->OnInitDialog(m_hWnd);
if (m_fDisablePage)
{
//
// The page is for host property.
// disable all cluster windows as we are at host level.
//
::EnableWindow(::GetDlgItem(m_hWnd, IDC_EDIT_CL_IP), FALSE );
::EnableWindow(::GetDlgItem(m_hWnd, IDC_EDIT_CL_MASK), FALSE );
::EnableWindow(::GetDlgItem(m_hWnd, IDC_RADIO_UNICAST), FALSE );
::EnableWindow(::GetDlgItem(m_hWnd, IDC_RADIO_MULTICAST), FALSE );
::EnableWindow(::GetDlgItem(m_hWnd, IDC_CHECK_IGMP), FALSE );
::EnableWindow(::GetDlgItem(m_hWnd, IDC_EDIT_DOMAIN), FALSE );
::EnableWindow(::GetDlgItem(m_hWnd, IDC_CHECK_RCT), FALSE );
::EnableWindow(::GetDlgItem(m_hWnd, IDC_EDIT_PASSW), FALSE );
::EnableWindow(::GetDlgItem(m_hWnd, IDC_EDIT_PASSW2), FALSE );
}
else
{
//
// The page is for cluster property
//
// enable all cluster windows as we are at cluster level.
//
::EnableWindow(::GetDlgItem(m_hWnd, IDC_EDIT_CL_IP), TRUE );
::EnableWindow(::GetDlgItem(m_hWnd, IDC_EDIT_CL_MASK), TRUE );
::EnableWindow(::GetDlgItem(m_hWnd, IDC_RADIO_UNICAST), TRUE );
::EnableWindow(::GetDlgItem(m_hWnd, IDC_RADIO_MULTICAST), TRUE );
::EnableWindow(::GetDlgItem(m_hWnd, IDC_CHECK_IGMP), TRUE );
::EnableWindow(::GetDlgItem(m_hWnd, IDC_EDIT_DOMAIN), TRUE );
::EnableWindow(::GetDlgItem(m_hWnd, IDC_CHECK_RCT), TRUE );
// enable remote control check box only if remote control is disabled.
//
// if remote control is enabled , enable password windows
// else disable them.
if (m_WlbsConfig.fRctEnabled)
{
::EnableWindow(::GetDlgItem(m_hWnd, IDC_EDIT_PASSW), TRUE );
::EnableWindow(::GetDlgItem(m_hWnd, IDC_EDIT_PASSW2), TRUE );
}
else
{
::EnableWindow(::GetDlgItem(m_hWnd, IDC_EDIT_PASSW), FALSE );
::EnableWindow(::GetDlgItem(m_hWnd, IDC_EDIT_PASSW2), FALSE );
}
}
::EnableWindow(::GetDlgItem(m_hWnd, IDC_EDIT_ETH), FALSE );
return TRUE;
}
//+----------------------------------------------------------------------------
//
// Function: ClusterPage::OnContextMenu
//
// Description: Process WM_CONTEXTMENU message
//
// Arguments: CWnd* pWnd -
// CPoint point -
//
// Returns: Nothing
//
// History: fengsun Created Header 1/4/01
//
//+----------------------------------------------------------------------------
//+----------------------------------------------------------------------------
//
// Function: ClusterPage::OnCommand
//
// Description: Process WM_COMMAND message
//
// Arguments: WPARAM wParam -
// LPARAM lParam -
//
// Returns: BOOL -
//
// History: fengsun Created Header 1/4/01
//
//+----------------------------------------------------------------------------
BOOL ClusterPage::OnCommand(WPARAM wParam, LPARAM lParam)
{
switch (LOWORD(wParam))
{
case IDC_EDIT_CL_IP:
return m_pCommonClusterPage->OnEditClIp(HIWORD(wParam),LOWORD(wParam), (HWND)lParam);
break;
case IDC_EDIT_CL_MASK:
return m_pCommonClusterPage->OnEditClMask(HIWORD(wParam),LOWORD(wParam), (HWND)lParam);
break;
case IDC_CHECK_RCT:
return m_pCommonClusterPage->OnCheckRct(HIWORD(wParam),LOWORD(wParam), (HWND)lParam);
break;
case IDC_BUTTON_HELP:
return m_pCommonClusterPage->OnButtonHelp(HIWORD(wParam),LOWORD(wParam), (HWND)lParam);
break;
case IDC_RADIO_UNICAST:
return m_pCommonClusterPage->OnCheckMode(HIWORD(wParam),LOWORD(wParam), (HWND)lParam);
break;
case IDC_RADIO_MULTICAST:
return m_pCommonClusterPage->OnCheckMode(HIWORD(wParam),LOWORD(wParam), (HWND)lParam);
break;
case IDC_CHECK_IGMP:
return m_pCommonClusterPage->OnCheckIGMP(HIWORD(wParam),LOWORD(wParam), (HWND)lParam);
break;
}
return CPropertyPage::OnCommand(wParam, lParam);
}
//+----------------------------------------------------------------------------
//
// Function: ClusterPage::OnNotify
//
// Description: Process WM_NOTIFY message
//
// Arguments: WPARAM idCtrl -
// LPARAM pnmh -
// LRESULT* pResult -
//
// Returns: BOOL -
//
// History: fengsun Created Header 1/4/01
//
//+----------------------------------------------------------------------------
BOOL ClusterPage::OnNotify(WPARAM idCtrl , LPARAM pnmh , LRESULT* pResult)
{
NMHDR* pNmhdr = (NMHDR*)pnmh ;
switch(pNmhdr->code)
{
case PSN_APPLY:
*pResult = m_pCommonClusterPage->OnApply(idCtrl, pNmhdr, *(BOOL*)pResult);
if (*pResult == PSNRET_NOERROR)
{
//
// Call the base class, such that OnOk can be called
//
return CPropertyPage::OnNotify(idCtrl, pnmh, pResult);
}
else
{
return TRUE;
}
case PSN_KILLACTIVE:
*pResult = m_pCommonClusterPage->OnKillActive(idCtrl, pNmhdr, *(BOOL*)pResult);
return TRUE;
case PSN_SETACTIVE:
*pResult = m_pCommonClusterPage->OnActive(idCtrl, pNmhdr, *(BOOL*)pResult);
return TRUE;
case PSN_RESET:
*pResult = m_pCommonClusterPage->OnCancel(idCtrl, pNmhdr, *(BOOL*)pResult);
return TRUE;
case IPN_FIELDCHANGED:
*pResult = m_pCommonClusterPage->OnIpFieldChange(idCtrl, pNmhdr, *(BOOL*)pResult);
return TRUE;
}
return CPropertyPage::OnNotify(idCtrl, pnmh, pResult);
}
//+----------------------------------------------------------------------------
//
// Function: ClusterPage::OnOK
//
// Description: The property page is closed by OK
//
// Arguments: None
//
// Returns: Nothing
//
// History: fengsun Created Header 1/4/01
//
//+----------------------------------------------------------------------------
void ClusterPage::OnOK()
{
m_pClusterProperty->cIP = m_WlbsConfig.cl_ip_addr;
m_pClusterProperty->cSubnetMask = m_WlbsConfig.cl_net_mask;
m_pClusterProperty->cFullInternetName = m_WlbsConfig.domain_name;
m_pClusterProperty->cNetworkAddress = m_WlbsConfig.cl_mac_addr;
m_pClusterProperty->multicastIPAddress = m_WlbsConfig.szMCastIpAddress;
m_pClusterProperty->multicastSupportEnabled= m_WlbsConfig.fMcastSupport;
m_pClusterProperty->igmpSupportEnabled = m_WlbsConfig.fIGMPSupport;
m_pClusterProperty->remoteControlEnabled = m_WlbsConfig.fRctEnabled;
m_pClusterProperty->multicastSupportEnabled = m_WlbsConfig.fMcastSupport;
m_pClusterProperty->clusterIPToMulticastIP = m_WlbsConfig.fIpToMCastIp;
m_pClusterProperty->password = m_WlbsConfig.szPassword;
CPropertyPage::OnOK();
}
BOOL
ClusterPage::OnHelpInfo (HELPINFO* helpInfo )
{
if( helpInfo->iContextType == HELPINFO_WINDOW )
{
::WinHelp( static_cast<HWND> ( helpInfo->hItemHandle ),
CVY_CTXT_HELP_FILE,
HELP_WM_HELP,
(ULONG_PTR ) g_aHelpIDs_IDD_CLUSTER_PAGE);
}
return TRUE;
}
void
ClusterPage::OnContextMenu( CWnd* pWnd, CPoint point )
{
::WinHelp( m_hWnd,
CVY_CTXT_HELP_FILE,
HELP_CONTEXTMENU,
(ULONG_PTR ) g_aHelpIDs_IDD_CLUSTER_PAGE);
}