ip - библиотека OneScript для строгой работы с IPv4, IPv6, CIDR-префиксами и числовыми
IP-конечными точками. Объекты библиотеки неизменяемы, разбор не выполняет DNS-запросов и других
сетевых операций.
- OneScript 2.0.0 или новее;
- OPM для установки зависимостей и сборки пакета.
Установите пакет из OPM:
opm install ipПосле установки подключите пакет в сценарии:
#Использовать ipДля проекта с файлом packagedef добавьте зависимость:
Описание.ЗависитОт("ip");#Использовать ip
Адрес = Новый IPАдрес("2001:0DB8:0:0:0:0:0:1");
Сообщить(Адрес.ВСтроку());Результат:
2001:db8::1
#Использовать ip
Адрес = Новый IPАдрес("192.168.1.42");
Сеть = Адрес.СоздатьПрефикс(24);
Если Сеть.Содержит(Новый IPАдрес("192.168.1.100")) Тогда
Сообщить("В одной сети");
КонецЕсли;IPПрефикс хранит только канонический базовый адрес. Поэтому строка
192.168.1.42/24 отклоняется, а Адрес.СоздатьПрефикс(24) обнуляет биты узла и возвращает
192.168.1.0/24.
#Использовать ip
Адрес = Новый IPАдрес("fe80::1%eth0");
Сообщить(Адрес.Зона());Результат:
eth0
Зона хранится буквально и имеет локальный смысл. Она допустима для fe80::/10 и групповых IPv6-адресов
с неглобальной областью. Библиотека не преобразует её в индекс интерфейса и не выполняет декодирование зоны
из синтаксиса URI.
#Использовать 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 .