public static bool IsLocalMachine()

in Managed/Util/WebUtility.cs [14:63]


        public static bool IsLocalMachine(string serverName, bool useDns)
        {
            if (String.Equals(serverName, Environment.MachineName, StringComparison.CurrentCultureIgnoreCase) ||
                String.Equals(serverName, "localhost", StringComparison.OrdinalIgnoreCase) ||
                String.Equals(serverName, "127.0.0.1") ||
                String.Equals(serverName, "::1"))
            {
                return true;
            }

            if (useDns)
            {
                try
                {
                    ArrayList serverAddressesList = new ArrayList();
                    ArrayList currentMachineAddressesList = new ArrayList();

                    IPAddress ownAddress = IPAddress.Parse("127.0.0.1");

                    // All the IP addresses of the hostname specified by the user
                    IPAddress[] serverAddress = Dns.GetHostAddresses(serverName);
                    serverAddressesList.AddRange(serverAddress);

                    /// All the IP addresses of the current machine
                    IPAddress[] currentMachineAddress = Dns.GetHostAddresses(Environment.MachineName);
                    currentMachineAddressesList.AddRange(currentMachineAddress);

                    // The address 127.0.0.1 also refers to the current machine
                    currentMachineAddressesList.Add(ownAddress);

                    // If any of the addresses for the current machine is the same
                    // as the address for the hostname specified by the user
                    // then use a local connection
                    foreach (IPAddress address in currentMachineAddressesList)
                    {
                        if (serverAddressesList.Contains(address))
                        {
                            return true;
                        }
                    }
                }
                catch
                {
                    // If the Dns class throws an exception the host propbably does not 
                    // exist so we return false
                }
            }

            return false;
        }