chrome.vpnProvider

Descrizione

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

Autorizzazioni

vpnProvider

Disponibilità

Chrome 43+ Solo ChromeOS

Concetti e utilizzo

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

  • Crea configurazioni VPN chiamando createConfig(). Una configurazione VPN è una voce persistente mostrata all'utente in un'interfaccia utente 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, viene ricevuto onPlatformMessage 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 è proprietaria della 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 nello 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 eventi onPacketReceived.

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

  • Se la configurazione 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 trasmissione per l'interfaccia VPN. (impostazione predefinita: dedotto da indirizzo IP e maschera)

  • dnsServers

    string[]

    Un elenco di indirizzi IP per i server DNS.

  • domainSearch

    string[] facoltativo

    Un elenco di domini di ricerca. (impostazione predefinita: nessun dominio di ricerca)

  • exclusionList

    string[]

    Escludi dal tunnel il traffico di rete verso l'elenco di blocchi IP in notazione CIDR. Può essere utilizzato per bypassare il traffico da e verso il server VPN. Quando molte regole corrispondono a una destinazione, vince la regola con il prefisso di corrispondenza 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 dei blocchi IP in notazione CIDR nel tunnel. Questo parametro può essere utilizzato per configurare un tunnel suddiviso. 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 molte regole corrispondono a una destinazione, vince la regola con il prefisso di corrispondenza 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+

    Indica se l'estensione VPN implementa la riconnessione automatica.

    Se è true, i messaggi della piattaforma linkDown, linkUp, linkChanged, suspend e resume verranno utilizzati per segnalare i rispettivi eventi. Se il valore è false, il sistema disconnette 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 in modo condizionale la funzionalità in base al supporto del browser.

PlatformMessage

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

Enum

"connesso"
Indica che la configurazione VPN è connessa.

"disconnected"
Indica che la configurazione VPN è 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 a onPlatformMessage.

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

"linkUp"
Indica che la connessione di rete fisica predefinita è di nuovo attiva.

"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 a sospendere, 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, quindi la VPN deve tentare di riconnettersi.

UIEvent

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

Enum

"showAddDialog"
Richiede al client VPN di mostrare all'utente la finestra di dialogo per l'aggiunta della configurazione.

"showConfigureDialog"
Richiede al client VPN di mostrare all'utente la finestra di dialogo delle impostazioni di configurazione.

VpnConnectionState

L'enum viene utilizzato dal client VPN per comunicare alla piattaforma il 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()

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

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

Parametri

  • nome

    stringa

    Il nome della configurazione VPN.

Resi

  • Promise<string>

    Chrome 96+

destroyConfig()

chrome.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>

    Chrome 96+

notifyConnectionStateChanged()

chrome.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>

    Chrome 96+

sendPacket()

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

Invia un pacchetto IP attraverso 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>

    Chrome 96+

setParameters()

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

Imposta i parametri per la sessione VPN. Questo 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 della sessione VPN.

Resi

  • Promise<void>

    Chrome 96+

Eventi

onConfigCreated

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

Attivato 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

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

Attivato 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

chrome.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

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

Attivato 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

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

Attivato quando si verifica un evento dell'interfaccia utente per l'estensione. Gli eventi UI sono segnali 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