private void CNCdeleteclick(object sender, MouseButtonEventArgs e) { ICNCRulesManage fw = new CNCRulesManage(); string dev_ip = (from devices in StaticGlobal.fwdev_list where devices.getDev_MAC() == StaticGlobal.firewallmac select devices).ToList <FWDeviceForm>()[0].getProtecDevIP_list()[0]; int connlimit = (CNCdataGrid.SelectedItem as CNCRuleDataTable).connlimit; string srcIP = (CNCdataGrid.SelectedItem as CNCRuleDataTable).srcIP; string dstIP = (CNCdataGrid.SelectedItem as CNCRuleDataTable).dstIP; string sport = (CNCdataGrid.SelectedItem as CNCRuleDataTable).sport; string dport = (CNCdataGrid.SelectedItem as CNCRuleDataTable).dport; bool log = (CNCdataGrid.SelectedItem as CNCRuleDataTable).log; if (fw.DelCNCRules(dev_ip, log, connlimit, srcIP, dstIP, sport, dport)) { StaticGlobal.FireWalldevices[StaticGlobal.firewallindex].getCNCRule_list().Remove((CNCdataGrid.SelectedItem as CNCRuleDataTable)); UserMessageBox.Show("提示", "规则删除成功!"); } else { UserMessageBox.Show("提示", "规则删除失败,请检查设备连接!"); } }
public void CNCApplying() { Dispatcher.Invoke(new Action(() => { NewCNCRulebutton.IsEnabled = false; CNCApplybutton.IsEnabled = false; CNCdataGrid.IsEnabled = false; Closebutton.IsEnabled = false; })); //找出需要删除的规则 var deleteRules = StaticGlobal.CNColdrules.Where(deleteRule => !StaticGlobal.FireWalldevices[StaticGlobal.firewallindex].getCNCRule_list().Contains(deleteRule)).ToList(); //找出需要增加的规则 var addRules = StaticGlobal.FireWalldevices[StaticGlobal.firewallindex].getCNCRule_list().Where(addRule => !StaticGlobal.CNColdrules.Contains(addRule)).ToList(); bool CNCApplyFlag = true; string dev_ip = (from devices in StaticGlobal.fwdev_list where devices.getDev_MAC() == StaticGlobal.firewallmac select devices).ToList <FWDeviceForm>()[0].getProtecDevIP_list()[0]; ICNCRulesManage cncrule = new CNCRulesManage(); //添加规则 for (int i = 0; i < addRules.Count(); i++) { int connlimit = addRules[i].connlimit; string srcIP = addRules[i].srcIP; string dstIP = addRules[i].dstIP; string sport = addRules[i].sport; string dport = addRules[i].dport; bool log = addRules[i].log; if (cncrule.AddCNCRules(dev_ip, log, connlimit, srcIP, dstIP, sport, dport)) { CNCApplyFlag = true; } else { CNCApplyFlag = false; } } //删除规则 for (int j = 0; j < deleteRules.Count(); j++) { int connlimit = deleteRules[j].connlimit; string srcIP = deleteRules[j].srcIP; string dstIP = deleteRules[j].dstIP; string sport = deleteRules[j].sport; string dport = deleteRules[j].dport; bool log = deleteRules[j].log; if (cncrule.DelCNCRules(dev_ip, log, connlimit, srcIP, dstIP, sport, dport)) { CNCApplyFlag = true; } else { CNCApplyFlag = false; } } Dispatcher.Invoke(new Action(() => { if (CNCApplyFlag) { UserMessageBox.Show("提示", "所有规则已成功应用!"); } else { UserMessageBox.Show("提示", "部分规则未成功应用,请检查设备之间的连接!"); } this.Close(); } )); CNCApplyThread.Abort(); }