Skip to content
 
 

Latest commit

 

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ip

Release Тестирование Used by

ip - библиотека OneScript для строгой работы с IPv4, IPv6, CIDR-префиксами и числовыми IP-конечными точками. Объекты библиотеки неизменяемы, разбор не выполняет DNS-запросов и других сетевых операций.

Требования

  • OneScript 2.0.0 или новее;
  • OPM для установки зависимостей и сборки пакета.

Установка

Установите пакет из OPM:

opm install ip

После установки подключите пакет в сценарии:

#Использовать ip

Для проекта с файлом packagedef добавьте зависимость:

Описание.ЗависитОт("ip");

IP-адрес

#Использовать ip

Адрес = Новый IPАдрес("2001:0DB8:0:0:0:0:0:1");

Сообщить(Адрес.ВСтроку());

Результат:

2001:db8::1

CIDR-префикс

#Использовать ip

Адрес = Новый IPАдрес("192.168.1.42");

Сеть = Адрес.СоздатьПрефикс(24);

Если Сеть.Содержит(Новый IPАдрес("192.168.1.100")) Тогда
    Сообщить("В одной сети");
КонецЕсли;

IPПрефикс хранит только канонический базовый адрес. Поэтому строка 192.168.1.42/24 отклоняется, а Адрес.СоздатьПрефикс(24) обнуляет биты узла и возвращает 192.168.1.0/24.

Зона IPv6

#Использовать ip

Адрес = Новый IPАдрес("fe80::1%eth0");

Сообщить(Адрес.Зона());

Результат:

eth0

Зона хранится буквально и имеет локальный смысл. Она допустима для fe80::/10 и групповых IPv6-адресов с неглобальной областью. Библиотека не преобразует её в индекс интерфейса и не выполняет декодирование зоны из синтаксиса URI.

IP-конечная точка

#Использовать ip

Адрес = Новый IPАдрес("2001:db8::1");

КонечнаяТочка = Новый IPКонечнаяТочка(Адрес, 443);

Сообщить(КонечнаяТочка.ВСтроку());

Результат:

[2001:db8::1]:443

Конечная точка содержит только числовой IP-адрес и порт от 0 до 65535. Имена узлов, DNS-разрешение и сокеты в библиотеку не входят.

Безопасный разбор

Для данных, корректность которых заранее неизвестна, используйте модуль РазборIP:

#Использовать ip

Ошибка = Неопределено;
Адрес = РазборIP.ПопытатьсяРазобратьАдрес("192.0.2.1", Ошибка);

Если Адрес = Неопределено Тогда
	Если ДиагностикаОшибок.КодОшибки(Ошибка) = КодыОшибокIP.НедопустимыйIPv4() Тогда
		Сообщить("Недопустимый IPv4 адрес");
	Иначе
		Сообщить(ПодробноеПредставлениеОшибки(Ошибка));
	КонецЕсли;
Иначе
	Сообщить(Адрес.ВСтроку());
КонецЕсли;

Параметр Ошибка необязателен и при передаче изменяется по ссылке. Синтаксическая или предметная ошибка разбора возвращает Неопределено; при успехе Ошибка очищается. Неверный тип входного значения остаётся программной ошибкой и выбрасывает исключение.

Документация

Разработка

Установить зависимости для разработки:

opm install -l --dev

Запустить тесты:

oneunit execute --recursive

Собрать пакет:

opm build .

About

Библиотека OneScript для работы с IPv4/IPv6-адресами, CIDR-префиксами и парами IP-адрес/порт

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages