// RemoteNetConfig.cpp : implementation file // #include "stdafx.h" #include "StoneU_HC_OCX.h" #include "RemoteNetConfig.h" #include "EmailInfo.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CRemoteNetConfig dialog extern BOOL checkIPStr(CString ip); CRemoteNetConfig::CRemoteNetConfig(CWnd* pParent /*=NULL*/) : CDialog(CRemoteNetConfig::IDD, pParent) { //{{AFX_DATA_INIT(CRemoteNetConfig) m_AccountSendName = _T(""); m_AccountUserName = _T(""); m_AccountPasswd = _T(""); m_AccountPasswdConf = _T(""); m_ServerAddress = _T(""); m_AuthenCheck = FALSE; m_AttachCheck = FALSE; m_NTPInterval = 0; m_DDNSAddress = _T(""); m_NTPAddress = _T(""); m_DDNSUserName = _T(""); m_DDNSPwdConf = _T(""); m_DDNSPwd = _T(""); m_AccountAddress = _T(""); m_NFSDirectory = _T(""); m_NTPCheck = FALSE; m_DDNSCheck = FALSE; m_NFSIPAddress = _T(""); m_NTPInterHour = 0; m_NTPInterMin = 0; m_DnsIP = _T(""); //}}AFX_DATA_INIT m_bChangeFlag = FALSE; } void CRemoteNetConfig::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CRemoteNetConfig) DDX_Control(pDX, IDC_NFSDISKCOMBO, m_NFSDiskCombo); DDX_Control(pDX, IDC_INTERVALCOMBO, m_IntervalCombo); DDX_Control(pDX, IDC_SERVERCOMBO, m_ServerCombo); DDX_Control(pDX, IDC_RECVLIST, m_RecvList); DDX_Text(pDX, IDC_ACCOUNTSENDNAME, m_AccountSendName); DDX_Text(pDX, IDC_ACCOUNTUSERNAME, m_AccountUserName); DDX_Text(pDX, IDC_ACCOUNTPASSWD, m_AccountPasswd); DDX_Text(pDX, IDC_ACCOUNTPASSWDCONF, m_AccountPasswdConf); DDX_Text(pDX, IDC_SERVERADDRESS, m_ServerAddress); DDX_Check(pDX, IDC_AUTHENCHECK, m_AuthenCheck); DDX_Check(pDX, IDC_ATTACHCHECK, m_AttachCheck); DDX_Text(pDX, IDC_NTPINTERVAL, m_NTPInterval); DDX_Text(pDX, IDC_DDNSADDRESS, m_DDNSAddress); DDX_Text(pDX, IDC_NTPADDRESS, m_NTPAddress); DDX_Text(pDX, IDC_DDNSUSERNAME, m_DDNSUserName); DDX_Text(pDX, IDC_DDNSPASSWDCONFIRM, m_DDNSPwdConf); DDX_Text(pDX, IDC_DDNSPASSWD, m_DDNSPwd); DDX_Text(pDX, IDC_ACCOUNTADDRESS, m_AccountAddress); DDX_Text(pDX, IDC_NFSDIRECTORY, m_NFSDirectory); DDX_Check(pDX, IDC_NTPCHECK, m_NTPCheck); DDX_Check(pDX, IDC_DDNSCHECK, m_DDNSCheck); DDX_Text(pDX, IDC_NFSIP, m_NFSIPAddress); DDX_Text(pDX, IDC_NTPINTERVALHOUR, m_NTPInterHour); DDX_Text(pDX, IDC_NTPINTERVALMIN, m_NTPInterMin); DDX_Text(pDX, IDC_DNSIP, m_DnsIP); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CRemoteNetConfig, CDialog) //{{AFX_MSG_MAP(CRemoteNetConfig) ON_BN_CLICKED(IDC_ADDRECV, OnAddrecv) ON_BN_CLICKED(IDC_DELRECV, OnDelrecv) ON_BN_CLICKED(IDC_NTPCHECK, OnNtpcheck) ON_BN_CLICKED(IDC_DDNSCHECK, OnDdnscheck) ON_BN_CLICKED(IDC_SAVEPARA, OnConfirm) ON_CBN_SELCHANGE(IDC_NFSDISKCOMBO, OnSelchangeNfsdiskcombo) ON_BN_CLICKED(IDC_AUTHENCHECK, OnAuthencheck) ON_BN_CLICKED(IDC_ATTACHCHECK, OnAttachcheck) //cHn delete ON_BN_CLICKED(IDC_CANCEL, OnCancel) ON_BN_CLICKED(IDC_SAVENFS, OnSavenfs) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CRemoteNetConfig message handlers BOOL CRemoteNetConfig::OnInitDialog() { CDialog::OnInitDialog(); m_IntervalCombo.SetCurSel(0); m_ServerCombo.SetCurSel(0); m_RecvList.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT); m_RecvList.InsertColumn(0, "接收方姓名", LVCFMT_LEFT, 90, -1); m_RecvList.InsertColumn(1, "接收方Email地址", LVCFMT_LEFT, 200, -1); CString sTemp; DWORD dwReturned; // m_AccountEmailCfg.dwSize = sizeof(NET_DVR_EMAILCFG); if(!NET_DVR_GetDVRConfig(m_lServerID, NET_DVR_GET_EMAILPARACFG, 0, &m_AccountEmailCfg, sizeof(NET_DVR_EMAILCFG), &dwReturned)) { sTemp.Format("ERROR: NET_DVR_GET_EMAILPARACFG = %d \n", NET_DVR_GetLastError()); TRACE(sTemp); } // m_NetAppPara.dwSize = sizeof(NET_DVR_GET_NETAPPCFG); if(!NET_DVR_GetDVRConfig(m_lServerID, NET_DVR_GET_NETAPPCFG, 0, &m_NetAppPara, sizeof(NET_DVR_NETAPPCFG), &dwReturned)) { sTemp.Format("ERROR: NET_DVR_GET_NETAPPCFG = %d \n", NET_DVR_GetLastError()); TRACE(sTemp); } // m_NFSCfg.dwSize = sizeof(NET_DVR_NFSCFG); if(!NET_DVR_GetDVRConfig(m_lServerID, NET_DVR_GET_NFSCFG, 0, &m_NFSCfg, sizeof(NET_DVR_NFSCFG), &dwReturned)) { sTemp.Format("ERROR: NET_DVR_GET_NFSCFG = %d \n", NET_DVR_GetLastError()); TRACE(sTemp); } //information of email account... //2008-02-21 帐户名(sUserName)和发送者名称(sFromName)颠倒了,在此更正 m_AccountSendName.Format("%s", m_AccountEmailCfg.sFromName); m_AccountAddress.Format("%s", m_AccountEmailCfg.sFromAddr); m_AccountUserName.Format("%s", m_AccountEmailCfg.sUserName); if(!m_AccountUserName.IsEmpty()) { m_AccountPasswd.Format("%s", m_AccountEmailCfg.sPassWord); m_AccountPasswdConf = m_AccountPasswd; } CString tmp1,tmp2; tmp1.Format("%s", m_AccountEmailCfg.sToName1); tmp2.Format("%s", m_AccountEmailCfg.sToAddr1); if(!tmp1.IsEmpty()) { int index = m_RecvList.InsertItem(m_RecvList.GetItemCount(), tmp1); m_RecvList.SetItemText(index, 1, tmp2); } tmp1.Format("%s", m_AccountEmailCfg.sToName2); tmp2.Format("%s", m_AccountEmailCfg.sToAddr2); if(!tmp2.IsEmpty()) { int index = m_RecvList.InsertItem(m_RecvList.GetItemCount(), tmp1); m_RecvList.SetItemText(index, 1, tmp2); } m_AuthenCheck = m_AccountEmailCfg.byUseAuthen; if(m_AuthenCheck != TRUE) { m_AuthenCheck = FALSE; } m_AttachCheck = m_AccountEmailCfg.byAttachment; if(m_AttachCheck != TRUE) { m_AttachCheck = FALSE; } m_IntervalCombo.SetCurSel(m_AccountEmailCfg.byMailinterval); m_ServerAddress.Format("%s", m_AccountEmailCfg.sEmailServer); char ip[20]; ZeroMemory(ip, 20); memcpy(ip, m_NetAppPara.sDNSIp, 16); tmp1.Format("%s", ip); if(checkIPStr(tmp1)) { m_DnsIP = tmp1; } //Information of NTP m_NTPCheck = m_NetAppPara.struNtpClientParam.byEnableNTP; if(m_NTPCheck == TRUE) { EnableNTPItem(m_NTPCheck); m_NTPAddress.Format("%s", m_NetAppPara.struNtpClientParam.sNTPServer); m_NTPInterval = m_NetAppPara.struNtpClientParam.wInterval; m_NTPInterHour = m_NetAppPara.struNtpClientParam.cTimeDifferenceH; m_NTPInterMin = m_NetAppPara.struNtpClientParam.cTimeDifferenceM; } else { m_NTPCheck = FALSE; } //Information of DDNS m_DDNSCheck = m_NetAppPara.struDDNSClientParam.byEnableDDNS; if(m_DDNSCheck == TRUE) { EnableDDNSItem(m_DDNSCheck); m_DDNSAddress.Format("%s", m_NetAppPara.struDDNSClientParam.sDomainName); m_DDNSUserName.Format("%s", m_NetAppPara.struDDNSClientParam.sUsername); m_DDNSPwd.Format("%s", m_NetAppPara.struDDNSClientParam.sPassword); m_DDNSPwdConf = m_DDNSPwd; } else { m_DDNSCheck = FALSE; } //Information of NFS for (int i=0; i= 2) { MessageBox("目前只支持两个接收端!", "温馨提示", MB_ICONINFORMATION); return; } CEmailInfo email; if(IDOK == email.DoModal()) { int index = m_RecvList.InsertItem(m_RecvList.GetItemCount(), email.m_EmailName); m_RecvList.SetItemText(index, 1, email.m_EmailAddress); } } void CRemoteNetConfig::OnDelrecv() { // TODO: Add your control notification handler code here POSITION pos = m_RecvList.GetFirstSelectedItemPosition(); int select = m_RecvList.GetNextSelectedItem(pos); if(select < 0) { return; } m_RecvList.DeleteItem(select); } void CRemoteNetConfig::OnNtpcheck() { // TODO: Add your control notification handler code here // m_NTPCheck = !m_NTPCheck; UpdateData(TRUE); EnableNTPItem(m_NTPCheck); } void CRemoteNetConfig::OnDdnscheck() { // TODO: Add your control notification handler code here // m_DDNSCheck = !m_DDNSCheck; UpdateData(TRUE); EnableDDNSItem(m_DDNSCheck); } void CRemoteNetConfig::OnConfirm() { // TODO: Add your control notification handler code here UpdateData(TRUE); if (!m_AccountAddress.IsEmpty() && !CheckEmailAddress(m_AccountAddress)) { MessageBox("Email地址有误!", "温馨提示", MB_ICONINFORMATION); // return; } if (m_AccountPasswd != m_AccountPasswdConf) { MessageBox("Email帐户密码不匹配!", "温馨提示", MB_ICONINFORMATION); // return; } if (m_DDNSCheck &&m_DDNSPwd != m_DDNSPwdConf) { MessageBox("DDNS帐户密码不匹配!", "温馨提示", MB_ICONINFORMATION); // return; } if (!m_NFSIPAddress.IsEmpty() && !checkIPStr(m_NFSIPAddress)) { MessageBox("NFS: IP地址有误!", "温馨提示", MB_ICONINFORMATION); // return; } if(!m_AccountPasswd.IsEmpty() && m_AccountUserName.IsEmpty()) { MessageBox("Email帐户名不能为空!", "温馨提示", MB_ICONINFORMATION); // return; } if(m_NTPInterHour < -12 || m_NTPInterHour > 13 || m_NTPInterMin < 0 || m_NTPInterMin >59) { MessageBox("时差输入有误!", "温馨提示", MB_ICONINFORMATION); // return; } if (!m_DnsIP.IsEmpty() && !checkIPStr(m_DnsIP)) { MessageBox("DNS: IP地址有误!", "温馨提示", MB_ICONINFORMATION); // return; } ZeroMemory(&m_AccountEmailCfg, sizeof(m_AccountEmailCfg)); m_AccountEmailCfg.dwSize = sizeof(m_AccountEmailCfg); //2008-02-21 帐户名(m_AccountUserName)和发送者名称(m_AccountSendName)颠倒了,更正 sprintf(m_AccountEmailCfg.sUserName, "%s", m_AccountUserName); sprintf(m_AccountEmailCfg.sPassWord, "%s", m_AccountPasswd); sprintf(m_AccountEmailCfg.sFromName, "%s", m_AccountSendName); sprintf(m_AccountEmailCfg.sFromAddr, "%s", m_AccountAddress); if(m_RecvList.GetItemCount() > 0) { sprintf(m_AccountEmailCfg.sToName1, "%s", m_RecvList.GetItemText(0,0)); sprintf(m_AccountEmailCfg.sToAddr1, "%s", m_RecvList.GetItemText(0,1)); } if(m_RecvList.GetItemCount() > 1) { sprintf(m_AccountEmailCfg.sToName2, "%s", m_RecvList.GetItemText(1,0)); sprintf(m_AccountEmailCfg.sToAddr2, "%s", m_RecvList.GetItemText(1,1)); } sprintf(m_AccountEmailCfg.sEmailServer, "%s", m_ServerAddress); m_AccountEmailCfg.byServerType = 0; //目前只限SMTP... m_AccountEmailCfg.byUseAuthen = m_AuthenCheck; m_AccountEmailCfg.byAttachment = m_AttachCheck; m_AccountEmailCfg.byMailinterval = m_IntervalCombo.GetCurSel(); ZeroMemory(&m_NTPPara, sizeof(m_NTPPara)); m_NTPPara.byEnableNTP = m_NTPCheck; if (m_NTPCheck) { memcpy(m_NTPPara.sNTPServer, m_NTPAddress, m_NTPAddress.GetLength()); m_NTPPara.wInterval = m_NTPInterval; m_NTPPara.cTimeDifferenceH = (char)m_NTPInterHour; m_NTPPara.cTimeDifferenceM = (char)m_NTPInterMin; } ZeroMemory(&m_DDNSPara, sizeof(m_DDNSPara)); m_DDNSPara.byEnableDDNS = m_DDNSCheck; if (m_DDNSCheck) { memcpy(m_DDNSPara.sDomainName,m_DDNSAddress, m_DDNSAddress.GetLength()); memcpy(m_DDNSPara.sUsername,m_DDNSUserName, m_DDNSUserName.GetLength()); memcpy(m_DDNSPara.sPassword,m_DDNSPwd, m_DDNSPwd.GetLength()); } ZeroMemory(&m_NFSCfg.struNfsDiskParam[m_NFSDiskCombo.GetCurSel()], sizeof(m_NFSCfg.struNfsDiskParam[m_NFSDiskCombo.GetCurSel()])); m_NFSCfg.dwSize = sizeof(m_NFSCfg); sprintf(m_NFSCfg.struNfsDiskParam[m_NFSDiskCombo.GetCurSel()].sNfsHostIPAddr, "%s", m_NFSIPAddress); memcpy(m_NFSCfg.struNfsDiskParam[m_NFSDiskCombo.GetCurSel()].sNfsDirectory, m_NFSDirectory, m_NFSDirectory.GetLength()); ZeroMemory(&m_NetAppPara, sizeof(m_NetAppPara)); m_NetAppPara.dwSize = sizeof(m_NetAppPara); sprintf(m_NetAppPara.sDNSIp, "%s", m_DnsIP); //原样考一份,用不用再说... m_NetAppPara.struNtpClientParam.byEnableNTP = m_NTPPara.byEnableNTP; if (m_NTPPara.byEnableNTP) { memcpy(m_NetAppPara.struNtpClientParam.sNTPServer, m_NTPPara.sNTPServer, 64); m_NetAppPara.struNtpClientParam.wInterval = m_NTPPara.wInterval; m_NetAppPara.struNtpClientParam.cTimeDifferenceH = m_NTPPara.cTimeDifferenceH; m_NetAppPara.struNtpClientParam.cTimeDifferenceM = m_NTPPara.cTimeDifferenceM; } m_NetAppPara.struDDNSClientParam.byEnableDDNS = m_DDNSPara.byEnableDDNS; if (m_DDNSPara.byEnableDDNS) { memcpy(m_NetAppPara.struDDNSClientParam.sUsername, m_DDNSPara.sUsername, NAME_LEN); memcpy(m_NetAppPara.struDDNSClientParam.sPassword, m_DDNSPara.sPassword, PASSWD_LEN); memcpy(m_NetAppPara.struDDNSClientParam.sDomainName, m_DDNSPara.sDomainName, 64); } CString sTemp; BOOL error = FALSE; if (!NET_DVR_SetDVRConfig(m_lServerID, NET_DVR_SET_EMAILPARACFG, 0, &m_AccountEmailCfg, sizeof(NET_DVR_EMAILCFG))) { sTemp.Format("ERROR: NET_DVR_SET_EMAILPARACFG = %d \n", NET_DVR_GetLastError()); TRACE(sTemp); MessageBox("Email参数保存失败!", "温馨提示", MB_ICONINFORMATION); error = TRUE; } if (!NET_DVR_SetDVRConfig(m_lServerID, NET_DVR_SET_NETAPPCFG, 0, &m_NetAppPara, sizeof(NET_DVR_NETAPPCFG))) { sTemp.Format("ERROR: NET_DVR_SET_NETAPPCFG = %d \n", NET_DVR_GetLastError()); TRACE(sTemp); MessageBox("NetApp参数保存失败!", "温馨提示", MB_ICONINFORMATION); error = TRUE; } if (!NET_DVR_SetDVRConfig(m_lServerID, NET_DVR_SET_NFSCFG, 0, &m_NFSCfg,sizeof(NET_DVR_NFSCFG))) { sTemp.Format("ERROR: NET_DVR_SET_NFSCFG = %d \n", NET_DVR_GetLastError()); TRACE(sTemp); MessageBox("NFS参数保存失败!", "温馨提示", MB_ICONINFORMATION); error = TRUE; } if(!error) { MessageBox("参数保存成功!", "温馨提示", MB_ICONINFORMATION); } } void CRemoteNetConfig::OnCancel() { // TODO: Add your control notification handler code here m_bChangeFlag = FALSE; CDialog::OnCancel(); } void CRemoteNetConfig::EnableNTPItem(BOOL bEnable) { GetDlgItem(IDC_NTPADDRESS)->EnableWindow(bEnable); GetDlgItem(IDC_NTPINTERVAL)->EnableWindow(bEnable); GetDlgItem(IDC_NTPINTERVALHOUR)->EnableWindow(bEnable); GetDlgItem(IDC_NTPINTERVALMIN)->EnableWindow(bEnable); } void CRemoteNetConfig::EnableDDNSItem(BOOL bEnable) { GetDlgItem(IDC_DDNSADDRESS)->EnableWindow(bEnable); GetDlgItem(IDC_DDNSUSERNAME)->EnableWindow(bEnable); GetDlgItem(IDC_DDNSPASSWD)->EnableWindow(bEnable); GetDlgItem(IDC_DDNSPASSWDCONFIRM)->EnableWindow(bEnable); } void CRemoteNetConfig::OnSelchangeNfsdiskcombo() { // TODO: Add your control notification handler code here int sel = m_NFSDiskCombo.GetCurSel(); CString tmp; tmp.Format("%s", m_NFSCfg.struNfsDiskParam[sel].sNfsHostIPAddr); if (checkIPStr(tmp)) { m_NFSIPAddress = tmp; m_NFSDirectory.Format("%s", m_NFSCfg.struNfsDiskParam[sel].sNfsDirectory); } UpdateData(FALSE); } void CRemoteNetConfig::OnAuthencheck() { // TODO: Add your control notification handler code here UpdateData(TRUE); } void CRemoteNetConfig::OnAttachcheck() { // TODO: Add your control notification handler code here UpdateData(TRUE); } void CRemoteNetConfig::OnSavenfs() { // TODO: Add your control notification handler code here UpdateData(TRUE); ZeroMemory(&m_NFSCfg.struNfsDiskParam[m_NFSDiskCombo.GetCurSel()], sizeof(m_NFSCfg.struNfsDiskParam[m_NFSDiskCombo.GetCurSel()])); sprintf(m_NFSCfg.struNfsDiskParam[m_NFSDiskCombo.GetCurSel()].sNfsHostIPAddr, "%s", m_NFSIPAddress); memcpy(m_NFSCfg.struNfsDiskParam[m_NFSDiskCombo.GetCurSel()].sNfsDirectory, m_NFSDirectory, m_NFSDirectory.GetLength()); }