Spec-Zone.ru › Hammerspoon

hs.network.reachability

Этот подмодуль можно использовать для определения доступности целевого хоста. Дистанционный хост считается доступным, когда пакет данных, отправленный приложением в сетевой стек, может покинуть локальное устройство. Доступность не гарантирует, что пакет данных фактически будет получен хостом.

Важно помнить, что этот модуль работает, определяя, есть ли у компьютера маршрут для сетевого трафика, направленного к определенному пункту назначения. Активное подключение к интернету предоставляет маршрут по умолчанию для любых сетей, не являющихся частью локальной сети хоста, поэтому следует проявлять осторожность при тестировании для конкретных VPN или локальных сетей, чтобы избежать ложных срабатываний. Ниже приведены некоторые примеры:

Это простой наблюдатель, который будет вызываться всякий раз, когда состояние активного подключения к интернету компьютера изменяется:

    hs.network.reachability.internet():setCallback(function(self, flags)
        if (flags & hs.network.reachability.flags.reachable) > 0 then
            -- a default route exists, so an active internet connection is present
        else
            -- no default route exists, so no active internet connection is present
        end
   end):start()

Обратите внимание, что когда активное подключение к интернету активное (доступное), любой конкретный сетевой тест, который не включает пару адресов, будет доступным, так как доступность интернета определяется как наличие маршрута по умолчанию для всех нелокальных сетей.

Конкретный тест для определения доступности сети OpenVPN. Для этого примера необходимо знать локальный IP-адрес компьютера в сети VPN (OpenVPN не устанавливает isDirect флаг) и проверен с помощью Tunnelblick.

    hs.network.reachability.forAddress("10.x.y.z"):setCallback(function(self, flags)
        -- note that because having an internet connection at all will show the remote network
        -- as "reachable", we instead look at whether or not our specific address is "local" instead
        if (flags & hs.network.reachability.flags.isLocalAddress) > 0 then
            -- VPN tunnel is up
        else
            -- VPN tunnel is down
        end
   end):start()

Обзор API

  • Константы - Полезные значения, которые нельзя изменить
    • flags
  • Конструкторы - Вызовы API, возвращающие объект, обычно тот, который предлагает методы API
    • forAddress
    • forAddressPair
    • forHostName
    • internet
    • linkLocal
  • Методы - Вызовы API, которые могут быть выполнены только на объекте, возвращенном конструктором
    • setCallback
    • start
    • status
    • statusString
    • stop

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

Константы

flags
Подпись hs.network.reachability.flags[]
Тип Константа
Описание

Таблица, содержащая числовое значение возможных флагов, возвращаемых методом hs.network.reachability:status или в параметре flags функции обратного вызова.

Источник extensions/network/libnetwork_reachability.m строка 328

Конструкторы

forAddress
Подпись hs.network.reachability.forAddress(address) -> reachabilityObject
Тип Конструктор
Описание

Возвращает объект доступности для указанного сетевого адреса.

Параметры
  • address - строка или число, представляющее IPv4 или IPv6 сетевой адрес, для которого необходимо получить или отслеживать состояние доступности. Если аргумент является числом, он обрабатывается как 32-битовое числовое представление IPv4-адреса.
Возвращаемое значение
  • объект доступности для указанного сетевого адреса.
Примечания
  • Этот объект будет отражать состояние доступности для любого доступного интерфейса на компьютере. Для проверки доступности с определенного интерфейса используйте hs.network.reachability.forAddressPair.
Источник extensions/network/libnetwork_reachability.m строка 74
forAddressPair
Подпись hs.network.reachability.forAddressPair(localAddress, remoteAddress) -> reachabilityObject
Тип Конструктор
Описание

Возвращает объект доступности для указанного сетевого адреса с указанного localAddress.

Параметры
  • localAddress - строка или число, представляющее локальный IPv4 или IPv6 сетевой адрес. Если указанный адрес отсутствует на компьютере, удаленный адрес будет недоступен.
  • remoteAddress - строка или число, представляющее IPv4 или IPv6 сетевой адрес, для которого необходимо получить или отслеживать состояние доступности. Если аргумент является числом, он обрабатывается как 32-битовое числовое представление IPv4-адреса.
Возвращаемое значение
  • объект доступности для указанного сетевого адреса.
Примечания
  • Этот объект будет отражать состояние доступности для определенного интерфейса на компьютере. Для проверки доступности с любого интерфейса используйте hs.network.reachability.forAddress.
  • Этот конструктор можно использовать для проверки определенной локальной сети.
Источник extensions/network/libnetwork_reachability.m строка 105
forHostName
Подпись hs.network.reachability.forHostName(hostName) -> reachabilityObject
Тип Конструктор
Описание

Возвращает объект доступности для указанного хоста.

Параметры
  • hostName - строка, содержащая имя хоста компьютера, для которого необходимо проверить или отследить состояние доступности.
Возвращаемое значение
  • объект доступности для указанного хоста.
Примечания
  • Этот объект будет отражать состояние доступности для любого доступного интерфейса на компьютере.
  • Этот конструктор полагается на разрешимость имени хоста, возможно, через DNS, Bonjour, локально определенное и т.д.
