⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 remotenetconfig.cpp

📁 SDK DVR/DVS HIKVISION
💻 CPP
字号:
// RemoteNetConfig.cpp : implementation file
//

#include "stdafx.h"
#include "newclient.h"
#include "RemoteNetConfig.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CRemoteNetConfig dialog
extern BOOL checkIPStr(CString ip);

BOOL EmailCh_is_Legal(BOOL front,TCHAR ch)
{
	if(ch<='z'&&ch>='a' || ch<='Z'&&ch>='A' || ch<='9'&&ch>='0')
	{
		return TRUE;
	}
	if(front && (ch == '-' || ch =='_'))
	{
		return TRUE;
	}
	if(!front && ch =='.')
	{
		return TRUE;
	}
	return FALSE;
}

BOOL CheckEmailAddress(CString email)
{
	int pos = email.Find('@');
	if(pos == -1 || pos == 0 || pos == (email.GetLength()-1))
	{
		return FALSE;
	}
	CString tmp = email.Left(pos);
	int i;
	for(i=0;i<pos;i++)
	{
		if(!EmailCh_is_Legal(TRUE,tmp.GetAt(i)))
		{
			return FALSE;
		}
		tmp.Empty();
		tmp = email.Right(email.GetLength()-1-pos);
		pos = tmp.Find('.');
		if(pos == -1 || pos == 0 || pos == (tmp.GetLength()-1))
		{
			return FALSE;
		}
		for(i=0;i<tmp.GetLength();i++)
		{
			if(!EmailCh_is_Legal(FALSE,tmp.GetAt(i)))
			{
				return FALSE;
			}
		}
	}
	return TRUE;
}

CRemoteNetConfig::CRemoteNetConfig(CWnd* pParent /*=NULL*/)
	: CDialog(CRemoteNetConfig::IDD, pParent)
{
	//{{AFX_DATA_INIT(CRemoteNetConfig)
	m_EmailAttach = FALSE;
	m_EmailAuthen = FALSE;
	m_EnableDDNS = FALSE;
	m_EnableNTP = FALSE;
	m_DDNSServer = _T("");
	m_DDNSUserName = _T("");
	m_EmailDisplayName = _T("");
	m_EmailAddress = _T("");
	m_EmailServer = _T("");
	m_NFSDIR = _T("");
	m_NFSIP = _T("");
	m_NTPDiffHour = 0;
	m_NTPInterval = 0;
	m_NTPDiffMinute = 0;
	m_NTPServer = _T("");
	m_DDNSPass = _T("");
	m_DDNSPassVer = _T("");
	m_EmailPass = _T("");
	m_EmailPassVer = _T("");
	m_EmailRecvAddress = _T("");
	m_EmailRecvName = _T("");
	m_EmailAccountName = _T("");
	m_NETDNSIP = _T("");
	//}}AFX_DATA_INIT
}


