为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

防火墙代码

2017-11-15 18页 doc 47KB 141阅读

用户头像

is_314871

暂无简介

举报
防火墙代码防火墙代码 BOOL IpRule::OnInitDialog() { CDialog::OnInitDialog(); m_hDLGBKBrush = CreateSolidBrush(RGB(242,246,250)); // TODO: Add extra initialization here m_iprulelist.SetExtendedStyle(m_iprulelist.GetExtendedStyle() | LVS_EX_CHECKBOXES | LVS_EX_FLATSB | LVS_EX_GR...
防火墙代码
防火墙代码 BOOL IpRule::OnInitDialog() { CDialog::OnInitDialog(); m_hDLGBKBrush = CreateSolidBrush(RGB(242,246,250)); // TODO: Add extra initialization here m_iprulelist.SetExtendedStyle(m_iprulelist.GetExtendedStyle() | LVS_EX_CHECKBOXES | LVS_EX_FLATSB | LVS_EX_GRIDLINES | LVS_EX_HEADERDRAGDROP | LVS_EX_FULLROWSELECT); m_iprulelist.InsertColumn(0,"启用",LVCFMT_LEFT,20,-1); m_iprulelist.InsertColumn(1,"规则名称",LVCFMT_LEFT,180,-1); m_iprulelist.InsertColumn(2,"动作",LVCFMT_LEFT,40,-1); m_iprulelist.InsertColumn(3,"协议",LVCFMT_LEFT,45,-1); m_iprulelist.InsertColumn(4,"方向",LVCFMT_LEFT,40,-1); m_iprulelist.InsertColumn(5,"对方IP",LVCFMT_LEFT,80,-1); m_iprulelist.InsertColumn(6,"对方端口",LVCFMT_LEFT,60,-1); m_iprulelist.InsertColumn(7,"本机端口",LVCFMT_LEFT,60,-1); m_iprulelist.InsertItem(0,""); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void IpRule::OnBeditip() { EditIPRule m_editDlg; POSITION pos ; int row; DialogText dText; CString address; ICMP_ITEM *icRule = new ICMP_ITEM(); //TU_ITEM *tuRule; pos = m_iprulelist.GetFirstSelectedItemPosition(); row = m_iprulelist.GetNextSelectedItem(pos); /*CString temp; temp.Format("%d",row); MessageBox(temp);*/ dText.name = m_iprulelist.GetItemText( row, 1 ); dText.action = m_iprulelist.GetItemText( row, 2 ); dText.direction = m_iprulelist.GetItemText( row, 4 ); if(m_iprulelist.GetItemText( row, 5 ) == "任意") { dText.destStartIp = 0; dText.destEndIp = 0; } else { address = m_iprulelist.GetItemText( row, 5 ); dText.destStartIp = 0x00000000;//not finished dText.destEndIp = 0x00000000; } if(address = m_iprulelist.GetItemText( row, 6 ) == "") { dText.destStartPort = ""; dText.destEndPort = ""; } else { } if(address = m_iprulelist.GetItemText( row, 7 ) == "") { dText.srcStartPort = ""; dText.srcEndPort = ""; } else { } GetDlgItemText(IDC_DESCRIPTION,dText.description); ///////////////////得到ICMP的详细信息 currRules->setPos(row+1); //置规则链表当前指针 if((dText.protocol=m_iprulelist.GetItemText( row, 3 ))=="ICMP") { currRules->getItem(icRule); CString temp; temp.Format("%d",icRule->code); dText.icmpCode = temp; temp.Format("%d",icRule->type); dText.icmpType = temp; } m_editDlg.dText = dText; //显示在eidtIpRule对话框里 if(m_editDlg.DoModal() == IDOK) { dText = m_editDlg.dText; //得到eidtIpRule对话框里的内容 //名称 m_iprulelist.SetItemText(row,1,dText.name); ////动作/////////////////////////// m_iprulelist.SetItemText(row,2,dText.action); //协议///////////////////////////////////// m_iprulelist.SetItemText(row,3,dText.protocol); //方向 m_iprulelist.SetItemText(row,4,dText.direction); //IP段////////////////////////////////////////////////// if(dText.destStartIp == 0 && dText.destEndIp == 0) m_iprulelist.SetItemText(row,5,"任意"); else { address.Format("%s-->%s",inet_ntoa(*(in_addr*)&(dText.destStartIp)), 作者: ministar 2005-6-25 23:05 回复此发言 -------------------------------------------------------------------------------- 2 防火墙代码 inet_ntoa(*(in_addr*)&(dText.destEndIp))); m_iprulelist.SetItemText(row,5,address); } ///端口//////////////////////// if(dText.protocol == "ICMP") m_iprulelist.SetItemText(row,6,""); else { if(dText.destStartPort == "" && dText.destEndPort == "") m_iprulelist.SetItemText(row,6,"任意"); else { address.Format("%s-->%s",dText.destStartPort,dText.destEndPort); m_iprulelist.SetItemText(row,6,address); } if(dText.srcStartPort == "" && dText.srcEndPort == "") m_iprulelist.SetItemText(row,7,"任意"); else { address.Format("%s-->%s",dText.srcStartPort,dText.srcEndPort); m_iprulelist.SetItemText(row,7,address); } } //描述/////////////////////////// SetDlgItemText(IDC_DESCRIPTION,dText.description); } } void IpRule::OnBaddip() { EditIPRule m_editDlg; int row; DialogText dText; CString address; row = m_iprulelist.GetItemCount(); row--; if(m_editDlg.DoModal() == IDOK) { dText = m_editDlg.dText; //得到eidtIpRule对话框里的内容 //名称 m_iprulelist.SetItemText(row,1,dText.name); ////动作/////////////////////////// m_iprulelist.SetItemText(row,2,dText.action); //协议///////////////////////////////////// m_iprulelist.SetItemText(row,3,dText.protocol); //方向 m_iprulelist.SetItemText(row,4,dText.direction); //IP段////////////////////////////////////////////////// if(dText.destStartIp == 0 && dText.destEndIp == 0) m_iprulelist.SetItemText(row,5,"任意"); else { address.Format("%s-->%s",inet_ntoa(*(in_addr*)&(dText.destStartIp)), inet_ntoa(*(in_addr*)&(dText.destEndIp))); m_iprulelist.SetItemText(row,5,address); } ///端口//////////////////////// if(dText.protocol == "ICMP") m_iprulelist.SetItemText(row,6,""); else { if(dText.destStartPort == "" && dText.destEndPort == "") m_iprulelist.SetItemText(row,6,"任意"); else { address.Format("%s-->%s",dText.destStartPort,dText.destEndPort); m_iprulelist.SetItemText(row,6,address); } if(dText.srcStartPort == "" && dText.srcEndPort == "") m_iprulelist.SetItemText(row,7,"任意"); else { address.Format("%s-->%s",dText.srcStartPort,dText.srcEndPort); m_iprulelist.SetItemText(row,7,address); } } //描述/////////////////////////// SetDlgItemText(IDC_DESCRIPTION,dText.description); } } HBRUSH IpRule::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here if(nCtlColor == (CTLCOLOR_DLG | CTLCOLOR_STATIC | CTLCOLOR_BTN)) { pDC->SetBkColor(RGB(242,246,250)); return m_hDLGBKBrush; } // TODO: Return a different brush if the default is not desired return hbr; } int IpRule::WriteDefaultRule() { int num = 0; if(rlFile.Open("rule\\rule.rl", CFile::modeReadWrite | CFile::typeBinary |CFile::shareExclusive) ==0 ) { MessageBox("can't open rule file"); return false; } int count = 7;//规则数 ICMP_ITEM rl[7]; 作者: ministar 2005-6-25 23:05 回复此发言 -------------------------------------------------------------------------------- 3 防火墙代码 rlFile.Write(&count,4); //rule 1; rl[0].num = 1; rl[0].use = 0; strcpy(rl[0].name,"允许自己用ping探测其他机器"); rl[0].Proto = 1; rl[0].destStartIp = inet_addr("0.0.0.0"); rl[0].destEndIp = inet_addr("0.0.0.0"); rl[0].type = 8; rl[0].code = 0; rl[0].direction = 2; rl[0].action = 1; strcpy(rl[0].description,""); //rule 2 rl[1].num = 2; rl[1].use = 0; strcpy(rl[1].name,"允许路由器返回“超时”的ICMP回应包"); rl[1].Proto = 1; rl[1].destStartIp = inet_addr("0.0.0.0"); rl[1].destEndIp = inet_addr("0.0.0.0"); rl[1].type = 11; rl[1].code = 0; rl[1].direction = 1; rl[1].action = 1; strcpy(rl[1].description,""); //rule 3 rl[2].num = 3; rl[2].use = 0; strcpy(rl[2].name,"允许路由器返回“无法到达”的ICMP回应包"); rl[2].Proto = 1; rl[2].destStartIp = inet_addr("0.0.0.0"); rl[2].destEndIp = inet_addr("0.0.0.0"); rl[2].type = 3; rl[2].code = 0; rl[2].direction = 1; rl[2].action = 1; strcpy(rl[2].description,""); //rule 4 rl[3].num = 4; rl[3].use = 0; strcpy(rl[3].name,"允许其他机器用ping探测"); rl[3].Proto = 1; rl[3].destStartIp = inet_addr("0.0.0.0"); rl[3].destEndIp = inet_addr("0.0.0.0"); rl[3].type = 0; rl[3].code = 0; rl[3].direction = 1; rl[3].action = 1; strcpy(rl[3].description,""); //rule 5 rl[4].num = 5; rl[4].use = 1; strcpy(rl[4].name,"禁止所有ICMP包"); rl[4].Proto = 1; rl[4].destStartIp = inet_addr("0.0.0.0"); rl[4].destEndIp = inet_addr("0.0.0.0"); rl[4].type = 0; rl[4].code = 0; rl[4].direction = 1; rl[4].action = 1; strcpy(rl[4].description,""); //rule 6 rl[5].num = 6; rl[5].use = 1; strcpy(rl[5].name,"禁止所有TCP包"); rl[5].Proto = 6; rl[5].destStartIp = inet_addr("0.0.0.0"); rl[5].destEndIp = inet_addr("0.0.0.0"); rl[5].type = 0; rl[5].code = 0; rl[5].direction = 1; rl[5].action = 1; strcpy(rl[5].description,""); //rule 7 rl[6].num = 6; rl[6].use = 1; strcpy(rl[6].name,"禁止所有UDP包"); rl[6].Proto = 17; rl[6].destStartIp = inet_addr("0.0.0.0"); rl[6].destEndIp = inet_addr("0.0.0.0"); rl[6].type = 0; rl[6].code = 0; rl[6].direction = 1; rl[6].action = 1; strcpy(rl[6].description,""); //写入 rlFile.Write(&rl,272*7); rlFile.Close(); return 0; } BOOL IpRule::WriteRule(CString fileName, TU_ITEM &rl) //返回值代表成功与否 { return true; } BOOL IpRule::WriteRule(CString fileName, ICMP_ITEM &rl) //返回值代表成功与否 { return true; } int IpRule::ReadRule(CString fileName) { int count,i; BYTE protocol; pos =0; if(rlFile.Open(fileName, CFile::modeReadWrite | CFile::typeBinary |CFile::shareExclusive) ==0 ) { MessageBox("can't open rule file"); return false; } ICMP_ITEM *icItem; TU_ITEM *tuItem; char buffer[272]; rlFile.SeekToBegin(); //到文件头 //CString t; rlFile.Read(&count,4); //读取规则数目 pRule = (passRule *)malloc(count*sizeof(passRule)); //分配buffer //t.Format("count:%d",a); //AfxMessageBox(t); //读入规则链表并初始化passRule//////////////////////////////////////// currRules = new CRule(); 作者: ministar 2005-6-25 23:05 回复此发言 -------------------------------------------------------------------------------- 4 防火墙代码 for(i=0;iuse) //存到下传规则buffer中 { pRule[i].Proto = icItem->Proto; pRule[i].destStartIp = icItem->destStartIp; pRule[i].destEndIp = icItem->destEndIp; pRule[i].srcStartPort = 0; pRule[i].srcEndPort = 0; pRule[i].destStartPort = 0; pRule[i].destEndPort = 0; } currRules->append(icItem); // } /* else { rlFile.Seek(-5,CFile::current); rlFile.Read(buffer,280); //tuItem = (TU_ITEM *)buffer; m_iprulelist.InsertItem(pos,""); //icItem = (ICMP_ITEM *)buffer; //m_iprulelist.SetItemText(pos,1,tuItem->name); AddToList(tuItem); if(tuItem->use) //存到下传规则buffer中 { pRule[i].Proto = tuItem->Proto; pRule[i].destStartIp = tuItem->destStartIp; pRule[i].destEndIp = tuItem->destEndIp; pRule[i].srcStartPort = tuItem->srcStartPort; pRule[i].srcEndPort = tuItem->srcEndPort; pRule[i].destStartPort = tuItem->destStartPort; pRule[i].destEndPort = tuItem->destEndPort; } currRules->append(tuItem); }*/ /*CString temp; temp.Format("%d",pRule[i].destStartIp); AfxMessageBox(temp);*/ } //MessageBox(t); rlFile.Close(); return 0; } void IpRule::AddToList(ICMP_ITEM *item) { CString address; ///IP,PORT; m_iprulelist.InsertItem(pos,""); m_iprulelist.SetItemText(pos,1,item->name); //是否启用///////////////////////////////// if(item->use) ListView_SetCheckState(m_iprulelist.m_hWnd,pos,true); ////动作/////////////////////////// if(item->action == 1) m_iprulelist.SetItemText(pos,2,"放行"); else m_iprulelist.SetItemText(pos,2,"禁行"); //协议///////////////////////////////////// if(item->Proto == 1) m_iprulelist.SetItemText(pos,3,"ICMP"); else if(item->Proto == 6) m_iprulelist.SetItemText(pos,3,"TCP"); else if(item->Proto == 17) m_iprulelist.SetItemText(pos,3,"UDP"); //方向/////////////////////////////////////////////// if(item->direction == 1) m_iprulelist.SetItemText(pos,4,"传出"); else if(item->direction == 0) m_iprulelist.SetItemText(pos,4,"传入"); else m_iprulelist.SetItemText(pos,4,"出入"); //IP段////////////////////////////////////////////////// if(item->destStartIp == 0) m_iprulelist.SetItemText(pos,5,"任意"); else { address.Format("%s-->%s",inet_ntoa(*(in_addr*)&(item->destStartIp)), inet_ntoa(*(in_addr*)&(item->destEndIp))); m_iprulelist.SetItemText(pos,5,address); } //描述/////////////////////////// SetDlgItemText(IDC_DESCRIPTION,item->description); pos++; } void IpRule::AddToList(TU_ITEM *item) { CString address; ///IP,PORT; m_iprulelist.InsertItem(pos,""); m_iprulelist.SetItemText(pos,1,item->name); //是否启用///////////////////////////////// if(item->use) ListView_SetCheckState(m_iprulelist.m_hWnd,pos,true); ////动作/////////////////////////// if(item->action == 1) m_iprulelist.SetItemText(pos,2,"放行"); else m_iprulelist.SetItemText(pos,2,"禁行"); //协议///////////////////////////////////// if(item->Proto == 1) m_iprulelist.SetItemText(pos,3,"ICMP"); else if(item->Proto == 6) m_iprulelist.SetItemText(pos,3,"TCP"); else if(item->Proto == 17) m_iprulelist.SetItemText(pos,3,"UDP"); //方向/////////////////////////////////////////////// if(item->direction == 1) m_iprulelist.SetItemText(pos,4,"传出"); else if(item->direction == 0) m_iprulelist.SetItemText(pos,4,"传入"); else m_iprulelist.SetItemText(pos,4,"出入"); //IP段////////////////////////////////////////////////// if(item->destStartIp == 0) m_iprulelist.SetItemText(pos,5,"任意"); else { address.Format("%s-->%s",inet_ntoa(*(in_addr*)&(item->destStartIp)), inet_ntoa(*(in_addr*)&(item->destEndIp))); m_iprulelist.SetItemText(pos,5,address); } //端口//////////////////////////////////////////////// if(item->destEndPort == 0) m_iprulelist.SetItemText(pos,6,"任意"); else { address.Format("%d-->%d",item->destStartPort,item->destEndPort); m_iprulelist.SetItemText(pos,6,address); } if(item->srcEndPort == 0) m_iprulelist.SetItemText(pos,7,"任意"); else { address.Format("%d-->%d",item->srcStartPort,item->srcEndPort); m_iprulelist.SetItemText(pos,7,address); } //描述/////////////////////////// SetDlgItemText(IDC_DESCRIPTION,item->description); pos++; }
/
本文档为【防火墙代码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
热门搜索

历史搜索

    清空历史搜索