ошибка при проверке проверки isPublicIp для IP в scala - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь написать функцию в scala, которая может определить, является ли IP частным IP, ложным для всех остальных. Не могу найти хорошую библиотеку для этого, поэтому я вручную проверяю различные диапазоны IP-адресов, как показано ниже:

def isPrivateIp(ip: String) = {
    val privateIPs = List ((2130706432L, 4278190080L), // [127.0.0.0 -> 255.0.0.0]
                            (3232235520L, 4294901760L), // [192.168.0.0 -> 255.255.0.0]
                            (2886729728L, 4293918720L), // [172.16.0.0 -> 255.240.0.0]
                            (167772160L, 4278190080L), // [10.0.0.0 -> 255.0.0.0]
                            (1681915904L, 1686110207L)) // [100.64.0.0 -> 100.127.255.255]
  var res = false
  val longIP = IPv4ToLong (ip)
    for((a, b) <- privateIPs) {
      if ((longIP & b) == a) {
        res = true
      }
    }
  res
}

Этот метод подходит для всех 4-х первых 4-х диапазонов IP-адресов, определенных перечислите «privateIPs», но, похоже, он не работает для 5-го диапазона 100. IP-адреса, где вместо пометки как true, помечаются как false.

Может кто-нибудь помочь мне с этой ошибкой здесь? Есть ли лучшая библиотека для scala обнаружения общедоступных c IP-адресов?

Спасибо.

...