Источник extensions/network/libnetwork_reachability.m строка 150
internet
Подпись hs.network.reachability.internet() -> reachabilityObject
Тип Конструктор
Описание

Создаёт объект доступности для проверки доступа к интернету

Параметры
  • Нет
Возвращаемое значение
  • объект доступности
Примечания
  • Это эквивалентно hs.network.reachability.forAddress("0.0.0.0")
  • Этот конструктор предполагает, что маршрут по умолчанию для IPv4-трафика достаточен для определения доступа к интернету. Если вы находитесь в сети только IPv6, которая также не предоставляет сопоставление маршрутов IPv4, вам, вероятно, следует использовать что-то вроде hs.network.reachability.forAddress("::") вместо этого.
Источник extensions/network/network_reachability.lua строка 45
linkLocal
Подпись hs.network.reachability.linkLocal() -> reachabilityObject
Тип Конструктор
Описание

Создаёт объект доступности для проверки IPv4 локальной сети

Параметры
  • Нет
Возвращаемое значение
  • объект доступности
Примечания
  • Это эквивалентно hs.network.reachability.forAddress("169.254.0.0")
  • Вы можете использовать это для определения того, имеет ли какой-либо интерфейс IPv4 локальный адрес (т.е. zero conf или локальная только сеть), проверив флаг «isDirect»:
    • hs.network.reachability.linklocal():status() & hs.network.reachability.flags.isDirect
  • Если интернет доступен, то эта сеть также будет доступна по умолчанию - используйте флаг isDirect, чтобы убедиться, что маршрут является локальным.
Источник extensions/network/network_reachability.lua строка 63

Методы

setCallback
Подпись hs.network.reachability:setCallback(function) -> reachabilityObject
Тип Метод
Описание

Установить или удалить функцию обратного вызова для объекта доступности

Параметры
  • функция или nil для установки или удаления функции обратного вызова объекта доступности
Возвращаемое значение
  • объект доступности
Примечания
  • Функция обратного вызова будет вызываться каждый раз, когда изменяется состояние доступности данного объекта доступности. Функция обратного вызова должна принимать 2 аргумента: сам объект доступности и числовое представление флагов доступности, и не должна возвращать ничего.
  • Этот метод только устанавливает функцию обратного вызова. Вы можете начать или остановить наблюдателя с помощью hs.network.reachability:start или hs.network.reachability:stop
Источник extensions/network/libnetwork_reachability.m строка 237
start
Подпись hs.network.reachability:start() -> reachabilityObject
Тип Метод
Описание

Начинает отслеживать объект доступности на предмет изменений и вызывает функцию обратного вызова (если она есть), когда происходит изменение.

Параметры
  • Нет
Возвращаемое значение
  • объект доступности
Примечания
  • Функция обратного вызова должна быть указана с помощью hs.network.reachability:setCallback.
Источник extensions/network/libnetwork_reachability.m строка 272
статус
Подпись hs.network.reachability:status() -> number
Тип Метод
Описание

Возвращает статус доступности объекта.

Параметры
  • Нет
Возвращаемое значение
  • числовое представление статуса доступности
Примечания
  • Числовое представление составлено из флагов, определенных в hs.network.reachability.flags.
Источник extensions/network/libnetwork_reachability.m строка 176
строковоеПредставлениеСтатуса
Подпись hs.network.reachability:statusString() -> string
Тип Метод
Описание

Возвращает строковое представление статуса доступности объекта.

Параметры
  • Нет
Возвращаемое значение
  • строковое представление статуса доступности объекта
Примечания
  • В основном включено для отладки, но может быть полезнее при быстром просмотре статуса доступности для отображения или тестирования.
  • Строка будет составлена из следующих флагов:
    • 't'|'-' указывает, доступно ли место назначения через транзитное соединение
    • 'R'|'-' указывает, доступно ли место назначения
    • 'c'|'-' указывает, что для доступности места назначения требуется подключение
    • 'C'|'-' указывает, требуется ли подключение к месту назначения, которое будет инициировано при наличии трафика к этому месту назначения
    • 'i'|'-' указывает, требуется ли подключение к месту назначения, для инициирования которого потребуется действие пользователя
    • 'D'|'-' указывает, требуется ли подключение к месту назначения, которое будет инициировано по запросу через интерфейс CFSocketStream
    • 'l'|'-' указывает, является ли место назначения локальным адресом
    • 'd'|'-' указывает, подключено ли место назначения напрямую
Источник extensions/network/libnetwork_reachability.m строка 202
остановка
Подпись hs.network.reachability:stop() -> reachabilityObject
Тип Метод
Описание

Останавливает наблюдение за объектом доступности для изменения.

Параметры
  • Нет
Возвращаемое значение
  • объект доступности
Источник extensions/network/libnetwork_reachability.m строка 306

© 2014–2017 Hammerspoon contributors
Licensed under the MIT License.
https://www.hammerspoon.org/docs/hs.network.reachability.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API