browser.vpnProvider

Descrizione

Utilizza l'API chrome.vpnProvider per implementare un client VPN.

Autorizzazioni

vpnProvider

Disponibilità

Chrome 43 e versioni successive browser.* da Chrome 148 Solo ChromeOS

Concetti e utilizzo

L'utilizzo tipico di browser.vpnProvider è il seguente:

  • Crea configurazioni VPN chiamando createConfig(). Una configurazione VPN è una voce persistente mostrata all'utente in una UI di ChromeOS. L'utente può selezionare una configurazione VPN da un elenco e connettersi o disconnettersi.

  • Aggiungi listener agli eventi onPlatformMessage, onPacketReceived e onConfigRemoved.

  • Quando l'utente si connette alla configurazione VPN, onPlatformMessage verrà ricevuto con il messaggio "connected". Il periodo tra i messaggi "connected" e "disconnected" è chiamato "sessione VPN". In questo periodo di tempo, si dice che l'estensione che riceve il messaggio possiede la sessione VPN.

  • Avvia la connessione al server VPN e avvia il client VPN.

  • Imposta i parametri della connessione chiamando setParameters().

  • Notifica lo stato della connessione come "connected" chiamando notifyConnectionStateChanged().

  • Quando i passaggi precedenti vengono completati senza errori, viene creato un tunnel virtuale verso lo stack di rete di ChromeOS. I pacchetti IP possono essere inviati tramite il tunnel chiamando sendPacket() e tutti i pacchetti provenienti dal dispositivo ChromeOS verranno ricevuti utilizzando il gestore di eventi onPacketReceived.

  • Quando l'utente si disconnette dalla configurazione VPN, verrà attivato onPlatformMessage con il messaggio "disconnected".

  • Se la configurazione della VPN non è più necessaria, può essere eliminata chiamando destroyConfig().

Tipi

Parameters

Proprietà

  • indirizzo

    stringa

    Indirizzo IP per l'interfaccia VPN in notazione CIDR. Al momento, IPv4 è l'unica modalità supportata.

  • broadcastAddress

    stringa facoltativa

    Indirizzo di broadcast per l'interfaccia VPN. (valore predefinito: dedotto dall'indirizzo IP e dalla maschera)

  • dnsServers

    string[]

    Un elenco di IP per i server DNS.

  • domainSearch

    string[] facoltativo

    Un elenco di domini di ricerca. (valore predefinito: nessun dominio di ricerca)

  • exclusionList

    string[]

    Escludi dal tunnel il traffico di rete verso l'elenco di blocchi IP in notazione CIDR. Questa opzione può essere utilizzata per bypassare il traffico da e verso il server VPN. Quando più regole corrispondono a una destinazione, vince la regola con il prefisso corrispondente più lungo. Le voci che corrispondono allo stesso blocco CIDR vengono trattate come duplicati. Questi duplicati nell'elenco combinato (exclusionList + inclusionList) vengono eliminati e la voce duplicata esatta che verrà eliminata non è definita.

  • inclusionList

    string[]

    Includi il traffico di rete nell'elenco di blocchi IP in notazione CIDR nel tunnel. Questo parametro può essere utilizzato per configurare uno split tunnel. Per impostazione predefinita, nessun traffico viene indirizzato al tunnel. Se aggiungi la voce "0.0.0.0/0" a questo elenco, tutto il traffico degli utenti viene reindirizzato al tunnel. Quando più regole corrispondono a una destinazione, vince la regola con il prefisso corrispondente più lungo. Le voci che corrispondono allo stesso blocco CIDR vengono trattate come duplicati. Questi duplicati nell'elenco combinato (exclusionList + inclusionList) vengono eliminati e la voce duplicata esatta che verrà eliminata non è definita.

  • mtu

    stringa facoltativa

    Impostazione MTU per l'interfaccia VPN. (valore predefinito: 1500 byte)

  • riconnetti

    stringa facoltativa

    Chrome 51+ browser.* da Chrome 148

    Indica se l'estensione VPN implementa la riconnessione automatica.

    Se impostato su true, i messaggi della piattaforma linkDown, linkUp, linkChanged, suspend e resume verranno utilizzati per segnalare i rispettivi eventi. Se impostato su false, il sistema disconnetterà forzatamente la VPN se la topologia di rete cambia e l'utente dovrà riconnettersi manualmente. (valore predefinito: false)

    Questa proprietà è nuova in Chrome 51; genererà un'eccezione nelle versioni precedenti. try/catch può essere utilizzato per attivare la funzionalità in modo condizionale in base al supporto del browser.

PlatformMessage

L'enum viene utilizzato dalla piattaforma per notificare al client lo stato della sessione VPN.

Enum

"connected"
Indica che la configurazione VPN è connessa.

"disconnected"
Indica che la configurazione VPN è stata disconnessa.

"error"
Indica che si è verificato un errore nella connessione VPN, ad esempio un timeout. Una descrizione dell'errore viene fornita come argomento di errore per onPlatformMessage.

"linkDown"
Indica che la connessione di rete fisica predefinita non è attiva.

"linkUp"
Indica che la connessione di rete fisica predefinita è stata ripristinata.