void CRemoteNetConfig::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRemoteNetConfig)
	DDX_Control(pDX, IDC_COMBOINTERVAL, m_EmailIntervalCombo);
	DDX_Control(pDX, IDC_COMBOSERVER, m_EmailServerCombo);
	DDX_Control(pDX, IDC_LISTRECVACCOUNT, m_EmailRecvList);
	DDX_Control(pDX, IDC_COMBONFSDISK, m_NFSDiskCombo);
	DDX_Check(pDX, IDC_CHECKATTACH, m_EmailAttach);
	DDX_Check(pDX, IDC_CHECKAUTHEN, m_EmailAuthen);
	DDX_Check(pDX, IDC_CHECKDDNS, m_EnableDDNS);
	DDX_Check(pDX, IDC_CHECKNTP, m_EnableNTP);
	DDX_Text(pDX, IDC_EDITDDNSDOMAIN, m_DDNSServer);
	DDX_Text(pDX, IDC_EDITDDNSUSER, m_DDNSUserName);
	DDX_Text(pDX, IDC_EDITDISPLAYNAME, m_EmailDisplayName);
	DDX_Text(pDX, IDC_EDITEMAILADDRESS, m_EmailAddress);
	DDX_Text(pDX, IDC_EDITEMAILSERVER, m_EmailServer);
	DDX_Text(pDX, IDC_EDITNFSDIR, m_NFSDIR);
	DDX_Text(pDX, IDC_EDITNFSIP, m_NFSIP);
	DDX_Text(pDX, IDC_EDITNTPHOUR, m_NTPDiffHour);
	DDX_Text(pDX, IDC_EDITNTPINTERVAL, m_NTPInterval);
	DDX_Text(pDX, IDC_EDITNTPMINUT, m_NTPDiffMinute);
	DDX_Text(pDX, IDC_EDITNTPSERVER, m_NTPServer);
	DDX_Text(pDX, IDC_EDITPASSWD, m_DDNSPass);
	DDX_Text(pDX, IDC_EDITPASSWDVER, m_DDNSPassVer);
	DDX_Text(pDX, IDC_EDITPASSWORD, m_EmailPass);
	DDX_Text(pDX, IDC_EDITPASSWORDVERI, m_EmailPassVer);
	DDX_Text(pDX, IDC_EDITRECVADDRESS, m_EmailRecvAddress);
	DDX_Text(pDX, IDC_EDITRECVNAME, m_EmailRecvName);
	DDX_Text(pDX, IDC_EDITUSERNAME, m_EmailAccountName);
	DDX_Text(pDX, IDC_EDITDNSIPADDRESS, m_NETDNSIP);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CRemoteNetConfig, CDialog)
	//{{AFX_MSG_MAP(CRemoteNetConfig)
	ON_BN_CLICKED(IDC_ADDTOLIST, OnAddtolist)
	ON_BN_CLICKED(IDC_CHECKDDNS, OnCheckddns)
	ON_BN_CLICKED(IDC_CHECKNTP, OnCheckntp)
	ON_BN_CLICKED(IDC_DELLIST, OnDellist)
	ON_BN_CLICKED(IDC_SAVENFS, OnSavenfs)
	ON_BN_CLICKED(IDC_SAVETODVR, OnSavetodvr)
	ON_NOTIFY(NM_CLICK, IDC_LISTRECVACCOUNT, OnClickListrecvaccount)
	ON_CBN_SELCHANGE(IDC_COMBONFSDISK, OnSelchangeCombonfsdisk)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRemoteNetConfig message handlers

void CRemoteNetConfig::OnAddtolist() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);

	if (m_EmailRecvList.GetItemCount() >= 2)
	{
		AfxMessageBox("two addressees at most!");
		return;
	}
	if (!CheckEmailAddress(m_EmailRecvAddress))
	{
		AfxMessageBox("Invalid Email address!");
		return;
	}

	POSITION pos = m_EmailRecvList.GetFirstSelectedItemPosition();
	if (pos == NULL)
	{
		int index = m_EmailRecvList.InsertItem(m_EmailRecvList.GetItemCount(), m_EmailRecvName);
		m_EmailRecvList.SetItemText(index, 1, m_EmailRecvAddress);
	}
	else
	{
		int index = m_EmailRecvList.GetNextSelectedItem(pos);
		m_EmailRecvList.SetItemText(index, 0, m_EmailRecvName);
		m_EmailRecvList.SetItemText(index, 1, m_EmailRecvAddress);
	}

	UpdateData(FALSE);
}

void CRemoteNetConfig::EnableDDNSControl(BOOL bEnable)
{
	GetDlgItem(IDC_EDITDDNSDOMAIN)->EnableWindow(bEnable);
	GetDlgItem(IDC_EDITDDNSUSER)->EnableWindow(bEnable);
	GetDlgItem(IDC_EDITPASSWD)->EnableWindow(bEnable);
	GetDlgItem(IDC_EDITPASSWDVER)->EnableWindow(bEnable);
}

void CRemoteNetConfig::OnCheckddns() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);

	EnableDDNSControl(m_EnableDDNS);
}

void CRemoteNetConfig::EnableNTPControl(BOOL bEnable)
{
	GetDlgItem(IDC_EDITNTPSERVER)->EnableWindow(bEnable);
	GetDlgItem(IDC_EDITNTPINTERVAL)->EnableWindow(bEnable);
	GetDlgItem(IDC_EDITNTPHOUR)->EnableWindow(bEnable);
	GetDlgItem(IDC_EDITNTPMINUT)->EnableWindow(bEnable);
}

