chrome.vpnProvider

Descrição

Use a API chrome.vpnProvider para implementar um cliente VPN.

Permissões

vpnProvider

Disponibilidade

Chrome 43 ou superior Somente ChromeOS

Conceitos e uso

O uso típico de chrome.vpnProvider é o seguinte:

  • Crie configurações de VPN chamando createConfig(). Uma configuração de VPN é uma entrada persistente mostrada ao usuário em uma interface do ChromeOS. O usuário pode selecionar uma configuração de VPN em uma lista e se conectar ou desconectar dela.

  • Adicione listeners aos eventos onPlatformMessage, onPacketReceived e onConfigRemoved.

  • Quando o usuário se conectar à configuração da VPN, onPlatformMessage será recebido com a mensagem "connected". O período entre as mensagens de "connected" e "disconnected" é chamado de "sessão de VPN". Nesse período, a extensão que recebe a mensagem é considerada proprietária da sessão VPN.

  • Iniciar a conexão com o servidor VPN e o cliente VPN.

  • Defina os parâmetros da conexão chamando setParameters().

  • Notifique o estado da conexão como "connected" chamando notifyConnectionStateChanged().

  • Quando as etapas anteriores forem concluídas sem erros, um túnel virtual será criado para a pilha de rede do ChromeOS. Para enviar pacotes IP pelo túnel, chame sendPacket(), e todos os pacotes originados no dispositivo ChromeOS serão recebidos usando o manipulador de eventos onPacketReceived.

  • Quando o usuário se desconecta da configuração da VPN, o onPlatformMessage é acionado com a mensagem "disconnected".

  • Se a configuração da VPN não for mais necessária, ela poderá ser destruída chamando destroyConfig().

Tipos

Parameters

Propriedades

  • endereço

    string

    Endereço IP para a interface VPN na notação CIDR. Atualmente, o IPv4 é o único modo aceito.

  • broadcastAddress

    string opcional

    Endereço de transmissão da interface da VPN. (padrão: deduzido do endereço IP e da máscara)

  • dnsServers

    string[]

    Uma lista de IPs para os servidores DNS.

  • domainSearch

    string[] opcional

    Uma lista de domínios de pesquisa. (padrão: sem domínio de pesquisa)

  • exclusionList

    string[]

    Exclua do túnel o tráfego de rede da lista de blocos IP na notação CIDR. Isso pode ser usado para ignorar o tráfego de e para o servidor VPN. Quando muitas regras correspondem a um destino, a regra com o prefixo de correspondência mais longo vence. As entradas que correspondem ao mesmo bloco CIDR são tratadas como duplicadas. Essas duplicatas na lista reunida (exclusionList + inclusãoList) são eliminadas, e a entrada duplicada exata que será eliminada é indefinida.

  • inclusionList

    string[]

    Inclua o tráfego de rede na lista de blocos IP na notação CIDR para o túnel. Esse parâmetro pode ser usado para configurar um túnel dividido. Por padrão, nenhum tráfego é direcionado para o túnel. Adicionando a entrada "0.0.0.0/0" a essa lista faz com que todo o tráfego do usuário seja redirecionado ao túnel. Quando muitas regras correspondem a um destino, a regra com o prefixo de correspondência mais longo vence. As entradas que correspondem ao mesmo bloco CIDR são tratadas como duplicadas. Essas duplicatas na lista reunida (exclusionList + inclusãoList) são eliminadas, e a entrada duplicada exata que será eliminada é indefinida.

  • mtu

    string opcional

    Configuração de MTU para a interface de VPN. (padrão: 1.500 bytes)

  • reconectar

    string opcional

    Chrome 51 ou superior

    Se a extensão de VPN implementa ou não a reconexão automática.

    Se for "true", as mensagens da plataforma linkDown, linkUp, linkChanged, suspend e resume vão ser usadas para sinalizar os respectivos eventos. Se for falso, o sistema forçará a desconexão da VPN se a topologia da rede mudar, e o usuário precisará se reconectar manualmente. (padrão: falso)

    Essa propriedade é nova no Chrome 51. isso vai gerar uma exceção em versões anteriores. try/catch pode ser usado para ativar condicionalmente o recurso com base no suporte do navegador.

PlatformMessage

O tipo enumerado é usado pela plataforma para notificar o cliente sobre o status da sessão de VPN.

Enumeração

"conectado"
Indica que a configuração de VPN foi conectada.

"desconectado"
Indica que a configuração da VPN foi desconectada.

"error"
Indica que ocorreu um erro na conexão VPN, por exemplo, um tempo limite. Uma descrição do erro é fornecida como o argumento de erro para onPlatformMessage.

"linkDown"
Indica que a conexão de rede física padrão está inativa.

"linkUp"
Indica que foi feito backup da conexão de rede física padrão.

"linkChanged"
Indica que a conexão de rede física padrão mudou, por exemplo, wifi->móvel.

"suspend"
Indica que o SO está se preparando para suspender, então a VPN vai encerrar a conexão. Não há garantia de que a extensão receberá esse evento antes da suspensão.

"retomar"
Indica que o SO foi retomado e o usuário fez login novamente, então a VPN deve tentar se reconectar.

UIEvent

O tipo enumerado é usado pela plataforma para indicar o evento que acionou onUIEvent.

Enumeração

"showAddDialog"
solicita que o cliente VPN mostre a caixa de diálogo de adição de configuração ao usuário.

