FileterDlg.cpp
上传用户:qxsjcl
上传日期:2007-01-08
资源大小:263k
文件大小:6k
源码类别:

网络截获/分析

开发平台:

Visual C++

  1. // FileterDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "GetPacket.h"
  5. #include "FileterDlg.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CFileterDlg dialog
  13. CFileterDlg::CFileterDlg(CWnd* pParent /*=NULL*/)
  14. : CDialog(CFileterDlg::IDD, pParent)
  15. {
  16. //{{AFX_DATA_INIT(CFileterDlg)
  17. m_edit_sport = 0;
  18. m_edit_dport = 0;
  19. //}}AFX_DATA_INIT
  20. m_pSIPAddrCtl = NULL;
  21. m_pDIPAddrCtl = NULL;
  22. memset(m_sAddr, 0, 4);
  23. memset(m_dAddr, 0, 4);
  24. }
  25. void CFileterDlg::DoDataExchange(CDataExchange* pDX)
  26. {
  27. CDialog::DoDataExchange(pDX);
  28. if (NULL == m_pSIPAddrCtl)
  29. m_pSIPAddrCtl = (CIPAddrCtl*) GetDlgItem(IDC_IPSADDR);
  30. ASSERT(NULL != m_pSIPAddrCtl);
  31. if (NULL == m_pDIPAddrCtl)
  32. m_pDIPAddrCtl = (CIPAddrCtl*) GetDlgItem(IDC_IPDADDR);
  33. ASSERT(NULL != m_pDIPAddrCtl);
  34. //{{AFX_DATA_MAP(CFileterDlg)
  35. DDX_Control(pDX, ID_LIST_SPORT, m_list_sport);
  36. DDX_Control(pDX, ID_LIST_DPORT, m_list_dport);
  37. DDX_Control(pDX, ID_LIST_DIP, m_list_dip);
  38. DDX_Control(pDX, ID_LIST_SIP, m_list_sip);
  39. DDX_Text(pDX, ID_EDIT_SPORT, m_edit_sport);
  40. DDV_MinMaxInt(pDX, m_edit_sport, 0, 65535);
  41. DDX_Text(pDX, ID_EDIT_DPORT, m_edit_dport);
  42. DDV_MinMaxInt(pDX, m_edit_dport, 0, 65535);
  43. //}}AFX_DATA_MAP
  44. DDX_IPAddr(pDX, IDC_IPSADDR, m_sAddr);
  45. DDX_IPAddr(pDX, IDC_IPDADDR, m_dAddr);
  46. }
  47. BEGIN_MESSAGE_MAP(CFileterDlg, CDialog)
  48. //{{AFX_MSG_MAP(CFileterDlg)
  49. ON_BN_CLICKED(ID_BUTTON_SIP_ADD, OnButtonSipAdd)
  50. ON_BN_CLICKED(ID_BUTTON_DIP_ADD, OnButtonDipAdd)
  51. ON_BN_CLICKED(ID_BUTTON_SPORT_ADD, OnButtonSportAdd)
  52. ON_BN_CLICKED(ID_BUTTON_DPORT_ADD, OnButtonDportAdd)
  53. ON_BN_CLICKED(ID_BUTTON_DIP_DEL, OnButtonDipDel)
  54. ON_BN_CLICKED(ID_BUTTON_DPORT_DEL, OnButtonDportDel)
  55. ON_BN_CLICKED(ID_BUTTON_SIP_DEL, OnButtonSipDel)
  56. ON_BN_CLICKED(ID_BUTTON_SPORT_DEL, OnButtonSportDel)
  57. //}}AFX_MSG_MAP
  58. END_MESSAGE_MAP()
  59. /////////////////////////////////////////////////////////////////////////////
  60. // CFileterDlg message handlers
  61. BOOL CFileterDlg::OnInitDialog() 
  62. {
  63. CDialog::OnInitDialog();
  64. //initialize filters' listboxes
  65. int i;
  66. char buffer[64];
  67. CGetPacketApp *pApp;
  68. pApp=(CGetPacketApp*)AfxGetApp(); 
  69. for(i=0;i<pApp->SourceIP.GetSize();i++)
  70. m_list_sip.AddString(pApp->SourceIP.GetAt(i).GetBuffer(0));
  71. for(i=0;i<pApp->SourcePort.GetSize();i++)
  72. m_list_sport.AddString(_itoa( pApp->SourcePort.GetAt(i), buffer, 10 ));
  73. for(i=0;i<pApp->DestIP.GetSize();i++)
  74. m_list_dip.AddString(pApp->DestIP.GetAt(i).GetBuffer(0));
  75. for(i=0;i<pApp->DestPort.GetSize();i++)
  76. m_list_dport.AddString(_itoa( pApp->DestPort.GetAt(i), buffer, 10 ));
  77. return TRUE;  
  78. }
  79. void CFileterDlg::OnOK() 
  80. {
  81. char buffer[64];
  82. //clear filters
  83. CGetPacketApp *pApp;
  84. pApp=(CGetPacketApp*)AfxGetApp(); 
  85. pApp->SourceIP.RemoveAll();
  86. pApp->SourcePort.RemoveAll();
  87. pApp->DestIP.RemoveAll();
  88. pApp->DestPort.RemoveAll();
  89. //add new filters
  90. int i;
  91. for(i=0;i<m_list_sip.GetCount();i++)
  92. {
  93. m_list_sip.GetText(i,buffer);
  94. pApp->SourceIP.Add(buffer);
  95. }
  96. for(i=0;i<m_list_sport.GetCount();i++)
  97. {
  98. m_list_sport.GetText(i,buffer);
  99. pApp->SourcePort.Add(atoi(buffer)); 
  100. }
  101. for(i=0;i<m_list_dip.GetCount();i++)
  102. {
  103. m_list_dip.GetText(i,buffer);
  104. pApp->DestIP.Add(buffer);
  105. }
  106. for(i=0;i<m_list_dport.GetCount();i++)
  107. {
  108. m_list_dport.GetText(i,buffer);
  109. pApp->DestPort.Add(atoi(buffer)); 
  110. }
  111. CDialog::OnOK();
  112. }
  113. void CFileterDlg::OnButtonSipAdd() 
  114. {
  115. if(!UpdateData(TRUE))
  116. return;
  117. if(m_sAddr[0]|m_sAddr[1]|m_sAddr[2]|m_sAddr[3])
  118. {
  119. int i;
  120. char buffer[64],text[64];
  121. wsprintf(buffer,"%hu.%hu.%hu.%hu",m_sAddr[0],m_sAddr[1],m_sAddr[2],m_sAddr[3]);
  122. for(i=0;i<m_list_sip.GetCount();i++)
  123. {
  124. m_list_sip.GetText(i,text);
  125. if(!strcmp(text,buffer))
  126. {
  127. MessageBox("The entry already exists!","error",MB_OK);
  128. return;
  129. }
  130. }
  131. m_list_sip.AddString(buffer);
  132. }
  133. }
  134. void CFileterDlg::OnButtonDipAdd() 
  135. {
  136. if(!UpdateData(TRUE))
  137. return;
  138. if(m_dAddr[0]|m_dAddr[1]|m_dAddr[2]|m_dAddr[3])
  139. {
  140. int i;
  141. char buffer[64],text[64];
  142. wsprintf(buffer,"%hu.%hu.%hu.%hu",m_dAddr[0],m_dAddr[1],m_dAddr[2],m_dAddr[3]);
  143. for(i=0;i<m_list_dip.GetCount();i++)
  144. {
  145. m_list_dip.GetText(i,text);
  146. if(!strcmp(text,buffer))
  147. {
  148. MessageBox("The entry already exists!","error",MB_OK);
  149. return;
  150. }
  151. }
  152. m_list_dip.AddString(buffer);
  153. }
  154. }
  155. void CFileterDlg::OnButtonSportAdd() 
  156. {
  157. if(!UpdateData(TRUE))
  158. return;
  159. int i;
  160. char buffer[64],text[64];
  161. _itoa( m_edit_sport, buffer, 10 );
  162. for(i=0;i<m_list_sport.GetCount();i++)
  163. {
  164. m_list_sport.GetText(i,text);
  165. if(!strcmp(buffer,text))
  166. {
  167. MessageBox("The entry already exists!","error",MB_OK);
  168. return;
  169. }
  170. }
  171. m_list_sport.AddString(buffer);
  172. }
  173. void CFileterDlg::OnButtonDportAdd() 
  174. {
  175. if(!UpdateData(TRUE))
  176. return;
  177. int i;
  178. char buffer[64],text[64];
  179. _itoa( m_edit_dport, buffer, 10 );
  180. for(i=0;i<m_list_dport.GetCount();i++)
  181. {
  182. m_list_dport.GetText(i,text);
  183. if(!strcmp(buffer,text))
  184. {
  185. MessageBox("The entry already exists!","error",MB_OK);
  186. return;
  187. }
  188. }
  189. m_list_dport.AddString(buffer);
  190. }
  191. void CFileterDlg::OnButtonSipDel() 
  192. {
  193. UINT index;
  194. if((index=m_list_sip.GetCurSel())==LB_ERR)
  195. return;
  196. m_list_sip.DeleteString(index);
  197. }
  198. void CFileterDlg::OnButtonDipDel() 
  199. {
  200. UINT index;
  201. if((index=m_list_dip.GetCurSel())==LB_ERR)
  202. return;
  203. m_list_dip.DeleteString(index);
  204. }
  205. void CFileterDlg::OnButtonSportDel() 
  206. {
  207. UINT index;
  208. if((index=m_list_sport.GetCurSel())==LB_ERR)
  209. return;
  210. m_list_sport.DeleteString(index);
  211. }
  212. void CFileterDlg::OnButtonDportDel() 
  213. {
  214. UINT index;
  215. if((index=m_list_dport.GetCurSel())==LB_ERR)
  216. return;
  217. m_list_dport.DeleteString(index);
  218. }