Описание
 Используйте 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-серверов. 
- domainSearchстрока[] необязательная Список доменов поиска. (по умолчанию: домен поиска отсутствует) 
- список исключенийнить[] Исключить сетевой трафик из туннеля, направляемый в список IP-блоков в нотации CIDR. Это можно использовать для обхода трафика, поступающего на VPN-сервер и от него. Если несколько правил соответствуют одному и тому же пункту назначения, приоритет отдаётся правилу с самым длинным совпадающим префиксом. Записи, соответствующие одному и тому же блоку CIDR, считаются дубликатами. Такие дубликаты в объединённом списке (exclusionList + inclusionList) удаляются, и точный дубликат, который будет удалён, не определён. 
- includeListнить[] Включить сетевой трафик в список IP-блоков в нотации CIDR для туннеля. Этот параметр можно использовать для настройки разделённого туннеля. По умолчанию трафик в туннель не направляется. Добавление записи "0.0.0.0/0" в этот список перенаправляет весь пользовательский трафик в туннель. Если назначению соответствует несколько правил, приоритет отдаётся правилу с самым длинным совпадающим префиксом. Записи, соответствующие одному и тому же блоку CIDR, считаются дубликатами. Такие дубликаты в объединенном списке (exclusionList + inclusionList) удаляются, и точный дубликат, который будет удалён, не определён. 
- МТУстрока необязательная Настройка MTU для интерфейса VPN. (по умолчанию: 1500 байт) 
- переподключитьсястрока необязательная Хром 51+Реализует ли VPN-расширение автоматическое переподключение. Если задано значение true, сообщения платформы linkDown,linkUp,linkChanged,suspendиresumeбудут использоваться для оповещения о соответствующих событиях. Если задано значение false, система принудительно отключит VPN при изменении топологии сети, и пользователю потребуется вручную переподключиться. (по умолчанию: false)Это свойство является новым в Chrome 51; в более ранних версиях оно будет генерировать исключение. try/catch можно использовать для условного включения функции в зависимости от поддержки браузера. 
PlatformMessage
Перечисление используется платформой для уведомления клиента о состоянии сеанса VPN.
Перечисление
 "связанный"  "отключен"  "ошибка"  "linkDown"  "linkUp"  "linkChanged"  "приостановить"  "резюме"
 Указывает на то, что конфигурация VPN подключена. 
 Указывает на то, что конфигурация VPN отключена. 
 Указывает на ошибку VPN-подключения, например, тайм-аут. Описание ошибки указывается в качестве аргумента ошибки для onPlatformMessage. 
 Указывает на то, что физическое сетевое соединение по умолчанию не работает. 
 Указывает на то, что физическое сетевое соединение по умолчанию является резервным. 
 Указывает на то, что физическое сетевое соединение по умолчанию изменилось, например, Wi-Fi->мобильная связь. 
 Указывает, что ОС готовится к приостановке работы, поэтому VPN-соединение должно быть разорвано. Расширение не гарантирует получение этого события до приостановки работы. 
 Указывает на то, что ОС возобновила работу и пользователь снова вошел в систему, поэтому VPN должен попытаться повторно подключиться.
UIEvent
Перечисление используется платформой для указания события, которое вызвало onUIEvent . 
Перечисление
 "showAddDialog"  "showConfigureDialog"
 Просит VPN-клиент показать пользователю диалоговое окно добавления конфигурации. 
 Просит VPN-клиент показать пользователю диалоговое окно параметров конфигурации.
VpnConnectionState
Перечисление используется VPN-клиентом для информирования платформы о своём текущем состоянии. Это помогает предоставлять пользователю содержательные сообщения.
Перечисление
 "связанный"  "отказ"
 Указывает, что VPN-подключение прошло успешно. 
 Указывает на сбой VPN-подключения.
Методы
createConfig()
chrome.vpnProvider.createConfig(
name: string,
callback?: function,
): Promise<string>
Создает новую конфигурацию VPN, которая сохраняется для нескольких сеансов входа пользователя.
Параметры
- имянить Имя конфигурации VPN. 
- перезвонитьфункция необязательна Параметр callbackвыглядит так:(id: string) => void - идентификаторнить Уникальный идентификатор для созданной конфигурации или undefinedв случае возникновения ошибки.
 
Возврат
- Обещание<строка> Хром 96+- Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы. 
destroyConfig()
chrome.vpnProvider.destroyConfig(
id: string,
callback?: function,
): Promise<void>
Уничтожает конфигурацию VPN, созданную расширением.
Параметры
- идентификаторнить Идентификатор конфигурации VPN, который необходимо уничтожить. 
- перезвонитьфункция необязательна Параметр callbackвыглядит так:() => void 
Возврат
- Обещание<void> Хром 96+- Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы. 
notifyConnectionStateChanged()
chrome.vpnProvider.notifyConnectionStateChanged(
state: VpnConnectionState,
callback?: function,
): Promise<void>
Уведомляет платформу о состоянии VPN-сеанса. Это будет успешно выполнено только в том случае, если VPN-сеанс принадлежит расширению.
Параметры
- состояниеСостояние сеанса VPN клиента VPN. 
- перезвонитьфункция необязательна Параметр callbackвыглядит так:() => void 
Возврат
- Обещание<void> Хром 96+- Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы. 
sendPacket()
chrome.vpnProvider.sendPacket(
data: ArrayBuffer,
callback?: function,
): Promise<void>
Отправляет IP-пакет через туннель, созданный для VPN-сеанса. Это будет успешно выполнено только в том случае, если VPN-сеанс принадлежит расширению.
Параметры
- данныеArrayBuffer IP-пакет для отправки на платформу. 
- перезвонитьфункция необязательна Параметр callbackвыглядит так:() => void 
Возврат
- Обещание<void> Хром 96+- Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы. 
setParameters()
chrome.vpnProvider.setParameters(
parameters: Parameters,
callback?: function,
): Promise<void>
 Задаёт параметры 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 - данныеArrayBuffer 
 
onPlatformMessage
chrome.vpnProvider.onPlatformMessage.addListener(
callback: function,
)
Срабатывает при получении сообщения от платформы о конфигурации VPN, принадлежащей расширению.
Параметры
- перезвонитьфункция Параметр callbackвыглядит так:(id: string, message: PlatformMessage, error: string) => void - идентификаторнить 
- сообщение
- ошибканить 
 
onUIEvent
chrome.vpnProvider.onUIEvent.addListener(
callback: function,
)
Срабатывает при возникновении события пользовательского интерфейса для расширения. События пользовательского интерфейса — это сигналы от платформы, которые сообщают приложению о необходимости отображения диалогового окна пользовательского интерфейса.