Example #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);
        }
Example #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);
                    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);
                    ListOldDns.Add(entry);
                }
            }

            SwitchToStaticRestore();
            DnsForceRestore();
        }
Example #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.Log(Engine.LogType.Info, 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] };
                    ManagementBaseObject objEnableStaticMethod = objMO.InvokeMethod("EnableStatic", objEnableStatic, null);

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

                    ManagementBaseObject objSetGateways = objMO.GetMethodParameters("SetGateways");
                    objSetGateways["DefaultIPGateway"] = new string[] { entry.Gateway[0] };
                    ManagementBaseObject objSetGatewaysMethod = 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.Log(e);
                return(false);
            }
        }
Example #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.Log(Engine.LogType.Info, 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] };
					ManagementBaseObject objEnableStaticMethod = objMO.InvokeMethod("EnableStatic", objEnableStatic, null);

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

					ManagementBaseObject objSetGateways = objMO.GetMethodParameters("SetGateways");
					objSetGateways["DefaultIPGateway"] = new string[] { entry.Gateway[0] };
					ManagementBaseObject objSetGatewaysMethod = 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.Log(e);
				return false;
			}
		}
Example #5
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);			
		}