chrome.vpnProvider

Описание

Используйте API chrome.vpnProvider для реализации VPN-клиента.

Разрешения

vpnProvider

Доступность

Chrome 43+ только для ChromeOS

Использование

Типичное использование vpnProvider выглядит следующим образом:

  • Создайте конфигурации VPN с помощью метода createConfig . Конфигурация VPN — это постоянная запись, отображаемая пользователю в собственном пользовательском интерфейсе ChromeOS. Пользователь может выбрать конфигурацию VPN из списка и подключиться к ней или отключиться от нее.

  • Добавьте прослушиватели событий onPlatformMessage , onPacketReceived и onConfigRemoved .

  • Когда пользователь подключается к конфигурации VPN, onPlatformMessage будет получен с сообщением "connected" . Мы называем период между сообщениями "connected" и "disconnected" сеансом VPN. В этот период времени считается, что расширение, которое получает сообщение, владеет сеансом VPN.

  • Инициируйте подключение к VPN-серверу и запустите VPN-клиент.

  • Установите параметры соединения с помощью setParameters .

  • Уведомите состояние соединения как "connected" используя notifyConnectionStateChanged .

  • Когда описанные выше шаги выполняются без ошибок, создается виртуальный туннель к сетевому стеку ChromeOS. IP-пакеты можно отправлять через туннель с помощью sendPacket , а любые пакеты, исходящие от устройства ChromeOS, будут получены с помощью события onPacketReceived .

  • Когда пользователь отключается от конфигурации VPN, onPlatformMessage будет запущен с сообщением "disconnected" .

  • Если конфигурация VPN больше не нужна, ее можно удалить с помощью destroyConfig .

Типы

Parameters

Характеристики

  • адрес

    нить

    IP-адрес VPN-интерфейса в нотации CIDR. IPv4 в настоящее время является единственным поддерживаемым режимом.

  • широковещательный адрес

    строка необязательна

    Широковещательный адрес для VPN-интерфейса. (по умолчанию: определяется на основе IP-адреса и маски)

  • DNSсерверы

    нить[]

    Список IP-адресов DNS-серверов.

  • доменПоиск

    строка[] необязательно

    Список поисковых доменов. (по умолчанию: без домена поиска)

  • список исключений

    нить[]

    Исключить сетевой трафик из туннеля в список IP-блоков в нотации CIDR. Это можно использовать для обхода трафика, входящего и исходящего от VPN-сервера. Если пункту назначения соответствует множество правил, побеждает правило с самым длинным совпадающим префиксом. Записи, соответствующие одному и тому же блоку CIDR, считаются дубликатами. Такие дубликаты в сопоставленном списке (exclusionList + includeList) удаляются, а точная повторяющаяся запись, которая будет удалена, не определена.

  • список включений

    нить[]

    Включите сетевой трафик в список IP-блоков в нотации CIDR туннеля. Этот параметр можно использовать для настройки разделенного туннеля. По умолчанию трафик в туннель не направляется. Добавление записи «0.0.0.0/0» в этот список приводит к перенаправлению всего пользовательского трафика в туннель. Если пункту назначения соответствует множество правил, побеждает правило с самым длинным совпадающим префиксом. Записи, соответствующие одному и тому же блоку CIDR, считаются дубликатами. Такие дубликаты в сопоставленном списке (exclusionList + includeList) удаляются, а точная повторяющаяся запись, которая будет удалена, не определена.

  • мту

    строка необязательна

    Настройка MTU для VPN-интерфейса. (по умолчанию: 1500 байт)

  • повторно подключиться

    строка необязательна

    Хром 51+

    Независимо от того, реализует ли расширение VPN автоматическое повторное подключение.

    Если это правда, то сообщения платформы linkDown , linkUp , linkChanged , suspend и resume будут использоваться для сигнализации соответствующих событий. Если установлено значение false, система принудительно отключит VPN при изменении топологии сети, и пользователю придется повторно подключиться вручную. (по умолчанию: ложь)

    Это свойство является новым в Chrome 51; в более ранних версиях он создаст исключение. try/catch можно использовать для условного включения этой функции в зависимости от поддержки браузера.

PlatformMessage

Перечисление используется платформой для уведомления клиента о состоянии VPN-сеанса.

Перечисление

"связанный"
Указывает, что конфигурация VPN подключена.

"отключен"
Указывает, что конфигурация VPN отключена.

"ошибка"
Указывает на то, что в VPN-соединении произошла ошибка, например тайм-аут. Описание ошибки передается в качестве аргумента ошибки в onPlatformMessage.

"ссылкавниз"
Указывает, что физическое сетевое соединение по умолчанию не работает.

"ссылкавверх"
Указывает, что физическое сетевое соединение по умолчанию восстановлено.

"ссылкаИзменена"
Указывает, что физическое сетевое соединение по умолчанию изменилось, например, Wi-Fi->мобильное.

