Thursday, January 28, 2016

TryGet Valid IP Address



/// <summary>
              /// Tries to get a valid IP address
              /// </summary>
              /// <param name="address"></param>
              /// <returns>Returns false if an address is local or invalid</returns>
              public static bool TryGetValidPublicIpAddress(string ip, out IPAddress address)
              {
            //bail out if input was not supplied
                  if (string.IsNullOrEmpty(ip))
                  {
                      address = null;
                      return false;
                  }

            //ensure that string is a valid IP address
                  IPAddress validAddress;
                  if (!IPAddress.TryParse(ip, out validAddress))
                  {
                      address = null;
                      return false;
                  }

            //ensure that address is public, otherwise will throw an exception for local IP addresses
                  string localIpReges = Sitecore.Configuration.Settings.GetSetting(LocalIpRegex, DefaultLocalIpRegex);

                  if (Regex.IsMatch(ip, localIpReges))
                  {
                address = null;
                return false;
                  }

                  address = validAddress;
                  return true;

        }

No comments:

Post a Comment