Page4.cpp
上传用户:heseme
上传日期:2009-12-23
资源大小:228k
文件大小:26k
开发平台:

Visual C++

  1. // Page4.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "FireWall1.h"
  5. #include "Page4.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. extern int global_set;
  12. FILE *pfoutService=NULL;
  13. FILE *pwriteService=NULL;
  14. ServiceManageData MyServiceManageData;
  15. CString m_str_key;
  16. BOOL nook4;
  17. /////////////////////////////////////////////////////////////////////////////
  18. // CPage4 property page
  19. IMPLEMENT_DYNCREATE(CPage4, CPropertyPage)
  20. CPage4::CPage4() : CPropertyPage(CPage4::IDD)
  21. {
  22. //{{AFX_DATA_INIT(CPage4)
  23. m_str_key="";
  24. m_check_activex = FALSE;
  25. m_check_ftp = FALSE;
  26. m_check_http = FALSE;
  27. m_check_ispro = FALSE;
  28. m_check_isurl = FALSE;
  29. m_check_java = FALSE;
  30. m_check_other = FALSE;
  31. m_check_script = FALSE;
  32. m_check_smtp = FALSE;
  33. m_check_tcp = FALSE;
  34. m_check_telnet = FALSE;
  35. m_check_udp = FALSE;
  36. m_edit_nofilterurl = _T("");
  37. m_edit_otherkey = _T("");
  38. m_edit_url = _T("");
  39. nook4=1;
  40. //}}AFX_DATA_INIT
  41. }
  42. CPage4::~CPage4()
  43. {
  44. if(nook4)
  45. {
  46. /* GetNameFromFile();
  47. memset(MyServiceManageData.FilterKeyWord,0,200);
  48. strcpy(MyServiceManageData.FilterKeyWord,m_edit_otherkey);
  49. */
  50. }
  51. }
  52. void CPage4::DoDataExchange(CDataExchange* pDX)
  53. {
  54. CPropertyPage::DoDataExchange(pDX);
  55. //{{AFX_DATA_MAP(CPage4)
  56. DDX_Control(pDX, IDC_EDIT_URL, m_edit_urlct);
  57. DDX_Control(pDX, IDC_EDIT_OTHERKEY, m_edit_otherkeyct);
  58. DDX_Control(pDX, IDC_EDIT_NOFILTERURL, m_edit_nofilterurlct);
  59. DDX_Check(pDX, IDC_CHECK_ACTIVEX, m_check_activex);
  60. DDX_Check(pDX, IDC_CHECK_FTP, m_check_ftp);
  61. DDX_Check(pDX, IDC_CHECK_HTTP, m_check_http);
  62. DDX_Check(pDX, IDC_CHECK_ISPRO, m_check_ispro);
  63. DDX_Check(pDX, IDC_CHECK_ISURL, m_check_isurl);
  64. DDX_Check(pDX, IDC_CHECK_JAVA, m_check_java);
  65. DDX_Check(pDX, IDC_CHECK_OTHER, m_check_other);
  66. DDX_Check(pDX, IDC_CHECK_SCRIPT, m_check_script);
  67. DDX_Check(pDX, IDC_CHECK_SMTP, m_check_smtp);
  68. DDX_Check(pDX, IDC_CHECK_TCP, m_check_tcp);
  69. DDX_Check(pDX, IDC_CHECK_TELNET, m_check_telnet);
  70. DDX_Check(pDX, IDC_CHECK_UDP, m_check_udp);
  71. DDX_Text(pDX, IDC_EDIT_NOFILTERURL, m_edit_nofilterurl);
  72. DDX_Text(pDX, IDC_EDIT_OTHERKEY, m_edit_otherkey);
  73. DDX_Text(pDX, IDC_EDIT_URL, m_edit_url);
  74. //}}AFX_DATA_MAP
  75. }
  76. BEGIN_MESSAGE_MAP(CPage4, CPropertyPage)
  77. //{{AFX_MSG_MAP(CPage4)
  78. ON_BN_CLICKED(IDC_BUTTON_OK, OnButtonOk)
  79. ON_BN_CLICKED(IDC_CHECK_ACTIVEX, OnCheckActivex)
  80. ON_BN_CLICKED(IDC_CHECK_HTTP, OnCheckHttp)
  81. ON_BN_CLICKED(IDC_CHECK_ISPRO, OnCheckIspro)
  82. ON_BN_CLICKED(IDC_CHECK_ISURL, OnCheckIsurl)
  83. ON_BN_CLICKED(IDC_CHECK_JAVA, OnCheckJava)
  84. ON_BN_CLICKED(IDC_CHECK_OTHER, OnCheckOther)
  85. ON_BN_CLICKED(IDC_CHECK_SCRIPT, OnCheckScript)
  86. ON_BN_CLICKED(IDC_CHECK_TCP, OnCheckTcp)
  87. ON_BN_CLICKED(IDC_CHECK_SMTP, OnCheckSmtp)
  88. ON_BN_CLICKED(IDC_CHECK_TELNET, OnCheckTelnet)
  89. ON_BN_CLICKED(IDC_CHECK_UDP, OnCheckUdp)
  90. //}}AFX_MSG_MAP
  91. END_MESSAGE_MAP()
  92. /////////////////////////////////////////////////////////////////////////////
  93. // CPage4 message handlers
  94. void CPage4::OnButtonOk() 
  95. {
  96. nook4=0;
  97. UpdateData(1);
  98. if((m_edit_nofilterurl.GetLength()>2)&&(m_edit_url.GetLength()>2)&&m_check_isurl)
  99. {
  100. if(GetBestData())
  101. {
  102. AfxMessageBox("URL 有冲突,请重新配置!");
  103. return;
  104. }
  105. }
  106. m_str_key="";
  107. if(m_check_java)m_str_key+="appletrn";
  108. if(m_check_activex)m_str_key+="objectrn";
  109. if(m_check_script)m_str_key+="scriptrn";
  110. global_set|=0x4;
  111. //下面上尚有BUG,对EDIT框的回车没有很好自动修正
  112. char tempbuf[200];
  113. memset(tempbuf,0,10);
  114. int len;
  115. len=m_edit_otherkey.GetLength();
  116. if(len>2)
  117. {
  118. strcpy(tempbuf,_T(m_edit_otherkey));
  119. if(tempbuf[len-1]!='n')
  120. {
  121. m_edit_otherkey+="rn";
  122. }
  123. }
  124. else m_edit_otherkey="";
  125. UpdateData(TRUE);
  126. if(m_check_other)m_str_key+=m_edit_otherkey;
  127. memset(tempbuf,0,200);
  128. len=m_edit_url.GetLength();
  129. if(len>0)
  130. {
  131. strcpy(tempbuf,_T(m_edit_url));
  132. if(tempbuf[len-1]!='n')
  133. {
  134. m_edit_url+="rn";
  135. }
  136. }
  137. memset(tempbuf,0,200);
  138. len=m_edit_nofilterurl.GetLength();
  139. if(len>0)
  140. {
  141. strcpy(tempbuf,_T(m_edit_nofilterurl));
  142. if(tempbuf[len-1]!='n')
  143. {
  144. m_edit_nofilterurl+="rn";
  145. }
  146. }
  147. /* GetDlgItem(IDC_EDIT_URL)->UpdateData(TRUE);
  148. GetDlgItem(IDC_EDIT_NOFILTERURL)->UpdateData(TRUE);
  149. */
  150. strcpy(MyServiceManageData.FilterKeyWord,m_str_key);
  151. strcpy(MyServiceManageData.BlockURLList,m_edit_url);
  152. strcpy(MyServiceManageData.NoFilterURLList,m_edit_nofilterurl);
  153. pwriteService=fopen("service.txt","w");
  154. if(pwriteService)
  155. {
  156. fprintf(pwriteService,_T("[FilterAndBlock]n"));
  157. fprintf(pwriteService,"%dn",MyServiceManageData.FilterAndBlock);
  158. fprintf(pwriteService,"n");
  159. fprintf(pwriteService,_T("[Port]n"));
  160. fprintf(pwriteService,"%dn",MyServiceManageData.Port);
  161. fprintf(pwriteService,"n");
  162. fprintf(pwriteService,_T("[TranProtocal]n"));
  163. fprintf(pwriteService,"%dn",MyServiceManageData.TranProtocal);
  164. fprintf(pwriteService,"n");
  165. fprintf(pwriteService,_T("[FilterKeyWords]n"));
  166. // fprintf(pwriteService,"%sn",MyServiceManageData.FilterKeyWord);
  167. fprintf(pwriteService,"%sn",_T(m_str_key));
  168. // fprintf(pwriteService,"rn");
  169. fprintf(pwriteService,_T("[TCPFilterBit]n"));
  170. fprintf(pwriteService,"%dn",MyServiceManageData.TCPFilterBit);
  171. fprintf(pwriteService,"n");
  172. fprintf(pwriteService,_T("[BlockUrl]n"));
  173. fprintf(pwriteService,"%sn",_T(m_edit_url));
  174. // fprintf(pwriteService,"rn");
  175. fprintf(pwriteService,_T("[NoFilterURL]rn"));
  176. fprintf(pwriteService,"%sn",_T(m_edit_nofilterurl));
  177. // fprintf(pwriteService,"rn");
  178. fprintf(pwriteService,_T("[jl]n"));
  179. if(pwriteService!=NULL)
  180. fclose(pwriteService);
  181. }
  182. }
  183. void CPage4::OnCheckActivex() 
  184. {
  185. if(m_check_activex)
  186. {
  187. m_check_activex=FALSE;
  188. MyServiceManageData.TCPFilterBit&=0xFFFFFFfb;
  189. }
  190. else
  191. {
  192. m_check_activex=TRUE;
  193. MyServiceManageData.TCPFilterBit|=0x04;
  194. }
  195. }
  196. void CPage4::OnCheckHttp() 
  197. {
  198. if(m_check_http)
  199. {
  200. m_check_http=FALSE;
  201. MyServiceManageData.Port&=0xFFFFFFfe;
  202. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_JAVA),SW_HIDE);
  203. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_HTTP),SW_HIDE);
  204. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_SCRIPT),SW_HIDE);
  205. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_ACTIVEX),SW_HIDE);
  206. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_FILTERURL),SW_HIDE);
  207. ::ShowWindow(::GetDlgItem(*this,IDC_EDIT_NOFILTERURL),SW_HIDE);
  208. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_OTHER),SW_HIDE);
  209. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_OTHERKEY),SW_HIDE);
  210. ::ShowWindow(::GetDlgItem(*this,IDC_EDIT_OTHERKEY),SW_HIDE);
  211. }
  212. else
  213. {
  214. m_check_http=TRUE;
  215. MyServiceManageData.Port|=0x01;
  216. if(m_check_other)
  217. {
  218. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_OTHERKEY),SW_SHOWNORMAL);
  219. ::ShowWindow(::GetDlgItem(*this,IDC_EDIT_OTHERKEY),SW_SHOWNORMAL);
  220. }
  221. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_JAVA),SW_SHOWNORMAL);
  222. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_HTTP),SW_SHOWNORMAL);
  223. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_SCRIPT),SW_SHOWNORMAL);
  224. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_ACTIVEX),SW_SHOWNORMAL);
  225. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_FILTERURL),SW_SHOWNORMAL);
  226. ::ShowWindow(::GetDlgItem(*this,IDC_EDIT_NOFILTERURL),SW_SHOWNORMAL);
  227. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_OTHER),SW_SHOWNORMAL);
  228. }
  229. }
  230. void CPage4::OnCheckIspro() 
  231. {
  232. if(m_check_ispro==TRUE)
  233. {
  234. m_check_ispro=FALSE;
  235. MyServiceManageData.FilterAndBlock&=0xFFFFFFFE;
  236. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_TCP),SW_HIDE);
  237. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_UDP),SW_HIDE);
  238. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_HTTP),SW_HIDE);
  239. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_HTTP),SW_HIDE);
  240. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_FTP),SW_HIDE);
  241. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_SMTP),SW_HIDE);
  242. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_TELNET),SW_HIDE);
  243. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_JAVA),SW_HIDE);
  244. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_SCRIPT),SW_HIDE);
  245. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_ACTIVEX),SW_HIDE);
  246. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_OTHER),SW_HIDE);
  247. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_FILTERURL),SW_HIDE);
  248. ::ShowWindow(::GetDlgItem(*this,IDC_EDIT_NOFILTERURL),SW_HIDE);
  249. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_OTHERKEY),SW_HIDE);
  250. ::ShowWindow(::GetDlgItem(*this,IDC_EDIT_OTHERKEY),SW_HIDE);
  251. }
  252. else
  253. {
  254. m_check_ispro=TRUE;
  255. MyServiceManageData.FilterAndBlock|=0x01;
  256. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_TCP),SW_SHOWNORMAL);
  257. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_UDP),SW_SHOWNORMAL);
  258. if(m_check_tcp)
  259. {
  260. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_HTTP),SW_SHOWNORMAL);
  261. if(m_check_http)
  262. {
  263. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_HTTP),SW_SHOWNORMAL);
  264. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_JAVA),SW_SHOWNORMAL);
  265. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_SCRIPT),SW_SHOWNORMAL);
  266. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_ACTIVEX),SW_SHOWNORMAL);
  267. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_OTHER),SW_SHOWNORMAL);
  268. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_FILTERURL),SW_SHOWNORMAL);
  269. ::ShowWindow(::GetDlgItem(*this,IDC_EDIT_NOFILTERURL),SW_SHOWNORMAL);
  270. if(m_check_other)
  271. {
  272. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_OTHERKEY),SW_SHOWNORMAL);
  273. ::ShowWindow(::GetDlgItem(*this,IDC_EDIT_OTHERKEY),SW_SHOWNORMAL);
  274. }
  275. }
  276. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_FTP),SW_SHOWNORMAL);
  277. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_SMTP),SW_SHOWNORMAL);
  278. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_TELNET),SW_SHOWNORMAL);
  279. }
  280. }
  281. }
  282. void CPage4::OnCheckIsurl() 
  283. {
  284. // TODO: Add your control notification handler code here
  285. if(m_check_isurl)
  286. {
  287. m_check_isurl=FALSE;
  288. MyServiceManageData.FilterAndBlock&=0xFFFFFFFD;
  289. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_URL),SW_HIDE);
  290. ::ShowWindow(::GetDlgItem(*this,IDC_EDIT_URL),SW_HIDE);
  291. }
  292. else
  293. {
  294. m_check_isurl=TRUE;
  295. MyServiceManageData.FilterAndBlock|=0x2;
  296. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_URL),SW_SHOWNORMAL);
  297. ::ShowWindow(::GetDlgItem(*this,IDC_EDIT_URL),SW_SHOWNORMAL);
  298. }
  299. }
  300. void CPage4::OnCheckJava() 
  301. {
  302. if(m_check_java)
  303. {
  304. m_check_java=FALSE;
  305. MyServiceManageData.TCPFilterBit&=0xFFFFFFfe;
  306. }
  307. else
  308. {
  309. m_check_java=TRUE;
  310. MyServiceManageData.TCPFilterBit|=0x01;
  311. }
  312. }
  313. void CPage4::OnCheckOther() 
  314. {
  315. // TODO: Add your control notification handler code here
  316. if(m_check_other)
  317. {
  318. m_check_other=FALSE;
  319. MyServiceManageData.TCPFilterBit&=0xFFFFFFF7;
  320. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_OTHERKEY),SW_HIDE);
  321. ::ShowWindow(::GetDlgItem(*this,IDC_EDIT_OTHERKEY),SW_HIDE);
  322. }
  323. else
  324. {
  325. m_check_other=TRUE;
  326. MyServiceManageData.TCPFilterBit|=0x08;
  327. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_OTHERKEY),SW_SHOWNORMAL);
  328. ::ShowWindow(::GetDlgItem(*this,IDC_EDIT_OTHERKEY),SW_SHOWNORMAL);
  329. }
  330. }
  331. void CPage4::OnCheckScript() 
  332. {
  333. if(m_check_script)
  334. {
  335. m_check_script=FALSE;
  336. MyServiceManageData.TCPFilterBit&=0xFFFFFFfd;
  337. }
  338. else
  339. {
  340. m_check_script=TRUE;
  341. MyServiceManageData.TCPFilterBit|=0x02;
  342. }
  343. }
  344. void CPage4::OnCheckTcp() 
  345. {
  346. // TODO: Add your control notification handler code here
  347. if(m_check_tcp)
  348. {
  349. m_check_tcp=FALSE;
  350. MyServiceManageData.TranProtocal&=0xFFFFFFfe;
  351. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_HTTP),SW_HIDE);
  352. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_FTP),SW_HIDE);
  353. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_SMTP),SW_HIDE);
  354. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_TELNET),SW_HIDE);
  355. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_HTTP),SW_HIDE);
  356. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_JAVA),SW_HIDE);
  357. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_SCRIPT),SW_HIDE);
  358. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_ACTIVEX),SW_HIDE);
  359. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_OTHER),SW_HIDE);
  360. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_FILTERURL),SW_HIDE);
  361. ::ShowWindow(::GetDlgItem(*this,IDC_EDIT_NOFILTERURL),SW_HIDE);
  362. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_OTHERKEY),SW_HIDE);
  363. ::ShowWindow(::GetDlgItem(*this,IDC_EDIT_OTHERKEY),SW_HIDE);
  364. }
  365. else
  366. {
  367. m_check_tcp=TRUE;
  368. MyServiceManageData.TranProtocal|=0x01;
  369. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_HTTP),SW_SHOWNORMAL);
  370. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_FTP),SW_SHOWNORMAL);
  371. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_SMTP),SW_SHOWNORMAL);
  372. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_TELNET),SW_SHOWNORMAL);
  373. if(m_check_http)
  374. {
  375. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_HTTP),SW_SHOWNORMAL);
  376. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_JAVA),SW_SHOWNORMAL);
  377. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_SCRIPT),SW_SHOWNORMAL);
  378. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_ACTIVEX),SW_SHOWNORMAL);
  379. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_OTHER),SW_SHOWNORMAL);
  380. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_FILTERURL),SW_SHOWNORMAL);
  381. ::ShowWindow(::GetDlgItem(*this,IDC_EDIT_NOFILTERURL),SW_SHOWNORMAL);
  382. if(m_check_other)
  383. {
  384. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_OTHERKEY),SW_SHOWNORMAL);
  385. ::ShowWindow(::GetDlgItem(*this,IDC_EDIT_OTHERKEY),SW_SHOWNORMAL);
  386. }
  387. }
  388. }
  389. }
  390. WORD CPage4::GetDataFromFile()
  391. {
  392. int totlen=0;
  393. int len;
  394. char command[40];
  395. char *pbuf;
  396. pfoutService=fopen("service.txt","r");
  397. if(pfoutService==NULL)return 0;
  398. while(feof(pfoutService)==0)
  399. {
  400. ReadCommand(pfoutService,command);
  401. switch(GetCommand(command))
  402. {
  403. case FILTERANDBLOCK:
  404. ReadCommand(pfoutService,command);
  405. sscanf(command,"%d",&MyServiceManageData.FilterAndBlock);
  406. if(MyServiceManageData.FilterAndBlock&0x01)
  407. m_check_ispro=TRUE;
  408. else m_check_ispro=FALSE;
  409. if(MyServiceManageData.FilterAndBlock&0x02)
  410. m_check_isurl=TRUE;
  411. else m_check_isurl=FALSE;
  412. break;
  413. case TRANPROTOCAL:
  414. ReadCommand(pfoutService,command);
  415. sscanf(command,"%d",&MyServiceManageData.TranProtocal);
  416. if(MyServiceManageData.TranProtocal&0x1)
  417. {
  418. MyServiceManageData.TranProtocal|=0x01;
  419. m_check_tcp=TRUE;
  420. }
  421. else m_check_tcp=FALSE;
  422. break;
  423. case PORT:
  424. ReadCommand(pfoutService,command);
  425. sscanf(command,"%d",&MyServiceManageData.Port);
  426. if(MyServiceManageData.Port&0x1)
  427. {
  428. MyServiceManageData.Port|=0x1;
  429. m_check_http=TRUE;
  430. }
  431. else
  432. {
  433. MyServiceManageData.Port&=0xfe;
  434. m_check_http=FALSE;
  435. }
  436. break;
  437. case FILTERKEYWORDS:
  438. ReadCommand(pfoutService,command);
  439. while(GetCommand(command)!=INITIAL_END_SEGMENT) {
  440. m_edit_otherkey+=command;
  441. m_edit_otherkey+="rn";
  442. ReadCommand(pfoutService,command);
  443. }
  444. /* m_edit_otherkey.TrimRight("rn");
  445. len=m_edit_otherkey.Find("r");
  446. while(len!=-1)
  447. {
  448. totlen=m_edit_otherkey.GetLength();
  449. m_edit_otherkey=m_edit_otherkey.Right(totlen-len-2);
  450. len=m_edit_otherkey.Find("r");
  451. }
  452. m_edit_otherkey+="rn";
  453. */
  454. len=m_edit_otherkey.Find("appletrn");
  455. if(len!=-1)
  456. {
  457. totlen=m_edit_otherkey.GetLength();
  458. m_edit_otherkey=m_edit_otherkey.Right(totlen-6);
  459. }
  460. len=m_edit_otherkey.Find("objectrn");
  461. if(len!=-1)
  462. {
  463. totlen=m_edit_otherkey.GetLength();
  464. m_edit_otherkey=m_edit_otherkey.Right(totlen-9);
  465. }
  466. len=m_edit_otherkey.Find("scriptrn");
  467. if(len!=-1)
  468. {
  469. totlen=m_edit_otherkey.GetLength();
  470. m_edit_otherkey=m_edit_otherkey.Right(totlen-8);
  471. }
  472. break;
  473. case TCPFILTERBIT:
  474. ReadCommand(pfoutService,command);
  475. sscanf(command,"%d",&MyServiceManageData.TCPFilterBit);
  476. if(MyServiceManageData.TCPFilterBit&0x01)
  477. m_check_java=1;
  478. else m_check_java=0;
  479. if(MyServiceManageData.TCPFilterBit&0x02)
  480. m_check_script=1;
  481. else m_check_script=0;
  482. if(MyServiceManageData.TCPFilterBit&0x04)
  483. m_check_activex=1;
  484. else m_check_activex=0;
  485. if(MyServiceManageData.TCPFilterBit&0x08)
  486. m_check_other=1;
  487. else m_check_other=0;
  488. break;
  489. case BLOCKURL:
  490. ReadCommand(pfoutService,command);
  491. while(GetCommand(command)!=INITIAL_END_SEGMENT) {
  492. m_edit_url+=command;
  493. m_edit_url+="rn";
  494. ReadCommand(pfoutService,command);
  495. }
  496. break;
  497. case NOFILTERURL:
  498. ReadCommand(pfoutService,command);
  499. while(GetCommand(command)!=INITIAL_END_SEGMENT) {
  500. m_edit_nofilterurl+=command;
  501. m_edit_nofilterurl+="rn";
  502. ReadCommand(pfoutService,command);
  503. }
  504. break;
  505. }
  506. }
  507. if(pfoutService)fclose(pfoutService);
  508. return 1;
  509. }
  510. void CPage4::ReadCommand(FILE *pf, char *pbuf)
  511. {
  512. while(feof(pf)==0) {
  513. *pbuf=fgetc(pf);
  514. if(*pbuf=='n') break;
  515. pbuf++;
  516. }
  517. *pbuf--=0;
  518. if(*pbuf=='r')*pbuf=0;
  519. }
  520. WORD CPage4::GetCommand(char *pbuf)
  521. {
  522. char buf[50];
  523. if(*pbuf==0) return INITIAL_END_SEGMENT;
  524. sscanf(pbuf,"%s",buf);
  525. if(strstr(buf,"[NoFilterURL]")!=NULL) return NOFILTERURL;
  526. else if(strstr(buf,"[FilterAndBlock]")!=NULL) return FILTERANDBLOCK;
  527. else if(strstr(buf,"[TranProtocal]")!=NULL)return TRANPROTOCAL;
  528. else if(strstr(buf,"[Port]")!=NULL) return PORT;
  529. else if(strstr(buf,"[FilterKeyWords]")!=NULL) return FILTERKEYWORDS;
  530. else if(strstr(buf,"[TCPFilterBit]")!=NULL) return TCPFILTERBIT;
  531. else if(strstr(buf,"[BlockUrl]")!=NULL)return BLOCKURL;
  532. else if(buf[0]=='#') return COMMENT;
  533. else if(strstr(buf,"[jl]")!=NULL) return INITIAL_END_SEGMENT;
  534. else return COMMAND_UNKNOWN;
  535. }
  536. void CPage4::OnCheckSmtp() 
  537. {
  538. // TODO: Add your control notification handler code here
  539. }
  540. void CPage4::OnCheckTelnet() 
  541. {
  542. // TODO: Add your control notification handler code here
  543. }
  544. void CPage4::OnCheckUdp() 
  545. {
  546. // TODO: Add your control notification handler code here
  547. }
  548. void CPage4::ShowInitWindow()
  549. {
  550. // if(pfoutService)
  551. {
  552. if(!m_check_ispro)
  553. {
  554. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_TCP),SW_HIDE);
  555. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_UDP),SW_HIDE);
  556. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_HTTP),SW_HIDE);
  557. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_HTTP),SW_HIDE);
  558. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_FTP),SW_HIDE);
  559. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_SMTP),SW_HIDE);
  560. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_TELNET),SW_HIDE);
  561. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_JAVA),SW_HIDE);
  562. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_SCRIPT),SW_HIDE);
  563. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_ACTIVEX),SW_HIDE);
  564. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_OTHER),SW_HIDE);
  565. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_FILTERURL),SW_HIDE);
  566. ::ShowWindow(::GetDlgItem(*this,IDC_EDIT_NOFILTERURL),SW_HIDE);
  567. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_OTHERKEY),SW_HIDE);
  568. ::ShowWindow(::GetDlgItem(*this,IDC_EDIT_OTHERKEY),SW_HIDE);
  569. }
  570. if(!m_check_isurl)
  571. {
  572. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_URL),SW_HIDE);
  573. ::ShowWindow(::GetDlgItem(*this,IDC_EDIT_URL),SW_HIDE);
  574. }
  575. if(!m_check_tcp)
  576. {
  577. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_HTTP),SW_HIDE);
  578. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_FTP),SW_HIDE);
  579. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_SMTP),SW_HIDE);
  580. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_TELNET),SW_HIDE);
  581. }
  582. if(!m_check_http)
  583. {
  584. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_JAVA),SW_HIDE);
  585. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_HTTP),SW_HIDE);
  586. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_SCRIPT),SW_HIDE);
  587. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_ACTIVEX),SW_HIDE);
  588. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_FILTERURL),SW_HIDE);
  589. ::ShowWindow(::GetDlgItem(*this,IDC_EDIT_NOFILTERURL),SW_HIDE);
  590. ::ShowWindow(::GetDlgItem(*this,IDC_CHECK_OTHER),SW_HIDE);
  591. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_OTHERKEY),SW_HIDE);
  592. ::ShowWindow(::GetDlgItem(*this,IDC_EDIT_OTHERKEY),SW_HIDE);
  593. }
  594. if(!m_check_other)
  595. {
  596. ::ShowWindow(::GetDlgItem(*this,IDC_STATIC_OTHERKEY),SW_HIDE);
  597. ::ShowWindow(::GetDlgItem(*this,IDC_EDIT_OTHERKEY),SW_HIDE);
  598. }
  599. }
  600. }
  601. BOOL CPage4::OnInitDialog() 
  602. {
  603. CPropertyPage::OnInitDialog();
  604. // TODO: Add extra initialization here
  605. GetData();
  606. UpdateData(FALSE);
  607. ShowInitWindow();
  608. return TRUE;  // return TRUE unless you set the focus to a control
  609.               // EXCEPTION: OCX Property Pages should return FALSE
  610. }
  611. BOOL CPage4::OnSetActive() 
  612. {
  613. // TODO: Add your specialized code here and/or call the base class
  614. GetData();
  615. if(MyServiceManageData.TCPFilterBit&0x1)
  616. m_check_java=1;
  617. else m_check_java=0;
  618. if(MyServiceManageData.TCPFilterBit&0x2)
  619. m_check_script=1;
  620. else m_check_script=0;
  621. if(MyServiceManageData.TCPFilterBit&0x4)
  622. m_check_activex=1;
  623. else m_check_activex=0;
  624. UpdateData(0);
  625. return CPropertyPage::OnSetActive();
  626. }
  627. void CPage4::GetNameFromFile()
  628. {
  629. int totlen=0;
  630. int len;
  631. char command[40];
  632. char *pbuf;
  633. pfoutService=fopen("service.txt","r");
  634. if(pfoutService==NULL)return;
  635. while(feof(pfoutService)==0)
  636. {
  637. ReadCommand(pfoutService,command);
  638. switch(GetCommand(command))
  639. {
  640. case FILTERANDBLOCK:
  641. ReadCommand(pfoutService,command);
  642. sscanf(command,"%d",&MyServiceManageData.FilterAndBlock);
  643. if(MyServiceManageData.FilterAndBlock&0x01)
  644. m_check_ispro=TRUE;
  645. else m_check_ispro=FALSE;
  646. if(MyServiceManageData.FilterAndBlock&0x02)
  647. m_check_isurl=TRUE;
  648. else m_check_isurl=FALSE;
  649. break;
  650. case TRANPROTOCAL:
  651. ReadCommand(pfoutService,command);
  652. sscanf(command,"%d",&MyServiceManageData.TranProtocal);
  653. if(MyServiceManageData.TranProtocal&0x1)
  654. {
  655. MyServiceManageData.TranProtocal|=0x01;
  656. m_check_tcp=TRUE;
  657. }
  658. else m_check_tcp=FALSE;
  659. break;
  660. case PORT:
  661. ReadCommand(pfoutService,command);
  662. sscanf(command,"%d",&MyServiceManageData.Port);
  663. if(MyServiceManageData.Port&0x1)
  664. {
  665. MyServiceManageData.Port|=0x1;
  666. m_check_http=TRUE;
  667. }
  668. else
  669. {
  670. MyServiceManageData.Port&=0xfe;
  671. m_check_http=FALSE;
  672. }
  673. break;
  674. case FILTERKEYWORDS:
  675. ReadCommand(pfoutService,command);
  676. while(GetCommand(command)!=INITIAL_END_SEGMENT) {
  677. m_edit_otherkey+=command;
  678. m_edit_otherkey+="rn";
  679. // MessageBox(m_edit_otherkey);
  680. ReadCommand(pfoutService,command);
  681. }
  682. /* m_edit_otherkey.TrimRight("rn");
  683. len=m_edit_otherkey.Find("r");
  684. while(len!=-1)
  685. {
  686. totlen=m_edit_otherkey.GetLength();
  687. m_edit_otherkey=m_edit_otherkey.Right(totlen-len-2);
  688. len=m_edit_otherkey.Find("r");
  689. }
  690. m_edit_otherkey+="rn";
  691. */
  692. len=m_edit_otherkey.Find("appletrn");
  693. if(len!=-1)
  694. {
  695. totlen=m_edit_otherkey.GetLength();
  696. m_edit_otherkey=m_edit_otherkey.Right(totlen-6);
  697. }
  698. len=m_edit_otherkey.Find("objectrn");
  699. if(len!=-1)
  700. {
  701. totlen=m_edit_otherkey.GetLength();
  702. m_edit_otherkey=m_edit_otherkey.Right(totlen-9);
  703. }
  704. len=m_edit_otherkey.Find("scriptrn");
  705. if(len!=-1)
  706. {
  707. totlen=m_edit_otherkey.GetLength();
  708. m_edit_otherkey=m_edit_otherkey.Right(totlen-8);
  709. }
  710. break;
  711. case TCPFILTERBIT:
  712. ReadCommand(pfoutService,command);
  713. sscanf(command,"%d",&MyServiceManageData.TCPFilterBit);
  714. if(MyServiceManageData.TCPFilterBit&0x01)
  715. m_check_java=1;
  716. else m_check_java=0;
  717. if(MyServiceManageData.TCPFilterBit&0x02)
  718. m_check_script=1;
  719. else m_check_script=0;
  720. if(MyServiceManageData.TCPFilterBit&0x04)
  721. m_check_activex=1;
  722. else m_check_activex=0;
  723. if(MyServiceManageData.TCPFilterBit&0x08)
  724. m_check_other=1;
  725. else m_check_other=0;
  726. break;
  727. case BLOCKURL:
  728. ReadCommand(pfoutService,command);
  729. while(GetCommand(command)!=INITIAL_END_SEGMENT) {
  730. m_edit_url+=command;
  731. m_edit_url+="rn";
  732. ReadCommand(pfoutService,command);
  733. }
  734. break;
  735. case NOFILTERURL:
  736. ReadCommand(pfoutService,command);
  737. while(GetCommand(command)!=INITIAL_END_SEGMENT) {
  738. m_edit_nofilterurl+=command;
  739. m_edit_nofilterurl+="rn";
  740. ReadCommand(pfoutService,command);
  741. }
  742. break;
  743. }
  744. }
  745. if(pfoutService)fclose(pfoutService);
  746. return ;
  747. }
  748. int CPage4::GetBestData()
  749. {
  750. char *nofilter;
  751. char tmpurl[50];
  752. nofilter=m_edit_url.GetBuffer(m_edit_url.GetLength());
  753. int ff=0;
  754. CString str="";
  755. CString strbest=m_edit_nofilterurl;
  756. int ffff=strbest.Find("rn");
  757. while(ffff>0)
  758. {
  759. memset(tmpurl,0,50);
  760. str=strbest.Left(ffff+2);
  761. strbest=strbest.Right(strbest.GetLength()-ffff-2);
  762. strcpy(tmpurl,str.GetBuffer(ffff+2));
  763. if(strstr(nofilter,tmpurl))ff++;
  764. ffff=strbest.Find("rn");
  765. // if(strbest
  766. }
  767. if(ff){
  768. memset(tmpurl,0,50);
  769. sprintf(tmpurl,"阻断URL和不进行协议内容过滤URL有%d处冲突,请重新配置",ff);
  770. }
  771. return ff;
  772. // m_edit_nofilterurl
  773. // m_edit_url
  774. }
  775. void CPage4::GetData()
  776. {
  777. int totlen;
  778. if(MyServiceManageData.FilterAndBlock&0x01)
  779. m_check_ispro=TRUE;
  780. else m_check_ispro=FALSE;
  781. if(MyServiceManageData.FilterAndBlock&0x02)
  782. m_check_isurl=TRUE;
  783. else m_check_isurl=FALSE;
  784. if(MyServiceManageData.TranProtocal&0x1)
  785. {
  786. // MyServiceManageData.TranProtocal|=0x01;
  787. m_check_tcp=TRUE;
  788. }
  789. else m_check_tcp=FALSE;
  790. if(MyServiceManageData.Port&0x1)
  791. {
  792. // MyServiceManageData.Port|=0x1;
  793. m_check_http=TRUE;
  794. }
  795. else
  796. {
  797. // MyServiceManageData.Port&=0xfe;
  798. m_check_http=FALSE;
  799. }
  800. m_edit_otherkey=MyServiceManageData.FilterKeyWord;
  801. int len=m_edit_otherkey.Find("appletrn");
  802. if(len!=-1)
  803. {
  804. totlen=m_edit_otherkey.GetLength();
  805. m_edit_otherkey=m_edit_otherkey.Right(totlen-6);
  806. }
  807. len=m_edit_otherkey.Find("objectrn");
  808. if(len!=-1)
  809. {
  810. totlen=m_edit_otherkey.GetLength();
  811. m_edit_otherkey=m_edit_otherkey.Right(totlen-9);
  812. }
  813. len=m_edit_otherkey.Find("scriptrn");
  814. if(len!=-1)
  815. {
  816. totlen=m_edit_otherkey.GetLength();
  817. m_edit_otherkey=m_edit_otherkey.Right(totlen-8);
  818. }
  819. if(m_edit_otherkey.GetLength()<2)m_edit_otherkey="";
  820. //////////////////
  821. if(MyServiceManageData.TCPFilterBit&0x01)
  822. m_check_java=1;
  823. else m_check_java=0;
  824. if(MyServiceManageData.TCPFilterBit&0x02)
  825. m_check_script=1;
  826. else m_check_script=0;
  827. if(MyServiceManageData.TCPFilterBit&0x04)
  828. m_check_activex=1;
  829. else m_check_activex=0;
  830. if(MyServiceManageData.TCPFilterBit&0x08)
  831. m_check_other=1;
  832. else m_check_other=0;
  833. ////////////////
  834. m_edit_url=MyServiceManageData.BlockURLList;
  835. ///////////////////
  836. m_edit_nofilterurl=MyServiceManageData.NoFilterURLList;
  837. ////////////////////////
  838. }