"showConfigureDialog"
solicita que o cliente VPN mostre a caixa de diálogo das definições de configuração ao usuário.

VpnConnectionState

O tipo enumerado é usado pelo cliente VPN para informar o estado atual à plataforma. Isso ajuda a mostrar mensagens significativas para os usuários.

Enumeração

"Connected"
Especifica que a conexão VPN foi bem-sucedida.

"failure"
Especifica que a conexão VPN falhou.

Métodos

createConfig()

Promessa
chrome.vpnProvider.createConfig(
  name: string,
  callback?: function,
)

Cria uma nova configuração de VPN que persiste entre várias sessões de login do usuário.

Parâmetros

  • nome

    string

    O nome da configuração da VPN.

  • callback

    função opcional

    O parâmetro callback tem esta aparência:

    (id: string) => void

    • id

      string

      Um ID exclusivo para a configuração criada ou undefined em caso de falha.

Retorna

  • Promessa<string>

    Chrome 96 ou versão mais recente

    O Manifesto V3 e versões mais recentes oferecem suporte a promessas, mas callbacks são fornecidos para a compatibilidade com versões anteriores. Não é possível usar ambos na mesma chamada de função. A promessa é resolvida com o mesmo tipo passado ao retorno de chamada.

destroyConfig()

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

Destrói uma configuração de VPN criada pela extensão.

Parâmetros

  • id

    string

    ID da configuração da VPN a ser destruída.

  • callback

    função opcional

    O parâmetro callback tem esta aparência:

    () => void

Retorna

  • Promessa<void>

    Chrome 96 ou versão mais recente

    O Manifesto V3 e versões mais recentes oferecem suporte a promessas, mas callbacks são fornecidos para a compatibilidade com versões anteriores. Não é possível usar ambos na mesma chamada de função. A promessa é resolvida com o mesmo tipo passado ao retorno de chamada.

notifyConnectionStateChanged()

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

Notifica o estado da sessão VPN para a plataforma. Isso só funcionará quando a sessão de VPN pertencer à extensão.

Parâmetros

  • O estado da sessão VPN do cliente VPN.

  • callback

    função opcional

    O parâmetro callback tem esta aparência:

    () => void

Retorna

  • Promessa<void>

    Chrome 96 ou versão mais recente

    O Manifesto V3 e versões mais recentes oferecem suporte a promessas, mas callbacks são fornecidos para a compatibilidade com versões anteriores. Não é possível usar ambos na mesma chamada de função. A promessa é resolvida com o mesmo tipo passado ao retorno de chamada.

sendPacket()

Promessa
chrome.vpnProvider.sendPacket(
  data: ArrayBuffer,
  callback?: function,
)

Envia um pacote IP pelo túnel criado para a sessão de VPN. Isso só funcionará quando a sessão de VPN pertencer à extensão.

Parâmetros

  • dados

    ArrayBuffer

    O pacote IP a ser enviado para a plataforma.

  • callback

    função opcional

    O parâmetro callback tem esta aparência:

    () => void

Retorna

  • Promessa<void>

    Chrome 96 ou versão mais recente

    O Manifesto V3 e versões mais recentes oferecem suporte a promessas, mas callbacks são fornecidos para a compatibilidade com versões anteriores. Não é possível usar ambos na mesma chamada de função. A promessa é resolvida com o mesmo tipo passado ao retorno de chamada.

setParameters()

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

Define os parâmetros para a sessão da VPN. Ele precisa ser chamado imediatamente após o recebimento de "connected" da plataforma. Isso só funcionará quando a sessão de VPN pertencer à extensão.

Parâmetros

  • parâmetros

    Parâmetros para a sessão da VPN.

  • callback

    função opcional

    O parâmetro callback tem esta aparência:

    () => void

Retorna

  • Promessa<void>

    Chrome 96 ou versão mais recente

    O Manifesto V3 e versões mais recentes oferecem suporte a promessas, mas callbacks são fornecidos para a compatibilidade com versões anteriores. Não é possível usar ambos na mesma chamada de função. A promessa é resolvida com o mesmo tipo passado ao retorno de chamada.

Eventos

onConfigCreated

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

Acionado quando uma configuração é criada pela plataforma para a extensão.

Parâmetros

  • callback

    função

    O parâmetro callback tem esta aparência:

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

    • id

      string

    • nome

      string

    • dados

      objeto

onConfigRemoved

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

Acionado quando uma configuração criada pela extensão é removida pela plataforma.

Parâmetros

  • callback

    função

    O parâmetro callback tem esta aparência:

    (id: string) => void

    • id

      string

onPacketReceived

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

Acionado quando um pacote IP é recebido pelo túnel para a sessão VPN de propriedade da extensão.

Parâmetros

  • callback

    função

    O parâmetro callback tem esta aparência:

    (data: ArrayBuffer) => void

    • dados

      ArrayBuffer

onPlatformMessage

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

Acionado quando uma mensagem é recebida da plataforma para uma configuração de VPN de propriedade da extensão.

Parâmetros

  • callback

    função

    O parâmetro callback tem esta aparência:

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

onUIEvent

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

Acionado quando há um evento de interface do usuário para a extensão. Eventos de interface são sinais da plataforma que indicam ao app que uma caixa de diálogo de interface precisa ser mostrada ao usuário.

Parâmetros

  • callback

    função

    O parâmetro callback tem esta aparência:

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

    • evento
    • id

      string opcional