📄 remotenetconfig.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 + -