"приостановить"
Указывает, что ОС готовится к приостановке, поэтому VPN должна разорвать соединение. Расширение не гарантированно получит это событие до приостановки.

"резюме"
Указывает, что работа ОС возобновилась, и пользователь снова вошел в систему, поэтому VPN следует попытаться повторно подключиться.

UIEvent

Перечисление используется платформой для указания события, вызвавшего onUIEvent .

Перечисление

"показатьДобавитьДиалог"
Запрашивает, чтобы VPN-клиент показывал пользователю диалоговое окно добавления конфигурации.

"шоуконфигурироватьдиалог"
Запрашивает, чтобы VPN-клиент показывал пользователю диалоговое окно настроек конфигурации.

VpnConnectionState

Перечисление используется VPN-клиентом для информирования платформы о ее текущем состоянии. Это помогает предоставлять пользователю содержательные сообщения.

Перечисление

"связанный"
Указывает, что VPN-соединение прошло успешно.

"отказ"
Указывает, что VPN-соединение не удалось.

Методы

createConfig()

Обещать
chrome.vpnProvider.createConfig(
  name: string,
  callback?: function,
)

Создает новую конфигурацию VPN, которая сохраняется в течение нескольких сеансов входа пользователя.

Параметры

  • имя

    нить

    Имя конфигурации VPN.

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    (id: string) => void

    • идентификатор

      нить

      Уникальный идентификатор созданной конфигурации или undefined в случае сбоя.

Возврат

  • Обещание<строка>

    Хром 96+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

destroyConfig()

Обещать
chrome.vpnProvider.destroyConfig(
  id: string,
  callback?: function,
)

Уничтожает конфигурацию VPN, созданную расширением.

Параметры

  • идентификатор

    нить

    Идентификатор конфигурации VPN, которую необходимо уничтожить.

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    () => void

Возврат

  • Обещание<void>

    Хром 96+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

notifyConnectionStateChanged()

Обещать
chrome.vpnProvider.notifyConnectionStateChanged(
  state: VpnConnectionState,
  callback?: function,
)

Уведомляет платформу о состоянии VPN-сеанса. Это удастся только в том случае, если сеанс VPN принадлежит расширению.

Параметры

  • Состояние VPN-сеанса VPN-клиента.

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    () => void

Возврат

  • Обещание<void>

    Хром 96+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

sendPacket()

Обещать
chrome.vpnProvider.sendPacket(
  data: ArrayBuffer,
  callback?: function,
)

Отправляет IP-пакет через туннель, созданный для сеанса VPN. Это удастся только в том случае, если сеанс VPN принадлежит расширению.

Параметры

  • данные

    МассивБуфер

    IP-пакет, который будет отправлен на платформу.

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    () => void

Возврат

  • Обещание<void>

    Хром 96+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

setParameters()

Обещать
chrome.vpnProvider.setParameters(
  parameters: Parameters,
  callback?: function,
)

Устанавливает параметры VPN-сеанса. Его следует вызывать сразу после получения от платформы сообщения "connected" . Это удастся только в том случае, если сеанс VPN принадлежит расширению.

Параметры

  • параметры

    Параметры VPN-сессии.

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    () => void

Возврат

  • Обещание<void>

    Хром 96+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

События

onConfigCreated

chrome.vpnProvider.onConfigCreated.addListener(
  callback: function,
)

Срабатывает, когда платформа создает конфигурацию для расширения.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит так:

    (id: string, name: string, data: object) => void

    • идентификатор

      нить

    • имя

      нить

    • данные

      объект

onConfigRemoved

chrome.vpnProvider.onConfigRemoved.addListener(
  callback: function,
)

Срабатывает, когда конфигурация, созданная расширением, удаляется платформой.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит так:

    (id: string) => void

    • идентификатор

      нить

onPacketReceived

chrome.vpnProvider.onPacketReceived.addListener(
  callback: function,
)

Срабатывает при получении IP-пакета через туннель VPN-сеанса, принадлежащего расширению.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит так:

    (data: ArrayBuffer) => void

    • данные

      МассивБуфер

onPlatformMessage

chrome.vpnProvider.onPlatformMessage.addListener(
  callback: function,
)

Срабатывает при получении сообщения от платформы для конфигурации VPN, принадлежащей расширению.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит так:

    (id: string, message: PlatformMessage, error: string) => void

onUIEvent

chrome.vpnProvider.onUIEvent.addListener(
  callback: function,
)

Запускается при возникновении события пользовательского интерфейса для расширения. События пользовательского интерфейса — это сигналы платформы, которые указывают приложению, что пользователю необходимо показать диалоговое окно пользовательского интерфейса.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит так:

    (event: UIEvent, id?: string) => void

    • событие
    • идентификатор

      строка необязательна