1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/joymufeng-cn-ip-recognizer

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Описание

Этот проект включает в себя утилитный класс CNIPRecognizer, который используется для проверки, является ли определённый IP адресом внутренним для Китая. Принцип проверки очень прост: если данный IP находится в открытом сегменте адресов apnic для КНР, то считается, что это внутренний IP адрес. Пример кода:

System.out.println("8.8.8.8: " + CNIPRecognizer.isCNIP("8.8.8.8"));
System.out.println("114.114.114.114: " + CNIPRecognizer.isCNIP("114.114.114.114"));

Как обновлять сегменты адресов apnic?

Для генерации соответствующего Java кода можно использовать следующий Scala код, а затем заменить сгенерированный код в соответствующих частях класса CNIPRecognizer:

Source.fromFile("D:/delegated-apnic-latest", "utf-8").getLines()
  .filter(_.startsWith("apnic|CN|ipv4|"))
  .map(_.split("\\|")).filter(_.length == 7)
  .map(arr => (IPUtil.ipToLong(arr(3)), arr(4).toLong))
  .toList.sortBy(_._1)
  .foldLeft(List.empty[(Long, Long)]){ (list, t) =>
    list match {
      case head :: tail =>
        if(head._1 + head._2 == t._1){ head.copy(_2 = head._2 + t._2) :: tail } else { t :: list }
      case Nil =>
        t :: Nil
    }
  }.reverse.zipWithIndex.foreach{ case (t, i) =>{
  if(i % 1000 == 0){
    if(i > 0){
      println("}")
    }
    println(s"private static void init${i/1000}(List<CNRecord> list){")
  }
  println(s"list.add(new CNRecord(${t._1}L, ${t._2}));")
}}
println("}")

Чтобы уменьшить количество строк сгенерированного кода, были объединены исходные сегменты адресов apnic. До объединения было 7637 записей, после — 3365.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Согласно открытому CN-адресу диапазона APNIC, определите, является ли определённый IP-адрес внутренним IP-адресом. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/joymufeng-cn-ip-recognizer.git
git@api.gitlife.ru:oschina-mirror/joymufeng-cn-ip-recognizer.git
oschina-mirror
joymufeng-cn-ip-recognizer
joymufeng-cn-ip-recognizer
master