Esempio n. 1
0
        public override void OnRecoveryLoad(XmlElement root)
        {
            XmlElement nodeDhcp = Utils.XmlGetFirstElementByTagName(root, "DhcpSwitch");

            if (nodeDhcp != null)
            {
                foreach (XmlElement nodeEntry in nodeDhcp.ChildNodes)
                {
                    NetworkManagerDhcpEntry entry = new NetworkManagerDhcpEntry();
                    entry.ReadXML(nodeEntry);
                    m_listOldDhcp.Add(entry);
                }
            }

            XmlElement nodeDns = Utils.XmlGetFirstElementByTagName(root, "DnsSwitch");

            if (nodeDns != null)
            {
                foreach (XmlElement nodeEntry in nodeDns.ChildNodes)
                {
                    NetworkManagerDnsEntry entry = new NetworkManagerDnsEntry();
                    entry.ReadXML(nodeEntry);
                    m_listOldDns.Add(entry);
                }
            }

            if (Utils.XmlExistsAttribute(root, "IpV6"))
            {
                m_oldIpV6 = Conversions.ToUInt32(Utils.XmlGetAttributeInt64(root, "IpV6", 0), 0);
            }

            SwitchToStaticRestore();

            base.OnRecoveryLoad(root);
        }
Esempio n. 2
0
        public override void OnRecoveryLoad(XmlElement root)
        {
            XmlElement nodeDhcp = Utils.XmlGetFirstElementByTagName(root, "DhcpSwitch");
            if (nodeDhcp != null)
            {
                foreach (XmlElement nodeEntry in nodeDhcp.ChildNodes)
                {
                    NetworkManagerDhcpEntry entry = new NetworkManagerDhcpEntry();
                    entry.ReadXML(nodeEntry);
                    m_listOldDhcp.Add(entry);
                }
            }

            XmlElement nodeDns = Utils.XmlGetFirstElementByTagName(root, "DnsSwitch");
            if (nodeDns != null)
            {
                foreach (XmlElement nodeEntry in nodeDns.ChildNodes)
                {
                    NetworkManagerDnsEntry entry = new NetworkManagerDnsEntry();
                    entry.ReadXML(nodeEntry);
                    m_listOldDns.Add(entry);
                }
            }

            if (Utils.XmlExistsAttribute(root, "IpV6"))
            {
                m_oldIpV6 = Conversions.ToUInt32(Utils.XmlGetAttributeInt64(root, "IpV6", 0), 0);
            }

            SwitchToStaticRestore();

            base.OnRecoveryLoad(root);
        }
