Описание
Используйте API chrome.vpnProvider
для реализации VPN-клиента.
Разрешения
vpnProvider
Доступность
Использование
Типичное использование 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,
)
Запускается при возникновении события пользовательского интерфейса для расширения. События пользовательского интерфейса — это сигналы платформы, которые указывают приложению, что пользователю необходимо показать диалоговое окно пользовательского интерфейса.