📄 confignetwork.cpp
字号:
// ConfigNetwork.cpp : implementation file
//
#include "stdafx.h"
#include "netsdkdemo.h"
#include "ConfigNetwork.h"
#include "NetSDKDemoDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CConfigNetwork dialog
CConfigNetwork::CConfigNetwork(CWnd* pParent /*=NULL*/)
: CDialog(CConfigNetwork::IDD, pParent)
{
//{{AFX_DATA_INIT(CConfigNetwork)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_pDev = 0;
memset(&m_netCFG, 0, sizeof(DHDEV_NET_CFG));
memset(&m_sysCFG, 0, sizeof(DHDEV_SYSTEM_ATTR_CFG));
m_bInited = FALSE;
m_etherIdx = -1;
m_hostIdx = -1;
}
void CConfigNetwork::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CConfigNetwork)
DDX_Control(pDX, IDC_CHECK_REMOTEHOST, m_hostEnchk);
DDX_Control(pDX, IDC_COMBO_NETINTERFACE, m_interfacesel);
DDX_Control(pDX, IDC_COMBO_REMOTEHOST, m_remotehostsel);
DDX_Control(pDX, IDC_COMBO_ETHERNET, m_ethernetsel);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CConfigNetwork, CDialog)
//{{AFX_MSG_MAP(CConfigNetwork)
ON_WM_SHOWWINDOW()
ON_BN_CLICKED(IDC_APPLY, OnApply)
ON_BN_CLICKED(IDC_UNDO_ALL, OnUndoAll)
ON_CBN_SELCHANGE(IDC_COMBO_REMOTEHOST, OnSelchangeComboRemotehost)
ON_CBN_SELCHANGE(IDC_COMBO_ETHERNET, OnSelchangeComboEthernet)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CConfigNetwork message handlers
BOOL CConfigNetwork::OnInitDialog()
{
CDialog::OnInitDialog();
g_SetWndStaticText(this);
//ethernet type
m_interfacesel.InsertString(0, NAME_NETCFG_NET1);
m_interfacesel.InsertString(1, NAME_NETCFG_NET2);
m_interfacesel.InsertString(2, NAME_NETCFG_NET3);
m_interfacesel.InsertString(3, NAME_NETCFG_NET4);
m_interfacesel.InsertString(4, NAME_NETCFG_NET5);
//remote host list
m_remotehostsel.InsertString(0, NAME_NETCFG_REMOTE_ALARM);
m_remotehostsel.InsertString(1, NAME_NETCFG_REMOTE_LOG);
m_remotehostsel.InsertString(2, NAME_NETCFG_REMOTE_SMTP);
m_remotehostsel.InsertString(3, NAME_NETCFG_REMOTE_MULTICAST);
m_remotehostsel.InsertString(4, NAME_NETCFG_REMOTE_NFS);
m_remotehostsel.InsertString(5, NAME_NETCFG_REMOTE_FTP);
m_remotehostsel.InsertString(6, NAME_NETCFG_REMOTE_PPPOE);
m_remotehostsel.InsertString(7, NAME_NETCFG_REMOTE_DDNS);
m_remotehostsel.InsertString(8, NAME_NETCFG_REMOTE_DNS);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CConfigNetwork::OnShowWindow(BOOL bShow, UINT nStatus)
{
CDialog::OnShowWindow(bShow, nStatus);
GetConfig();
}
void CConfigNetwork::GetConfig()
{
if (!m_pDev || m_bInited)
{
return;
}
BOOL bRet = FALSE;
DWORD retlen = 0;
bRet = CLIENT_GetDevConfig(m_pDev->LoginID, DH_DEV_DEVICECFG, 0,
&m_sysCFG, sizeof(DHDEV_SYSTEM_ATTR_CFG), &retlen);
if (!bRet || retlen != sizeof(DHDEV_SYSTEM_ATTR_CFG))
{
((CNetSDKDemoDlg*)AfxGetMainWnd())->LastError();
return;
}
CString strEth;
for (int i = 0; i < m_sysCFG.byNetIONum; i++)
{
strEth.Format("Ethernet %d", i+1);
m_ethernetsel.InsertString(i, strEth);
}
bRet = CLIENT_GetDevConfig(m_pDev->LoginID, DH_DEV_NETCFG, 0,
&m_netCFG, sizeof(DHDEV_NET_CFG), &retlen);
if (!bRet || retlen != sizeof(DHDEV_NET_CFG))
{
((CNetSDKDemoDlg*)AfxGetMainWnd())->LastError();
return;
}
else
{
m_bInited = TRUE;
}
//show config information
SetDlgItemText(IDC_EDIT_DEVNAME, m_netCFG.sDevName);
SetDlgItemInt(IDC_EDIT_MAXTCP, m_netCFG.wTcpMaxConnectNum);
SetDlgItemInt(IDC_EDIT_TCPPORT, m_netCFG.wTcpPort);
SetDlgItemInt(IDC_EDIT_UDPPORT, m_netCFG.wUdpPort);
SetDlgItemInt(IDC_EDIT_HTTPPORT, m_netCFG.wHttpPort);
SetDlgItemInt(IDC_EDIT_HTTPSPORT, m_netCFG.wHttpsPort);
SetDlgItemInt(IDC_EDIT_SSLPORT, m_netCFG.wSslPort);
SetDlgItemInt(IDC_EDIT_MAXTCP, m_netCFG.wTcpMaxConnectNum);
SetDlgItemInt(IDC_EDIT_MAXTCP, m_netCFG.wTcpMaxConnectNum);
//ethernet config
if (m_ethernetsel.GetCount() > 0)
{
m_ethernetsel.SetCurSel(0);
OnSelchangeComboEthernet();
}
//remote config
if (m_remotehostsel.GetCount() > 0)
{
m_remotehostsel.SetCurSel(0);
OnSelchangeComboRemotehost();
}
//mail config
SetDlgItemText(IDC_EDIT_MAILUSERNAME, m_netCFG.struMail.sUserName);
SetDlgItemText(IDC_EDIT_MAILUSERPSW, m_netCFG.struMail.sUserPsw);
SetDlgItemText(IDC_EDIT_MAILIP, m_netCFG.struMail.sMailIPAddr);
SetDlgItemInt(IDC_EDIT_MAILPORT, m_netCFG.struMail.wMailPort);
SetDlgItemText(IDC_EDIT_MAILDESADDR, m_netCFG.struMail.sDestAddr);
SetDlgItemText(IDC_EDIT_MAILCCADDR, m_netCFG.struMail.sCcAddr);
SetDlgItemText(IDC_EDIT_MAILBCCADDR, m_netCFG.struMail.sBccAddr);
SetDlgItemText(IDC_EDIT_MAILSUBJECT, m_netCFG.struMail.sSubject);
}
void CConfigNetwork::SetDevice(DeviceNode *pDev)
{
m_pDev = pDev;
}
DH_REMOTE_HOST *CConfigNetwork::GetRemoteHostType(int hostIdx, BOOL bChg)
{
DH_REMOTE_HOST *ret = 0;
switch(hostIdx)
{
case 0: /* 报警服务器 */
ret = &m_netCFG.struAlarmHost;
break;
case 1:/* 日志服务器 */
ret = &m_netCFG.struLogHost;
break;
case 2:/* SMTP服务器 */
ret = &m_netCFG.struSmtpHost;
break;
case 3:/* 多播组 */
ret = &m_netCFG.struMultiCast;
break;
case 4:/* NFS服务器 */
ret = &m_netCFG.struNfs;
break;
case 5:/* 远程Ftp服务器 */ //NSP
ret = &m_netCFG.struFtpServer;
m_hostEnchk.EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_HOSTIP)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_HOSTPORT)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_HOSTUSERNAME)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_HOSTUSERPSW)->EnableWindow(FALSE);
return ret; //NSP
break;
case 6:/* PPPoE服务器 */
ret = &m_netCFG.struPppoe;
SetDlgItemText(IDC_HOSTRESERVED, NAME_NETCFG_PPPOE_IP);
SetDlgItemText(IDC_EDIT_HOSTRESERVED, m_netCFG.sPppoeIP);
break;
case 7:/* DDNS服务器 */
ret = &m_netCFG.struDdns;
SetDlgItemText(IDC_HOSTRESERVED, NAME_NETCFG_DDNS_HOSTNAME);
SetDlgItemText(IDC_EDIT_HOSTRESERVED, m_netCFG.sDdnsHostName);
break;
case 8:/* DNS服务器*/
ret = &m_netCFG.struDns;
break;
default:
break;
}
if (bChg && ret)
{
m_hostEnchk.EnableWindow(0 == hostIdx || 6 == hostIdx || 7 == hostIdx);
GetDlgItem(IDC_EDIT_HOSTIP)->EnableWindow(6 != hostIdx);
GetDlgItem(IDC_EDIT_HOSTPORT)->EnableWindow(6 != hostIdx && 8 != hostIdx);
GetDlgItem(IDC_EDIT_HOSTUSERNAME)->EnableWindow(6 == hostIdx);
GetDlgItem(IDC_EDIT_HOSTUSERPSW)->EnableWindow(6 == hostIdx);
GetDlgItem(IDC_HOSTRESERVED)->ShowWindow((6 == hostIdx || 7 == hostIdx)?SW_SHOW:SW_HIDE);
GetDlgItem(IDC_EDIT_HOSTRESERVED)->ShowWindow((6 == hostIdx || 7 == hostIdx)?SW_SHOW:SW_HIDE);
}
return ret;
}
void CConfigNetwork::OnApply()
{
if (!m_bInited)
{
return;
}
if (m_etherIdx < 0)
{
return;
}
if (m_hostIdx < 0)
{
return;
}
//get config information
GetDlgItemText(IDC_EDIT_DEVNAME, m_netCFG.sDevName, DH_MAX_NAME_LEN);
m_netCFG.wTcpMaxConnectNum = GetDlgItemInt(IDC_EDIT_MAXTCP);
m_netCFG.wTcpPort = GetDlgItemInt(IDC_EDIT_TCPPORT);
m_netCFG.wUdpPort = GetDlgItemInt(IDC_EDIT_UDPPORT);
m_netCFG.wHttpPort = GetDlgItemInt(IDC_EDIT_HTTPPORT);
m_netCFG.wHttpsPort = GetDlgItemInt(IDC_EDIT_HTTPSPORT);
m_netCFG.wSslPort = GetDlgItemInt(IDC_EDIT_SSLPORT);
m_netCFG.wTcpMaxConnectNum = GetDlgItemInt(IDC_EDIT_MAXTCP);
m_netCFG.wTcpMaxConnectNum = GetDlgItemInt(IDC_EDIT_MAXTCP);
//ethernet config
GetDlgItemText(IDC_EDIT_NETIP, m_netCFG.stEtherNet[m_etherIdx].sDevIPAddr, DH_MAX_IPADDR_LEN);
GetDlgItemText(IDC_EDIT_NETIPMASK, m_netCFG.stEtherNet[m_etherIdx].sDevIPMask, DH_MAX_IPADDR_LEN);
GetDlgItemText(IDC_EDIT_NETGATEWAY, m_netCFG.stEtherNet[m_etherIdx].sGatewayIP, DH_MAX_IPADDR_LEN);
m_netCFG.stEtherNet[m_etherIdx].dwNetInterface = m_interfacesel.GetCurSel()+1;
GetDlgItemText(IDC_EDIT_NETMAC, m_netCFG.stEtherNet[m_etherIdx].byMACAddr, DH_MACADDR_LEN);
//remote config
DH_REMOTE_HOST *thishost = 0;
thishost = GetRemoteHostType(m_hostIdx);
if (!thishost)
{
return;
}
thishost->byEnable = m_hostEnchk.GetCheck();
GetDlgItemText(IDC_EDIT_HOSTIP, thishost->sHostIPAddr, DH_MAX_IPADDR_LEN);
thishost->wHostPort = GetDlgItemInt(IDC_EDIT_HOSTPORT);
GetDlgItemText(IDC_EDIT_HOSTUSERNAME, thishost->sHostUser, DH_MAX_HOST_NAMELEN);
GetDlgItemText(IDC_EDIT_HOSTUSERPSW, thishost->sHostPassword, DH_MAX_HOST_PSWLEN);
//mail config
GetDlgItemText(IDC_EDIT_MAILUSERNAME, m_netCFG.struMail.sUserName, DH_MAX_NAME_LEN);
GetDlgItemText(IDC_EDIT_MAILUSERPSW, m_netCFG.struMail.sUserPsw, DH_MAX_NAME_LEN);
GetDlgItemText(IDC_EDIT_MAILIP, m_netCFG.struMail.sMailIPAddr, DH_MAX_IPADDR_LEN);
m_netCFG.struMail.wMailPort = GetDlgItemInt(IDC_EDIT_MAILPORT);
GetDlgItemText(IDC_EDIT_MAILDESADDR, m_netCFG.struMail.sDestAddr, DH_MAX_MAIL_ADDR_LEN);
GetDlgItemText(IDC_EDIT_MAILCCADDR, m_netCFG.struMail.sCcAddr, DH_MAX_MAIL_ADDR_LEN);
GetDlgItemText(IDC_EDIT_MAILBCCADDR, m_netCFG.struMail.sBccAddr, DH_MAX_MAIL_ADDR_LEN);
GetDlgItemText(IDC_EDIT_MAILSUBJECT, m_netCFG.struMail.sSubject, DH_MAX_MAIL_ADDR_LEN);
//save
BOOL bRet = CLIENT_SetDevConfig(m_pDev->LoginID, DH_DEV_NETCFG, 0,
&m_netCFG, sizeof(DHDEV_NET_CFG));
if (!bRet)
{
((CNetSDKDemoDlg*)AfxGetMainWnd())->LastError();
return;
}
else
{
MessageBox("Apply Success!", "OK");
}
}
void CConfigNetwork::OnUndoAll()
{
m_bInited = FALSE;
m_etherIdx = -1;
m_hostIdx = -1;
GetConfig();
}
void CConfigNetwork::OnSelchangeComboRemotehost()
{
if (!m_bInited)
{
return;
}
//store current config
if (m_hostIdx >= 0)
{
DH_REMOTE_HOST *prehost = 0;
prehost = GetRemoteHostType(m_hostIdx);
if (!prehost)
{
return;
}
prehost->byEnable = m_hostEnchk.GetCheck();
GetDlgItemText(IDC_EDIT_HOSTIP, prehost->sHostIPAddr, DH_MAX_IPADDR_LEN);
prehost->wHostPort = GetDlgItemInt(IDC_EDIT_HOSTPORT);
GetDlgItemText(IDC_EDIT_HOSTUSERNAME, prehost->sHostUser, DH_MAX_HOST_NAMELEN);
GetDlgItemText(IDC_EDIT_HOSTUSERPSW, prehost->sHostPassword, DH_MAX_HOST_PSWLEN);
}
//show new config
int hostIdx = m_remotehostsel.GetCurSel();
if (hostIdx < 0 || hostIdx >= 9)
{
return;
}
m_hostIdx = hostIdx;
DH_REMOTE_HOST *thishost = 0;
thishost = GetRemoteHostType(hostIdx, TRUE);
if (!thishost)
{
return;
}
m_hostEnchk.SetCheck(thishost->byEnable?1:0);
SetDlgItemText(IDC_EDIT_HOSTIP, thishost->sHostIPAddr);
SetDlgItemInt(IDC_EDIT_HOSTPORT, thishost->wHostPort);
SetDlgItemText(IDC_EDIT_HOSTUSERNAME, thishost->sHostUser);
SetDlgItemText(IDC_EDIT_HOSTUSERPSW, thishost->sHostPassword);
}
void CConfigNetwork::OnSelchangeComboEthernet()
{
if (!m_bInited)
{
return;
}
//store current config
if (m_etherIdx >= 0)
{
GetDlgItemText(IDC_EDIT_NETIP, m_netCFG.stEtherNet[m_etherIdx].sDevIPAddr, DH_MAX_IPADDR_LEN);
GetDlgItemText(IDC_EDIT_NETIPMASK, m_netCFG.stEtherNet[m_etherIdx].sDevIPMask, DH_MAX_IPADDR_LEN);
GetDlgItemText(IDC_EDIT_NETGATEWAY, m_netCFG.stEtherNet[m_etherIdx].sGatewayIP, DH_MAX_IPADDR_LEN);
m_netCFG.stEtherNet[m_etherIdx].dwNetInterface = m_interfacesel.GetCurSel()+1;
GetDlgItemText(IDC_EDIT_NETMAC, m_netCFG.stEtherNet[m_etherIdx].byMACAddr, DH_MACADDR_LEN);
}
//show new config
int etherIdx = m_ethernetsel.GetCurSel();
if (etherIdx < 0 || etherIdx >= DH_MAX_ETHERNET_NUM)
{
return;
}
m_etherIdx = etherIdx;
SetDlgItemText(IDC_EDIT_NETIP, m_netCFG.stEtherNet[etherIdx].sDevIPAddr);
SetDlgItemText(IDC_EDIT_NETIPMASK, m_netCFG.stEtherNet[etherIdx].sDevIPMask);
SetDlgItemText(IDC_EDIT_NETGATEWAY, m_netCFG.stEtherNet[etherIdx].sGatewayIP);
m_interfacesel.SetCurSel(m_netCFG.stEtherNet[etherIdx].dwNetInterface-1);
SetDlgItemText(IDC_EDIT_NETMAC, m_netCFG.stEtherNet[etherIdx].byMACAddr);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -