mirror of https://github.com/lianthony/NT4.0
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.
232 lines
4.5 KiB
232 lines
4.5 KiB
//
|
|
// accessdl.cpp : implementation file
|
|
//
|
|
#include "stdafx.h"
|
|
#include "comprop.h"
|
|
#include "ipaddr.hpp"
|
|
#include "sitesecu.h"
|
|
#include "accessdl.h"
|
|
#include "dnsnamed.h"
|
|
|
|
#ifdef _DEBUG
|
|
#undef THIS_FILE
|
|
static char BASED_CODE THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
enum
|
|
{
|
|
RADIO_SINGLE = 0,
|
|
RADIO_MULTIPLE,
|
|
};
|
|
|
|
//
|
|
// CAccessDlg dialog
|
|
//
|
|
CAccessDlg::CAccessDlg(
|
|
BOOL fDenyAccessMode,
|
|
CAccess * pAccess,
|
|
CWnd* pParent
|
|
)
|
|
: CDialog(CAccessDlg::IDD, pParent),
|
|
m_pAccess(pAccess),
|
|
m_fNew(pAccess == NULL),
|
|
m_fDenyAccessMode(fDenyAccessMode),
|
|
m_strIpAddress(),
|
|
m_strNetworkID()
|
|
{
|
|
if (m_pAccess == NULL)
|
|
{
|
|
m_pAccess = new CAccess;
|
|
m_pAccess->GrantAccess(!m_fDenyAccessMode);
|
|
}
|
|
|
|
if (m_pAccess != NULL)
|
|
{
|
|
//{{AFX_DATA_INIT(CAccessDlg)
|
|
m_nSingleGroup = m_pAccess->IsSingle() ? RADIO_SINGLE : RADIO_MULTIPLE;
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
//
|
|
// We can only look at granted items when
|
|
// deny by default is on and vice versa
|
|
//
|
|
ASSERT(m_pAccess->HasAccess() == !m_fDenyAccessMode);
|
|
|
|
VERIFY(m_strIpAddress.LoadString(IDS_PROMPT_IP_ADDRESS));
|
|
VERIFY(m_strNetworkID.LoadString(IDS_PROMPT_NETWORK_ID));
|
|
}
|
|
|
|
void
|
|
CAccessDlg::DoDataExchange(
|
|
CDataExchange* pDX
|
|
)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CAccessDlg)
|
|
DDX_Control(pDX, IDC_STATIC_IP_ADDRESS, m_static_IpAddress);
|
|
DDX_Control(pDX, IDC_BUTTON_DNS, m_button_DNS);
|
|
DDX_Control(pDX, IDOK, m_button_OK);
|
|
DDX_Control(pDX, IDC_STATIC_SUBNET_MASK, m_static_SubnetMask);
|
|
DDX_Radio(pDX, IDC_RADIO_SINGLE, m_nSingleGroup);
|
|
//}}AFX_DATA_MAP
|
|
|
|
DDX_Control(pDX, IDC_IPA_IPADDRESS, m_ipa_IpAddress);
|
|
DDX_Control(pDX, IDC_IPA_SUBNET_MASK, m_ipa_SubnetMask);
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CAccessDlg, CDialog)
|
|
//{{AFX_MSG_MAP(CAccessDlg)
|
|
ON_BN_CLICKED(IDC_RADIO_MULTIPLE, OnRadioMultiple)
|
|
ON_BN_CLICKED(IDC_RADIO_SINGLE, OnRadioSingle)
|
|
ON_BN_CLICKED(IDC_BUTTON_DNS, OnButtonDns)
|
|
//}}AFX_MSG_MAP
|
|
|
|
ON_EN_CHANGE(IDC_IPA_IPADDRESS, OnItemChanged)
|
|
ON_EN_CHANGE(IDC_IPA_SUBNET_MASK, OnItemChanged)
|
|
|
|
END_MESSAGE_MAP()
|
|
|
|
void
|
|
CAccessDlg::SetControlStates(
|
|
BOOL fSingle
|
|
)
|
|
{
|
|
m_fSingle = fSingle;
|
|
m_static_SubnetMask.EnableWindow(!m_fSingle);
|
|
m_ipa_SubnetMask.EnableWindow(!m_fSingle);
|
|
m_button_DNS.EnableWindow(m_fSingle);
|
|
|
|
m_static_IpAddress.SetWindowText(m_fSingle
|
|
? m_strIpAddress
|
|
: m_strNetworkID
|
|
);
|
|
}
|
|
|
|
//
|
|
// CAccessDlg message handlers
|
|
//
|
|
BOOL
|
|
CAccessDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
ASSERT(m_pAccess != NULL);
|
|
if (m_pAccess == NULL)
|
|
{
|
|
TRACEEOLID(_T("CAccess is NULL -- aborting dialog"));
|
|
EndDialog(IDCANCEL);
|
|
return FALSE;
|
|
}
|
|
|
|
//
|
|
// Use an appropriate title for the dialog
|
|
//
|
|
CString strTitle;
|
|
|
|
VERIFY(strTitle.LoadString(m_fDenyAccessMode
|
|
? IDS_DENY
|
|
: IDS_GRANT));
|
|
SetWindowText(strTitle);
|
|
|
|
SetControlStates(m_pAccess->IsSingle());
|
|
DWORD dwIP = m_pAccess->QueryIpAddress();
|
|
|
|
if (dwIP != 0L)
|
|
{
|
|
m_ipa_IpAddress.SetAddress((LONG)m_pAccess->QueryIpAddress());
|
|
}
|
|
|
|
if (!m_pAccess->IsSingle())
|
|
{
|
|
m_ipa_SubnetMask.SetAddress((LONG)m_pAccess->QuerySubnetMask());
|
|
}
|
|
|
|
//
|
|
// No changes made yet
|
|
//
|
|
m_button_OK.EnableWindow(FALSE);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void
|
|
CAccessDlg::OnOK()
|
|
{
|
|
UpdateData(TRUE);
|
|
|
|
ASSERT (m_pAccess != NULL);
|
|
|
|
DWORD dwIP;
|
|
DWORD dwMask;
|
|
m_ipa_IpAddress.GetAddress(&dwIP);
|
|
|
|
if (m_nSingleGroup == 0)
|
|
{
|
|
//
|
|
// Make mask for single computer 255.255.255.255
|
|
//
|
|
dwMask = SINGLE_MASK;
|
|
}
|
|
else
|
|
{
|
|
m_ipa_SubnetMask.GetAddress(&dwMask);
|
|
}
|
|
|
|
m_pAccess->SetValues(
|
|
!m_fDenyAccessMode,
|
|
m_nSingleGroup == 0,
|
|
dwIP,
|
|
dwMask
|
|
);
|
|
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
void
|
|
CAccessDlg::OnCancel()
|
|
{
|
|
if (m_fNew && m_pAccess != NULL)
|
|
{
|
|
delete m_pAccess;
|
|
m_pAccess = NULL;
|
|
}
|
|
|
|
CDialog::OnCancel();
|
|
}
|
|
|
|
void
|
|
CAccessDlg::OnRadioMultiple()
|
|
{
|
|
SetControlStates(FALSE);
|
|
OnItemChanged();
|
|
}
|
|
|
|
void
|
|
CAccessDlg::OnRadioSingle()
|
|
{
|
|
SetControlStates(TRUE);
|
|
OnItemChanged();
|
|
}
|
|
|
|
void
|
|
CAccessDlg::OnItemChanged()
|
|
{
|
|
DWORD dwIP;
|
|
DWORD dwMask;
|
|
|
|
m_ipa_IpAddress.GetAddress(&dwIP);
|
|
m_ipa_SubnetMask.GetAddress(&dwMask);
|
|
|
|
m_button_OK.EnableWindow(dwIP != 0L && (m_fSingle || dwMask != 0L));
|
|
}
|
|
|
|
void
|
|
CAccessDlg::OnButtonDns()
|
|
{
|
|
//
|
|
// Ask for a DNS name to resolve to an IP address
|
|
//
|
|
CDnsNameDlg dlg(&m_ipa_IpAddress);
|
|
dlg.DoModal();
|
|
}
|