Descrição
Use a API chrome.vpnProvider
para implementar um cliente VPN.
Permissões
vpnProvider
Disponibilidade
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
eonConfigRemoved
.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"
chamandonotifyConnectionStateChanged()
.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 eventosonPacketReceived
.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 superiorSe 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
eresume
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()
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 recenteO 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()
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 recenteO 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()
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
-
estado
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 recenteO 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()
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 recenteO 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()
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 recenteO 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
-
id
string
-
mensagem
-
erro
string
-
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.