"linkChanged"
Indica che la connessione di rete fisica predefinita è cambiata, ad esempio da Wi-Fi a rete mobile.

"suspend"
Indica che il sistema operativo si sta preparando alla sospensione, quindi la VPN deve interrompere la connessione. Non è garantito che l'estensione riceva questo evento prima della sospensione.

"resume"
Indica che il sistema operativo è stato ripristinato e l'utente ha eseguito nuovamente l'accesso, pertanto la VPN deve provare a riconnettersi.

UIEvent

L'enum viene utilizzato dalla piattaforma per indicare l'evento che ha attivato onUIEvent.

Enum

"showAddDialog"
Richiede che il client VPN mostri all'utente la finestra di dialogo per l'aggiunta della configurazione.

"showConfigureDialog"
Richiede che il client VPN mostri all'utente la finestra di dialogo delle impostazioni di configurazione.

VpnConnectionState

L'enum viene utilizzato dal client VPN per informare la piattaforma del suo stato attuale. In questo modo, l'utente riceve messaggi significativi.

Enum

"connected"
Specifica che la connessione VPN è riuscita.

"failure"
Specifica che la connessione VPN non è riuscita.

Metodi

createConfig()

browser.vpnProvider.createConfig(
  name: string,
)
: Promise<string>

Crea una nuova configurazione VPN che persiste in più sessioni di accesso dell'utente.

Parametri

  • nome

    stringa

    Il nome della configurazione VPN.

Resi

  • Promise<string>

    Browser Chrome 96+ .* da Chrome 148

    Restituisce una Promise che si risolve quando la configurazione viene creata o viene rifiutata se si verifica un errore.

destroyConfig()

browser.vpnProvider.destroyConfig(
  id: string,
)
: Promise<void>

Elimina una configurazione VPN creata dall'estensione.

Parametri

  • id

    stringa

    ID della configurazione VPN da eliminare.

Resi

  • Promise<void>

    Browser Chrome 96+ .* da Chrome 148

    Restituisce una Promise che si risolve quando la configurazione viene eliminata o rifiutata se si verifica un errore.

notifyConnectionStateChanged()

browser.vpnProvider.notifyConnectionStateChanged(
  state: VpnConnectionState,
)
: Promise<void>

Notifica lo stato della sessione VPN alla piattaforma. L'operazione riuscirà solo se la sessione VPN è di proprietà dell'estensione.

Parametri

Resi

  • Promise<void>

    Browser Chrome 96+ .* da Chrome 148

    Restituisce una Promise che viene risolta quando la notifica è completa o rifiutata se si verifica un errore.

sendPacket()

browser.vpnProvider.sendPacket(
  data: ArrayBuffer,
)
: Promise<void>

Invia un pacchetto IP tramite il tunnel creato per la sessione VPN. L'operazione riuscirà solo se la sessione VPN è di proprietà dell'estensione.

Parametri

  • dati

    ArrayBuffer

    Il pacchetto IP da inviare alla piattaforma.

Resi

  • Promise<void>

    Browser Chrome 96+ .* da Chrome 148

    Restituisce una Promise che si risolve quando il pacchetto viene inviato o viene rifiutata se si verifica un errore.

setParameters()

browser.vpnProvider.setParameters(
  parameters: Parameters,
)
: Promise<void>

Imposta i parametri per la sessione VPN. Questo metodo deve essere chiamato immediatamente dopo la ricezione di "connected" dalla piattaforma. L'operazione riuscirà solo se la sessione VPN è di proprietà dell'estensione.

Parametri

  • Parametri

    I parametri per la sessione VPN.

Resi

  • Promise<void>

    Browser Chrome 96+ .* da Chrome 148

    Restituisce una Promise che si risolve quando i parametri vengono impostati o rifiuta se si verifica un errore.

Eventi

onConfigCreated

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

Si attiva quando la piattaforma crea una configurazione per l'estensione.

Parametri

  • callback

    funzione

    Il parametro callback ha il seguente aspetto:

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

    • id

      stringa

    • nome

      stringa

    • dati

      oggetto

onConfigRemoved

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

Si attiva quando una configurazione creata dall'estensione viene rimossa dalla piattaforma.

Parametri

  • callback

    funzione

    Il parametro callback ha il seguente aspetto:

    (id: string) => void

    • id

      stringa

onPacketReceived

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

Attivato quando viene ricevuto un pacchetto IP tramite il tunnel per la sessione VPN di proprietà dell'estensione.

Parametri

  • callback

    funzione

    Il parametro callback ha il seguente aspetto:

    (data: ArrayBuffer) => void

    • dati

      ArrayBuffer

onPlatformMessage

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

Si attiva quando viene ricevuto un messaggio dalla piattaforma per una configurazione VPN di proprietà dell'estensione.

Parametri

  • callback

    funzione

    Il parametro callback ha il seguente aspetto:

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

onUIEvent

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

Attivato quando si verifica un evento UI per l'estensione. Gli eventi UI sono indicatori della piattaforma che indicano all'app che è necessario mostrare all'utente una finestra di dialogo UI.

Parametri

  • callback

    funzione

    Il parametro callback ha il seguente aspetto:

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

    • evento
    • id

      stringa facoltativa