void CRemoteNetConfig::OnCheckntp() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);

	EnableNTPControl(m_EnableNTP);
}

void CRemoteNetConfig::OnDellist() 
{
	// TODO: Add your control notification handler code here
	POSITION pos = m_EmailRecvList.GetFirstSelectedItemPosition();
	if (pos == NULL)
	{
		return;
	}

	int index = m_EmailRecvList.GetNextSelectedItem(pos);
	m_EmailRecvList.DeleteItem(index);

	UpdateData(FALSE);
}

void CRemoteNetConfig::OnSavenfs() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);

	int sel = m_NFSDiskCombo.GetCurSel();
	ZeroMemory(&m_NFSCfg.struNfsDiskParam[sel], sizeof(m_NFSCfg.struNfsDiskParam[sel]));
	sprintf((char *)m_NFSCfg.struNfsDiskParam[sel].sNfsHostIPAddr, "%s", m_NFSIP);
	sprintf((char *)m_NFSCfg.struNfsDiskParam[sel].sNfsDirectory, "%s", m_NFSDIR);
}

void CRemoteNetConfig::OnSavetodvr() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);

	if (m_EmailPass != m_EmailPassVer)
	{
		AfxMessageBox("Email password verify failed!");
		return;
	}
	if (!CheckEmailAddress(m_EmailAddress))
	{
		AfxMessageBox("Invalid Email address!");
		return;
	}
	if (!checkIPStr(m_NTPServer))
	{
		AfxMessageBox("Invalid NTP IP address!");
		return;
	}
	if (m_DDNSPass != m_DDNSPassVer)
	{
		AfxMessageBox("DDNS password verify failed!");
		return;
	}
	if (!checkIPStr(m_NFSIP))
	{
		AfxMessageBox("Invalid NFS IP address!");
		return;
	}
	if (!checkIPStr(m_NETDNSIP))
	{
		AfxMessageBox("Invalid DNS IP address!");
		return;
	}

	ZeroMemory(&m_EmailCfg, sizeof(m_EmailCfg));
	m_EmailCfg.dwSize = sizeof(m_EmailCfg);
	m_EmailCfg.byAttachment = m_EmailAttach;
	m_EmailCfg.byMailinterval = m_EmailIntervalCombo.GetCurSel();
	m_EmailCfg.byServerType = 0;
	m_EmailCfg.byUseAuthen = m_EmailAuthen;
	sprintf(m_EmailCfg.sEmailServer, "%s", m_EmailServer);
	sprintf(m_EmailCfg.sUserName, "%s", m_EmailDisplayName);
	sprintf(m_EmailCfg.sFromName, "%s", m_EmailAccountName);
	sprintf(m_EmailCfg.sPassWord, "%s", m_EmailPass);
	sprintf(m_EmailCfg.sFromAddr, "%s", m_EmailAddress);
	if (m_EmailRecvList.GetItemCount() > 0)
	{
		sprintf(m_EmailCfg.sToName1, "%s", m_EmailRecvList.GetItemText(0, 0));
		sprintf(m_EmailCfg.sToAddr1, "%s", m_EmailRecvList.GetItemText(0, 1));
	}
	if (m_EmailRecvList.GetItemCount() > 1)
	{
		sprintf(m_EmailCfg.sToName2, "%s", m_EmailRecvList.GetItemText(1, 0));
		sprintf(m_EmailCfg.sToAddr2, "%s", m_EmailRecvList.GetItemText(1, 1));
	}

	ZeroMemory(&m_NetAppCfg, sizeof(m_NetAppCfg));
	m_NetAppCfg.dwSize = sizeof(m_NetAppCfg);
	sprintf(m_NetAppCfg.sDNSIp, "%s", m_NETDNSIP);
	m_NetAppCfg.struDDNSClientParam.byEnableDDNS = m_EnableDDNS;
	if (m_EnableDDNS)
	{
		sprintf((char *)m_NetAppCfg.struDDNSClientParam.sDomainName, "%s", m_DDNSServer);
		sprintf((char *)m_NetAppCfg.struDDNSClientParam.sUsername, "%s", m_DDNSUserName);
		sprintf((char *)m_NetAppCfg.struDDNSClientParam.sPassword, "%s", m_DDNSPass);
	}
	m_NetAppCfg.struNtpClientParam.byEnableNTP = m_EnableNTP;
	if (m_EnableNTP)
	{
		sprintf((char *)m_NetAppCfg.struNtpClientParam.sNTPServer, "%s", m_NTPServer);
		m_NetAppCfg.struNtpClientParam.wInterval = m_NTPInterval;
		m_NetAppCfg.struNtpClientParam.cTimeDifferenceH = m_NTPDiffHour;
		m_NetAppCfg.struNtpClientParam.cTimeDifferenceM = m_NTPDiffMinute;
	}

	int sel = m_NFSDiskCombo.GetCurSel();
	m_NFSCfg.dwSize = sizeof(m_NFSCfg);
	ZeroMemory(&m_NFSCfg.struNfsDiskParam[sel], sizeof(m_NFSCfg.struNfsDiskParam[sel]));
	sprintf(m_NFSCfg.struNfsDiskParam[sel].sNfsHostIPAddr, "%s", m_NFSIP);
	sprintf((char *)m_NFSCfg.struNfsDiskParam[sel].sNfsDirectory, "%s", m_NFSDIR);

	CString tmp;
	BOOL flg = TRUE;
	if (!NET_DVR_SetDVRConfig(m_lServerID, NET_DVR_SET_EMAILPARACFG, 0, &m_EmailCfg, sizeof(m_EmailCfg)))
	{
		tmp.Format("Error: NET_DVR_SET_EMAILPARACFG = %d", NET_DVR_GetLastError());
		TRACE(tmp);
		flg = FALSE;
	}
	if (!NET_DVR_SetDVRConfig(m_lServerID, NET_DVR_SET_NETAPPCFG, 0, &m_NetAppCfg, sizeof(m_NetAppCfg)))
	{
		tmp.Format("Error: NET_DVR_SET_NETAPPCFG = %d", NET_DVR_GetLastError());
		TRACE(tmp);
		flg = FALSE;
	}
	if (!NET_DVR_SetDVRConfig(m_lServerID, NET_DVR_SET_NFSCFG, 0, &m_NFSCfg, sizeof(m_NFSCfg)))
	{
		tmp.Format("Error: NET_DVR_SET_NFSCFG = %d", NET_DVR_GetLastError());
		TRACE(tmp);
		flg = FALSE;
	}
	if (flg)
	{
		MessageBox("Setup success!");
	}
}

