Exemple #1
0
        private void PRTdeleteclick(object sender, MouseButtonEventArgs e)
        {
            IPRTRulesManage PRTrule = new PRTRulesManage();
            string          devIP   = (from devices in StaticGlobal.fwdev_list
                                       where devices.getDev_MAC() == StaticGlobal.firewallmac
                                       select devices).ToList <FWDeviceForm>()[0].getProtecDevIP_list()[0];
            string route_type = (PRTdataGrid.SelectedItem as PRTRuleDataTable).route_type.ToString();
            string ETH        = (PRTdataGrid.SelectedItem as PRTRuleDataTable).ETH.ToString();
            string Gateway    = (PRTdataGrid.SelectedItem as PRTRuleDataTable).Gateway.ToString();
            bool   log        = (PRTdataGrid.SelectedItem as PRTRuleDataTable).log;

            switch (route_type)
            {
            case "默认路由":
                if (PRTrule.DefaultRouteConfig(devIP, false, ETH, Gateway))
                {
                    StaticGlobal.FireWalldevices[StaticGlobal.firewallindex].getFireWallPRTRule_list().Remove((PRTdataGrid.SelectedItem as PRTRuleDataTable));
                    UserMessageBox.Show("提示", "规则删除成功!");
                }
                else
                {
                    UserMessageBox.Show("提示", "规则删除失败,请检查设备连接!");
                }
                break;

            case "主机路由":
                string host_IP = (PRTdataGrid.SelectedItem as PRTRuleDataTable).host_IP.ToString();
                if (PRTrule.HostRouteConfig(devIP, false, host_IP, ETH, Gateway))
                {
                    StaticGlobal.FireWalldevices[StaticGlobal.firewallindex].getFireWallPRTRule_list().Remove((PRTdataGrid.SelectedItem as PRTRuleDataTable));
                    UserMessageBox.Show("提示", "规则删除成功!");
                }
                else
                {
                    UserMessageBox.Show("提示", "规则删除失败,请检查设备连接!");
                }
                break;

            case "网络路由":
                string dstIP   = (PRTdataGrid.SelectedItem as PRTRuleDataTable).dstIP.ToString();
                string netmask = (PRTdataGrid.SelectedItem as PRTRuleDataTable).netmask.ToString();
                if (PRTrule.NetRouteConfig(devIP, false, dstIP, netmask, ETH, Gateway))
                {
                    StaticGlobal.FireWalldevices[StaticGlobal.firewallindex].getFireWallPRTRule_list().Remove((PRTdataGrid.SelectedItem as PRTRuleDataTable));
                    UserMessageBox.Show("提示", "规则删除成功!");
                }
                else
                {
                    UserMessageBox.Show("提示", "规则删除失败,请检查设备连接!");
                }
                break;
            }
        }
Exemple #2
0
        public void PRTApplying()
        {
            Dispatcher.Invoke(new Action(() =>
            {
                NewPRT.IsEnabled         = false;
                PRTApplybutton.IsEnabled = false;
                PRTdataGrid.IsEnabled    = false;
                Closebutton.IsEnabled    = false;
            }));
            //找出需要删除的规则
            var deleteRules = StaticGlobal.PRToldrules.Where(deleteRule => !StaticGlobal.FireWalldevices[StaticGlobal.firewallindex].getFireWallPRTRule_list().Contains(deleteRule)).ToList();

            //找出需要增加的规则
            var    addRules     = StaticGlobal.FireWalldevices[StaticGlobal.firewallindex].getFireWallPRTRule_list().Where(addRule => !StaticGlobal.PRToldrules.Contains(addRule)).ToList();
            bool   PRTApplyFlag = true;
            string dev_ip       = (from devices in StaticGlobal.fwdev_list
                                   where devices.getDev_MAC() == StaticGlobal.firewallmac
                                   select devices).ToList <FWDeviceForm>()[0].getProtecDevIP_list()[0];
            IPRTRulesManage prtrule = new PRTRulesManage();

            //增加规则
            for (int i = 0; i < addRules.Count(); i++)
            {
                string route_type = addRules[i].route_type;
                string ETH        = addRules[i].ETH;
                string Gateway    = addRules[i].Gateway;
                bool   log        = addRules[i].log;
                switch (route_type)
                {
                case "默认路由":
                    if (prtrule.DefaultRouteConfig(dev_ip, true, ETH, Gateway))
                    {
                        PRTApplyFlag = true;
                    }
                    else
                    {
                        PRTApplyFlag = false;
                    }
                    break;

                case "主机路由":
                    string host_IP = addRules[i].host_IP.ToString();
                    if (prtrule.HostRouteConfig(dev_ip, true, host_IP, ETH, Gateway))
                    {
                        PRTApplyFlag = true;
                    }
                    else
                    {
                        PRTApplyFlag = false;
                    }
                    break;

                case "网络路由":
                    string dstIP   = addRules[i].dstIP.ToString();
                    string netmask = addRules[i].netmask;
                    if (prtrule.NetRouteConfig(dev_ip, true, dstIP, netmask, ETH, Gateway))
                    {
                        PRTApplyFlag = true;
                    }
                    else
                    {
                        PRTApplyFlag = false;
                    }
                    break;
                }
            }
            //删除规则
            for (int j = 0; j < deleteRules.Count(); j++)
            {
                string route_type = deleteRules[j].route_type;
                string ETH        = deleteRules[j].ETH;
                string Gateway    = deleteRules[j].Gateway;
                bool   log        = deleteRules[j].log;
                switch (route_type)
                {
                case "默认路由":
                    if (prtrule.DefaultRouteConfig(dev_ip, false, ETH, Gateway))
                    {
                        PRTApplyFlag = true;
                    }
                    else
                    {
                        PRTApplyFlag = false;
                    }
                    break;

                case "主机路由":
                    string host_IP = deleteRules[j].host_IP.ToString();
                    if (prtrule.HostRouteConfig(dev_ip, false, host_IP, ETH, Gateway))
                    {
                        PRTApplyFlag = true;
                    }
                    else
                    {
                        PRTApplyFlag = false;
                    }
                    break;

                case "网络路由":
                    string dstIP   = deleteRules[j].dstIP.ToString();
                    string netmask = deleteRules[j].netmask;
                    if (prtrule.NetRouteConfig(dev_ip, false, dstIP, netmask, ETH, Gateway))
                    {
                        PRTApplyFlag = true;
                    }
                    else
                    {
                        PRTApplyFlag = false;
                    }
                    break;
                }
            }
            Dispatcher.Invoke(new Action(() =>
            {
                if (PRTApplyFlag)
                {
                    UserMessageBox.Show("提示", "所有规则已成功应用!");
                }
                else
                {
                    UserMessageBox.Show("提示", "部分规则未成功应用,请检查设备之间的连接!");
                }
                this.Close();
            }
                                         ));
            PRTApplyThread.Abort();
        }