Descripción
Usa la API de chrome.vpnProvider
para implementar un cliente de VPN.
Permisos
vpnProvider
Disponibilidad
Uso
El uso típico de vpnProvider es el siguiente:
Crea configuraciones de VPN con el método
createConfig
. Una configuración de VPN es una entrada persistente que se muestra al usuario en una IU nativa de ChromeOS. El usuario puede seleccionar una configuración de VPN de una lista y conectarse a ella o desconectarse de ella.Agrega objetos de escucha a los eventos
onPlatformMessage
,onPacketReceived
yonConfigRemoved
.Cuando el usuario se conecte a la configuración de la VPN, se recibirá
onPlatformMessage
con el mensaje"connected"
. Nos referimos al período entre los mensajes"connected"
y"disconnected"
como una sesión de VPN. En este período, se dice que la extensión que recibe el mensaje es propietaria de la sesión de VPN.Inicia la conexión con el servidor de VPN y, luego, inicia el cliente de VPN.
Establece los parámetros de la conexión con
setParameters
.Notifica el estado de conexión como
"connected"
a través denotifyConnectionStateChanged
.Cuando se completan los pasos anteriores sin errores, se crea un túnel virtual para la pila de red de ChromeOS. Los paquetes de IP se pueden enviar a través del túnel con
sendPacket
, y cualquier paquete que se origine en el dispositivo ChromeOS se recibirá con el eventoonPacketReceived
.Cuando el usuario se desconecte de la configuración de VPN, se activará
onPlatformMessage
con el mensaje"disconnected"
.Si ya no es necesaria la configuración de VPN, se puede destruir con
destroyConfig
.
Tipos
Parameters
Propiedades
-
dirección
string
Dirección IP para la interfaz de VPN en notación CIDR. Por el momento, IPv4 es el único modo compatible.
-
broadcastAddress
string opcional
Dirección de transmisión para la interfaz VPN. (predeterminado: deducido de la dirección IP y máscara)
-
dnsServers
string[]
Una lista de IP para los servidores DNS.
-
domainSearch
string[] opcional
Una lista de dominios de búsqueda. (configuración predeterminada: sin dominio de búsqueda)
-
exclusionList
string[]
Excluye el tráfico de red de la lista de bloques de IP en la notación CIDR del túnel. Se puede usar para evitar el tráfico hacia y desde el servidor de VPN. Cuando muchas reglas coinciden con un destino, gana la que tenga el prefijo coincidente más largo. Las entradas que corresponden al mismo bloque de CIDR se tratan como duplicadas. Estos duplicados de la lista recopilada (exclusionList + inclusionList) se eliminan y la entrada duplicada exacta que se eliminará no está definida.
-
inclusionList
string[]
Incluye el tráfico de red en la lista de bloques de IP en la notación CIDR del túnel. Este parámetro se puede usar para configurar un túnel dividido. De forma predeterminada, no se dirige tráfico al túnel. Agregar la entrada "0.0.0.0/0" a esta lista todo el tráfico de usuarios se redirecciona al túnel. Cuando muchas reglas coinciden con un destino, gana la que tenga el prefijo coincidente más largo. Las entradas que corresponden al mismo bloque de CIDR se tratan como duplicadas. Estos duplicados de la lista recopilada (exclusionList + inclusionList) se eliminan y la entrada duplicada exacta que se eliminará no está definida.
-
mtu
string opcional
Es la configuración de MTU para la interfaz de VPN. (valor predeterminado: 1,500 bytes)
-
volver a conectar
string opcional
Chrome 51 y versiones posterioresIndica si la extensión de VPN implementa o no la reconexión automática.
Si es verdadero, los mensajes de la plataforma
linkDown
,linkUp
,linkChanged
,suspend
yresume
se usarán para indicar los eventos respectivos. Si es falso, el sistema desconectará la VPN de manera forzosa si cambia la topología de la red, y el usuario deberá volver a conectarse de forma manual. (predeterminado: falso)Esta propiedad es nueva en Chrome 51. generará una excepción en versiones anteriores. try/catch se puede usar para habilitar condicionalmente la función según la compatibilidad del navegador.
PlatformMessage
La plataforma usa la enumeración para notificar al cliente sobre el estado de la sesión de VPN.
Enum
"conectado"
Indica que la configuración de VPN está conectada.
"disconnect"
Indica que la configuración de VPN se desconectó.
"error"
Indica que se produjo un error en la conexión VPN, por ejemplo, se agotó el tiempo de espera. Se proporciona una descripción del error como el argumento de error para onPlatformMessage.
"linkDown"
Indica que la conexión de red física predeterminada no funciona.
"linkUp"
Indica que se creó una copia de seguridad de la conexión de red física predeterminada.
"linkChanged"
Indica que cambió la conexión de red física predeterminada, p.ej., Wi-Fi->dispositivo móvil.
"suspend"
Indica que el SO se está preparando para suspender, por lo que la VPN debe descartar su conexión. No se garantiza que la extensión reciba este evento antes de la suspensión.
"resume"
Indica que se reanudó el SO y que el usuario volvió a acceder, por lo que la VPN debería intentar volver a conectarse.
UIEvent
La plataforma usa la enumeración para indicar el evento que activó onUIEvent
.
Enum
"showAddDialog"
Solicita al cliente de VPN que le muestre al usuario el cuadro de diálogo para agregar la configuración.
"showConfigureDialog"
Solicita que el cliente de VPN le muestre al usuario el cuadro de diálogo de los parámetros de configuración.
VpnConnectionState
El cliente de VPN usa la enumeración para informar a la plataforma su estado actual. Esto ayuda a proporcionar mensajes significativos a los usuarios.
Enum
"conectado"
Especifica que la conexión VPN se realizó correctamente.
"error"
Especifica que la conexión de VPN falló.
Métodos
createConfig()
chrome.vpnProvider.createConfig(
name: string,
callback?: function,
)
Crea una nueva configuración de VPN que persiste en varias sesiones de acceso del usuario.
Parámetros
-
nombre
string
El nombre de la configuración de VPN.
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:(id: string) => void
-
id
string
Un ID único para la configuración creada o
undefined
en caso de error.
-
Muestra
-
Promesa<string>
Chrome 96 y versiones posterioresLas promesas solo son compatibles con Manifest V3 y versiones posteriores; otras plataformas deben usar devoluciones de llamada.
destroyConfig()
chrome.vpnProvider.destroyConfig(
id: string,
callback?: function,
)
Destruye una configuración de VPN creada por la extensión.
Parámetros
-
id
string
ID de la configuración de la VPN que se destruirá.
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:() => void
Muestra
-
Promesa<void>
Chrome 96 y versiones posterioresLas promesas solo son compatibles con Manifest V3 y versiones posteriores; otras plataformas deben usar devoluciones de llamada.
notifyConnectionStateChanged()
chrome.vpnProvider.notifyConnectionStateChanged(
state: VpnConnectionState,
callback?: function,
)
Notifica el estado de la sesión de VPN a la plataforma. Esta acción solo se realizará correctamente cuando la sesión de VPN sea propiedad de la extensión.
Parámetros
-
state
El estado de la sesión de VPN del cliente de VPN.
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:() => void
Muestra
-
Promesa<void>
Chrome 96 y versiones posterioresLas promesas solo son compatibles con Manifest V3 y versiones posteriores; otras plataformas deben usar devoluciones de llamada.
sendPacket()
chrome.vpnProvider.sendPacket(
data: ArrayBuffer,
callback?: function,
)
Envía un paquete de IP a través del túnel creado para la sesión de VPN. Esta acción solo se realizará correctamente cuando la sesión de VPN sea propiedad de la extensión.
Parámetros
-
datos
ArrayBuffer
El paquete de IP que se enviará a la plataforma.
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:() => void
Muestra
-
Promesa<void>
Chrome 96 y versiones posterioresLas promesas solo son compatibles con Manifest V3 y versiones posteriores; otras plataformas deben usar devoluciones de llamada.
setParameters()
chrome.vpnProvider.setParameters(
parameters: Parameters,
callback?: function,
)
Establece los parámetros para la sesión de VPN. Se debe llamar inmediatamente después de que se reciba "connected"
de la plataforma. Esta acción solo se realizará correctamente cuando la sesión de VPN sea propiedad de la extensión.
Parámetros
-
Parámetros
Los parámetros para la sesión de VPN.
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:() => void
Muestra
-
Promesa<void>
Chrome 96 y versiones posterioresLas promesas solo son compatibles con Manifest V3 y versiones posteriores; otras plataformas deben usar devoluciones de llamada.
Eventos
onConfigCreated
chrome.vpnProvider.onConfigCreated.addListener(
callback: function,
)
Se activa cuando la plataforma crea una configuración para la extensión.
Parámetros
-
callback
función
El parámetro
callback
se ve de la siguiente manera:(id: string, name: string, data: object) => void
-
id
string
-
nombre
string
-
datos
objeto
-
onConfigRemoved
chrome.vpnProvider.onConfigRemoved.addListener(
callback: function,
)
Se activa cuando la plataforma quita una configuración creada por la extensión.
Parámetros
-
callback
función
El parámetro
callback
se ve de la siguiente manera:(id: string) => void
-
id
string
-
onPacketReceived
chrome.vpnProvider.onPacketReceived.addListener(
callback: function,
)
Se activa cuando se recibe un paquete de IP a través del túnel para la sesión de VPN que pertenece a la extensión.
Parámetros
-
callback
función
El parámetro
callback
se ve de la siguiente manera:(data: ArrayBuffer) => void
-
datos
ArrayBuffer
-
onPlatformMessage
chrome.vpnProvider.onPlatformMessage.addListener(
callback: function,
)
Se activa cuando se recibe un mensaje de la plataforma para una configuración de VPN que pertenece a la extensión.
Parámetros
-
callback
función
El parámetro
callback
se ve de la siguiente manera:(id: string, message: PlatformMessage, error: string) => void
-
id
string
-
mensaje
-
error
string
-
onUIEvent
chrome.vpnProvider.onUIEvent.addListener(
callback: function,
)
Se activa cuando hay un evento de IU para la extensión. Los eventos de la IU son señales de la plataforma que le indican a la app que se debe mostrar un diálogo de la IU al usuario.