Esempio n. 3
0
        /*
         * private void WaitUntilEnabled(ManagementObject objMOC)
         * {
         *      NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
         *      foreach (NetworkInterface adapter in interfaces)
         *      {
         *              if (objMOC["SettingID"] as string == adapter.Id)
         *              {
         *                      OperationalStatus status = adapter.OperationalStatus;
         *                      if (status == OperationalStatus.Up)
         *                      {
         *                              // TODO: It's always up...
         *                      }
         *              }
         *      }
         * }
         */

        private bool SwitchToStaticDo()
        {
            try
            {
                ManagementClass            objMC  = new ManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection objMOC = objMC.GetInstances();

                foreach (ManagementObject objMO in objMOC)
                {
                    if (!((bool)objMO["IPEnabled"]))
                    {
                        continue;
                    }
                    if (!((bool)objMO["DHCPEnabled"]))
                    {
                        continue;
                    }

                    NetworkManagerDhcpEntry entry = new NetworkManagerDhcpEntry();

                    entry.Guid        = objMO["SettingID"] as string;
                    entry.Description = objMO["Description"] as string;
                    entry.IpAddress   = (objMO["IPAddress"] as string[]);
                    entry.SubnetMask  = (objMO["IPSubnet"] as string[]);
                    entry.Dns         = objMO["DNSServerSearchOrder"] as string[];
                    entry.Gateway     = objMO["DefaultIPGateway"] as string[];

                    entry.AutoDns = ((Registry.GetValue("HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\" + entry.Guid, "NameServer", "") as string) == "");

                    Engine.Instance.Logs.Log(LogType.Verbose, Messages.Format(Messages.NetworkAdapterDhcpDone, entry.Description));

                    ManagementBaseObject objEnableStatic = objMO.GetMethodParameters("EnableStatic");
                    //objNewIP["IPAddress"] = new string[] { ipAddress };
                    //objNewIP["SubnetMask"] = new string[] { subnetMask };
                    objEnableStatic["IPAddress"]  = new string[] { entry.IpAddress[0] };
                    objEnableStatic["SubnetMask"] = new string[] { entry.SubnetMask[0] };
                    objMO.InvokeMethod("EnableStatic", objEnableStatic, null);

                    ManagementBaseObject objSetDNSServerSearchOrder = objMO.GetMethodParameters("SetDNSServerSearchOrder");
                    objSetDNSServerSearchOrder["DNSServerSearchOrder"] = entry.Dns;
                    objMO.InvokeMethod("SetDNSServerSearchOrder", objSetDNSServerSearchOrder, null);

                    ManagementBaseObject objSetGateways = objMO.GetMethodParameters("SetGateways");
                    objSetGateways["DefaultIPGateway"] = new string[] { entry.Gateway[0] };
                    objMO.InvokeMethod("SetGateways", objSetGateways, null);

                    m_listOldDhcp.Add(entry);

                    // TOOPTIMIZE: Need to wait until the interface return UP...
                    //WaitUntilEnabled(objMO); // Checking the OperationalStatus changes are not effective.
                    System.Threading.Thread.Sleep(3000);
                }

                return(true);
            }
            catch (Exception e)
            {
                Engine.Instance.Logs.Log(e);
                return(false);
            }
        }
Esempio n. 4
0
        /*
        private void WaitUntilEnabled(ManagementObject objMOC)
        {
            NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
            foreach (NetworkInterface adapter in interfaces)
            {
                if (objMOC["SettingID"] as string == adapter.Id)
                {
                    OperationalStatus status = adapter.OperationalStatus;
                    if (status == OperationalStatus.Up)
                    {
                        // TODO: It's always up...
                    }
                }
            }
        }
        */
        private bool SwitchToStaticDo()
        {
            try
            {
                ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection objMOC = objMC.GetInstances();

                foreach (ManagementObject objMO in objMOC)
                {
                    if (!((bool)objMO["IPEnabled"]))
                        continue;
                    if (!((bool)objMO["DHCPEnabled"]))
                        continue;

                    NetworkManagerDhcpEntry entry = new NetworkManagerDhcpEntry();

                    entry.Guid = objMO["SettingID"] as string;
                    entry.Description = objMO["Description"] as string;
                    entry.IpAddress = (objMO["IPAddress"] as string[]);
                    entry.SubnetMask = (objMO["IPSubnet"] as string[]);
                    entry.Dns = objMO["DNSServerSearchOrder"] as string[];
                    entry.Gateway = objMO["DefaultIPGateway"] as string[];

                    entry.AutoDns = ((Registry.GetValue("HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\" + entry.Guid, "NameServer", "") as string) == "");

                    Engine.Instance.Logs.Log(LogType.Verbose, MessagesFormatter.Format(Messages.NetworkAdapterDhcpDone, entry.Description));

                    ManagementBaseObject objEnableStatic = objMO.GetMethodParameters("EnableStatic");
                    //objNewIP["IPAddress"] = new string[] { ipAddress };
                    //objNewIP["SubnetMask"] = new string[] { subnetMask };
                    objEnableStatic["IPAddress"] = new string[] { entry.IpAddress[0] };
                    objEnableStatic["SubnetMask"] = new string[] { entry.SubnetMask[0] };
                    objMO.InvokeMethod("EnableStatic", objEnableStatic, null);

                    ManagementBaseObject objSetDNSServerSearchOrder = objMO.GetMethodParameters("SetDNSServerSearchOrder");
                    objSetDNSServerSearchOrder["DNSServerSearchOrder"] = entry.Dns;
                    objMO.InvokeMethod("SetDNSServerSearchOrder", objSetDNSServerSearchOrder, null);

                    ManagementBaseObject objSetGateways = objMO.GetMethodParameters("SetGateways");
                    objSetGateways["DefaultIPGateway"] = new string[] { entry.Gateway[0] };
                    objMO.InvokeMethod("SetGateways", objSetGateways, null);

                    m_listOldDhcp.Add(entry);

                    // TOOPTIMIZE: Need to wait until the interface return UP...
                    //WaitUntilEnabled(objMO); // Checking the OperationalStatus changes are not effective.
                    System.Threading.Thread.Sleep(3000);
                }

                return true;
            }
            catch (Exception e)
            {
                Engine.Instance.Logs.Log(e);
                return false;
            }
        }