BOOL CRemoteNetConfig::OnInitDialog() 
{
	CDialog::OnInitDialog();

	m_EmailServerCombo.SetCurSel(0);

	m_EmailRecvList.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
	m_EmailRecvList.InsertColumn(0, "Recv Name", LVCFMT_LEFT, 100, 0);
	m_EmailRecvList.InsertColumn(1, "Recv Address", LVCFMT_LEFT, 300, 1);

	// TODO: Add extra initialization here
	CString tmp;
	DWORD dwRet = 0;
	ZeroMemory(&m_EmailCfg, sizeof(m_EmailCfg));
	m_EmailCfg.dwSize = sizeof(m_EmailCfg);
	if (!NET_DVR_GetDVRConfig(m_lServerID, NET_DVR_GET_EMAILPARACFG, 0, &m_EmailCfg, sizeof(m_EmailCfg), &dwRet))
	{
		tmp.Format("Error: NET_DVR_GET_EMAILPARACFG = %d", NET_DVR_GetLastError());
		TRACE(tmp);
	}
	else
	{
		m_EmailDisplayName.Format("%s", m_EmailCfg.sUserName);
		m_EmailAddress.Format("%s", m_EmailCfg.sFromAddr);
		m_EmailAccountName.Format("%s", m_EmailCfg.sFromName);
		m_EmailPass.Format("%s", m_EmailCfg.sPassWord);
		m_EmailPassVer = m_EmailPass;
		m_EmailIntervalCombo.SetCurSel(m_EmailCfg.byMailinterval);
		if (m_EmailCfg.byUseAuthen)
		{
			m_EmailAuthen = TRUE;
		}
		if (m_EmailCfg.byAttachment)
		{
			m_EmailAttach = TRUE;
		}
		m_EmailServer.Format("%s", m_EmailCfg.sEmailServer);
		if (strlen(m_EmailCfg.sToName1))
		{
			m_EmailRecvList.InsertItem(0, m_EmailCfg.sToName1);
			m_EmailRecvList.SetItemText(0, 1, m_EmailCfg.sToAddr1);
		}
		if (strlen(m_EmailCfg.sToName2))
		{
			m_EmailRecvList.InsertItem(1, m_EmailCfg.sToName2);
			m_EmailRecvList.SetItemText(1, 1, m_EmailCfg.sToAddr2);
		}
	}

	ZeroMemory(&m_NetAppCfg, sizeof(m_NetAppCfg));
	m_NetAppCfg.dwSize = sizeof(m_NetAppCfg);
	if (!NET_DVR_GetDVRConfig(m_lServerID, NET_DVR_GET_NETAPPCFG, 0, &m_NetAppCfg, sizeof(m_NetAppCfg), &dwRet))
	{
		tmp.Format("Error: NET_DVR_GET_NETAPPCFG = %d", NET_DVR_GetLastError());
		TRACE(tmp);
	}
	else
	{
		m_NETDNSIP.Format("%s", m_NetAppCfg.sDNSIp);
		m_EnableNTP = m_NetAppCfg.struNtpClientParam.byEnableNTP;
		if (m_EnableNTP)
		{
			m_NTPServer.Format("%s", m_NetAppCfg.struNtpClientParam.sNTPServer);
			m_NTPInterval = m_NetAppCfg.struNtpClientParam.wInterval;
			m_NTPDiffHour = m_NetAppCfg.struNtpClientParam.cTimeDifferenceH;
			m_NTPDiffMinute = m_NetAppCfg.struNtpClientParam.cTimeDifferenceM;
		}

		m_EnableDDNS = m_NetAppCfg.struDDNSClientParam.byEnableDDNS;
		if (m_EnableDDNS)
		{
			m_DDNSServer.Format("%s", m_NetAppCfg.struDDNSClientParam.sDomainName);
			m_DDNSUserName.Format("%s", m_NetAppCfg.struDDNSClientParam.sUsername);
			m_DDNSPass.Format("%s", m_NetAppCfg.struDDNSClientParam.sPassword);
			m_DDNSPassVer = m_DDNSPass;
		}
	}

	m_NFSDiskCombo.SetCurSel(0);
	ZeroMemory(&m_NFSCfg, sizeof(m_NFSCfg));
	m_NFSCfg.dwSize = sizeof(m_NFSCfg);
	if (!NET_DVR_GetDVRConfig(m_lServerID, NET_DVR_GET_NFSCFG, 0, &m_NFSCfg, sizeof(m_NFSCfg), &dwRet))
	{
		tmp.Format("Error: NET_DVR_GET_NFSCFG = %d", NET_DVR_GetLastError());
		TRACE(tmp);
	}
	else
	{	
		m_NFSIP.Format("%s", m_NFSCfg.struNfsDiskParam[0].sNfsHostIPAddr);
		m_NFSDIR.Format("%s", m_NFSCfg.struNfsDiskParam[0].sNfsDirectory);
	}
	
	UpdateData(FALSE);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CRemoteNetConfig::OnClickListrecvaccount(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	POSITION pos = m_EmailRecvList.GetFirstSelectedItemPosition();
	if (pos == NULL)
	{
		return;
	}
	int index = m_EmailRecvList.GetNextSelectedItem(pos);
	m_EmailRecvName = m_EmailRecvList.GetItemText(index, 0);
	m_EmailRecvAddress = m_EmailRecvList.GetItemText(index, 1);

	UpdateData(FALSE);
	*pResult = 0;
}

void CRemoteNetConfig::OnSelchangeCombonfsdisk() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);

	int sel = m_NFSDiskCombo.GetCurSel();
	if (sel == -1)
	{
		return;
	}

	m_NFSIP.Format("%s", m_NFSCfg.struNfsDiskParam[sel].sNfsHostIPAddr);
	m_NFSDIR.Format("%s", m_NFSCfg.struNfsDiskParam[sel].sNfsDirectory);

	UpdateData(FALSE);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -