chrome.vpnProvider

Descripción

Usa la API de chrome.vpnProvider para implementar un cliente de VPN.

Permisos

vpnProvider

Disponibilidad

Chrome 43 y versiones posteriores Solo para ChromeOS

Conceptos y uso

El uso típico de chrome.vpnProvider es el siguiente:

  • Llama a createConfig() para crear configuraciones de VPN. Una configuración de VPN es una entrada persistente que se muestra al usuario en una IU 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 y onConfigRemoved.

  • Cuando el usuario se conecte a la configuración de la VPN, se recibirá onPlatformMessage con el mensaje "connected". El período entre los mensajes "connected" y "disconnected" se denomina "sesión 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.

  • Llama a setParameters() para configurar los parámetros de la conexión.

  • Notifica el estado de conexión como "connected" llamando a notifyConnectionStateChanged().

  • Cuando se completan los pasos anteriores sin errores, se crea un túnel virtual hacia la pila de red de ChromeOS. Los paquetes de IP se pueden enviar a través del túnel llamando a sendPacket(), y cualquier paquete que se origine en el dispositivo ChromeOS se recibirá con el controlador de eventos onPacketReceived.

  • Cuando el usuario se desconecte de la configuración de la VPN, se activará onPlatformMessage con el mensaje "disconnected".

  • Si la configuración de VPN ya no es necesaria, se puede destruir llamando a destroyConfig().

Tipos

Parameters

Propiedades

  • de la página web.

    cadena

    Dirección IP de la interfaz de VPN en notación CIDR. Por el momento, IPv4 es el único modo compatible.

  • broadcastAddress

    cadena opcional

    Dirección de emisión para la interfaz de VPN. (predeterminado: deducido a partir de la dirección IP y la 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 del túnel a la lista de bloques de IP en la notación CIDR. Esto se puede usar para evitar el tráfico hacia y desde el servidor de la VPN. Cuando muchas reglas coinciden con un destino, gana la que tenga el prefijo 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 ningún tráfico al túnel. Si agregas la entrada “0.0.0.0/0” a esta lista, se redirecciona todo el tráfico del usuario al túnel. Cuando muchas reglas coinciden con un destino, gana la que tenga el prefijo 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

    cadena opcional

    Configuración de MTU para la interfaz de VPN. (valor predeterminado: 1,500 bytes)

  • reconectar

    cadena opcional

    Chrome 51 y versiones posteriores

    Indica si la extensión de VPN implementa o no la reconexión automática.

    Si es verdadero, se usarán los mensajes de la plataforma linkDown, linkUp, linkChanged, suspend y resume para indicar los eventos respectivos. Si es falso, el sistema desconectará la VPN forzadamente si cambia la topología de la red, y el usuario deberá volver a conectarse manualmente. (predeterminado: falso)

    Esta propiedad es nueva en Chrome 51 y generará una excepción en versiones anteriores. try/catch se puede usar para habilitar condicionalmente la función según la compatibilidad con el navegador.

PlatformMessage

La plataforma usa la enumeración para notificar al cliente sobre el estado de la sesión de VPN.

Enum

"conectada"
Indica que la configuración de la VPN está conectada.

"disconnected"
Indica que la configuración de la 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 de onPlatformMessage.

"linkDown"
Indica que la conexión de red física predeterminada no funciona.

"linkUp"
Indica que se haya creado 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., wifi->mobile.

"suspend"
Indica que el SO se está preparando para suspenderse, por lo que la VPN debería interrumpir 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 reconectarse.

UIEvent

La plataforma usa la enumeración para indicar el evento que activó onUIEvent.

Enum

"showAddDialog"
Solicita que el cliente de VPN le muestre al usuario el cuadro de diálogo para agregar configuraciones.

"showConfigureDialog"
Solicita que el cliente de VPN le muestre al usuario el cuadro de diálogo de la 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 al usuario.

Enum

"connected"
Especifica que la conexión VPN se realizó correctamente.

"failure"
Especifica que la conexión VPN falló.

Métodos

createConfig()

Promesa
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

  • name

    cadena

    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

      cadena

      Un ID único para la configuración creada o undefined en caso de error.

Devuelve

  • Promesa<string>

    Chrome 96 y versiones posteriores

    Las promesas son compatibles con Manifest V3 y versiones posteriores, pero se proporcionan devoluciones de llamada para brindar retrocompatibilidad. No puedes usar ambos en la misma llamada a función. La promesa se resuelve con el mismo tipo que se pasa a la devolución de llamada.

destroyConfig()

Promesa
chrome.vpnProvider.destroyConfig(
  id: string,
  callback?: function,
)

Destruye una configuración de VPN creada por la extensión.

Parámetros

  • id

    cadena

    ID de la configuración de VPN que se destruirá.

  • callback

    Función opcional

    El parámetro callback se ve de la siguiente manera:

    ()=>void

Devuelve

  • Promise<void>

    Chrome 96 y versiones posteriores

    Las promesas son compatibles con Manifest V3 y versiones posteriores, pero se proporcionan devoluciones de llamada para brindar retrocompatibilidad. No puedes usar ambos en la misma llamada a función. La promesa se resuelve con el mismo tipo que se pasa a la devolución de llamada.

notifyConnectionStateChanged()

Promesa
chrome.vpnProvider.notifyConnectionStateChanged(
  state: VpnConnectionState,
  callback?: function,
)

Notifica el estado de la sesión de VPN a la plataforma. Esto tendrá éxito solo cuando la sesión VPN sea propiedad de la extensión.

Parámetros

  • 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

Devuelve

  • Promise<void>

    Chrome 96 y versiones posteriores

    Las promesas son compatibles con Manifest V3 y versiones posteriores, pero se proporcionan devoluciones de llamada para brindar retrocompatibilidad. No puedes usar ambos en la misma llamada a función. La promesa se resuelve con el mismo tipo que se pasa a la devolución de llamada.

sendPacket()

Promesa
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. Esto tendrá éxito solo cuando la sesión 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

Devuelve

  • Promise<void>

    Chrome 96 y versiones posteriores

    Las promesas son compatibles con Manifest V3 y versiones posteriores, pero se proporcionan devoluciones de llamada para brindar retrocompatibilidad. No puedes usar ambos en la misma llamada a función. La promesa se resuelve con el mismo tipo que se pasa a la devolución de llamada.

setParameters()

Promesa
chrome.vpnProvider.setParameters(
  parameters: Parameters,
  callback?: function,
)

Establece los parámetros para la sesión de VPN. Se debe llamar a este método inmediatamente después de recibir el elemento "connected" de la plataforma. Esto tendrá éxito solo cuando la sesión 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

Devuelve

  • Promise<void>

    Chrome 96 y versiones posteriores

    Las promesas son compatibles con Manifest V3 y versiones posteriores, pero se proporcionan devoluciones de llamada para brindar retrocompatibilidad. No puedes usar ambos en la misma llamada a función. La promesa se resuelve con el mismo tipo que se pasa a la devolución 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

    la función

    El parámetro callback se ve de la siguiente manera:

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

    • id

      cadena

    • name

      cadena

    • 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

    la función

    El parámetro callback se ve de la siguiente manera:

    (id: string)=>void

    • id

      cadena

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 VPN propiedad de la extensión.

Parámetros

  • callback

    la 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

    la función

    El parámetro callback se ve de la siguiente manera:

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

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 indicadores de la plataforma que le indican a la app que se debe mostrar un diálogo de la IU al usuario.

Parámetros

  • callback

    la función

    El parámetro callback se ve de la siguiente manera:

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