browser.vpnProvider

Beschrijving

Gebruik de chrome.vpnProvider API om een VPN-client te implementeren.

Rechten

vpnProvider

Beschikbaarheid

Chrome 43+ browser.* sinds Chrome 148 Alleen ChromeOS

Concepten en gebruik

Het gebruikelijke gebruik van browser.vpnProvider is als volgt:

  • Maak VPN-configuraties door createConfig() aan te roepen. Een VPN-configuratie is een permanente vermelding die aan de gebruiker wordt getoond in een ChromeOS-UI. De gebruiker kan een VPN-configuratie selecteren in een lijst en verbinding maken of de verbinding verbreken.

  • Voeg listeners toe aan de gebeurtenissen onPlatformMessage, onPacketReceived en onConfigRemoved.

  • Als de gebruiker verbinding maakt met de VPN-configuratie, wordt onPlatformMessage ontvangen met het bericht "connected". De periode tussen de berichten "connected" en "disconnected" wordt een VPN-sessie genoemd. In deze periode is de extensie die het bericht krijgt de eigenaar van de VPN-sessie.

  • Maak verbinding met de VPN-server en start de VPN-client.

  • Stel de parameters van de verbinding in door setParameters() aan te roepen.

  • Meld de verbindingsstatus als "connected" door notifyConnectionStateChanged() aan te roepen.

  • Als de vorige stappen zonder fouten zijn afgerond, wordt er een virtuele tunnel gemaakt naar de netwerkstack van ChromeOS. IP-pakketten kunnen via de tunnel worden gestuurd door sendPacket() aan te roepen. Pakketten die afkomstig zijn van het ChromeOS-apparaat, worden ontvangen via de gebeurtenishandler onPacketReceived.

  • Als de gebruiker de verbinding met de VPN-configuratie verbreekt, wordt onPlatformMessage geactiveerd met het bericht "disconnected".

  • Als de VPN-configuratie niet meer nodig is, kan deze worden verwijderd door destroyConfig() aan te roepen.

Typen

Parameters

Eigenschappen

  • adres

    tekenreeks

    IP-adres voor de VPN-interface in CIDR-notatie. IPv4 is op dit moment de enige ondersteunde modus.

  • broadcastAddress

    tekenreeks optioneel

    Broadcast-adres voor de VPN-interface. (standaard: afgeleid van IP-adres en masker)

  • dnsServers

    tekenreeks[]

    Een lijst met IP-adressen voor de DNS-servers.

  • domainSearch

    string[] optioneel

    Een lijst met zoekdomeinen. (standaard: geen zoekdomein)

  • exclusionList

    tekenreeks[]

    Sluit netwerkverkeer naar de lijst met IP-blokken in CIDR-notatie uit van de tunnel. Dit kan worden gebruikt om verkeer van en naar de VPN-server te omzeilen. Als veel regels overeenkomen met een bestemming, wint de regel met het langste overeenkomende voorvoegsel. Vermeldingen die overeenkomen met hetzelfde CIDR-blok, worden behandeld als duplicaten. Dergelijke dubbele vermeldingen in de verzamelde lijst (exclusionList + inclusionList) worden verwijderd. De exacte dubbele vermelding die wordt verwijderd, is niet gedefinieerd.

  • inclusionList

    tekenreeks[]

    Voeg netwerkverkeer toe aan de lijst met IP-blokken in CIDR-notatie voor de tunnel. Met deze parameter kun je een gesplitste tunnel instellen. Standaard wordt er geen verkeer naar de tunnel geleid. Als je de invoer 0.0.0.0/0 aan deze lijst toevoegt, wordt al het gebruikersverkeer omgeleid naar de tunnel. Als veel regels overeenkomen met een bestemming, wint de regel met het langste overeenkomende voorvoegsel. Vermeldingen die overeenkomen met hetzelfde CIDR-blok, worden behandeld als duplicaten. Dergelijke dubbele vermeldingen in de verzamelde lijst (exclusionList + inclusionList) worden verwijderd. De exacte dubbele vermelding die wordt verwijderd, is niet gedefinieerd.

  • mtu

    tekenreeks optioneel

    MTU-instelling voor de VPN-interface. (standaard: 1500 bytes)

  • opnieuw verbinding maken

    tekenreeks optioneel

    Chrome 51+ browser.* sinds Chrome 148

    Of de VPN-extensie automatisch opnieuw verbinding maakt.

    Als dit waar is, worden de platformberichten linkDown, linkUp, linkChanged, suspend en resume gebruikt om de respectieve gebeurtenissen aan te geven. Als je deze instelling op False zet, verbreekt het systeem de VPN-verbinding geforceerd als de netwerktopologie verandert. De gebruiker moet dan handmatig opnieuw verbinding maken. (standaard: false)

    Deze property is nieuw in Chrome 51. In eerdere versies wordt een uitzondering gegenereerd. Je kunt try/catch gebruiken om de functie voorwaardelijk aan te zetten op basis van browserondersteuning.

PlatformMessage

De enum wordt door het platform gebruikt om de client op de hoogte te stellen van de status van de VPN-sessie.

Enum

"connected"
Geeft aan dat de VPN-configuratie is verbonden.

"disconnected"
Geeft aan dat de VPN-configuratie is verbroken.

"error"
Geeft aan dat er een fout is opgetreden in de VPN-verbinding, bijvoorbeeld een time-out. Een beschrijving van de fout wordt gegeven als het foutargument voor onPlatformMessage.

"linkDown"
Geeft aan dat de standaard fysieke netwerkverbinding niet werkt.

"linkUp"
Geeft aan dat de standaard fysieke netwerkverbinding weer werkt.

"linkChanged"
Geeft aan dat de standaard fysieke netwerkverbinding is gewijzigd, bijvoorbeeld wifi->mobiel.

"suspend"
Geeft aan dat het OS zich voorbereidt op opschorting, dus het VPN moet de verbinding verbreken. Het is niet gegarandeerd dat de extensie deze gebeurtenis krijgt voordat deze wordt opgeschort.

"resume"
Geeft aan dat het OS is hervat en de gebruiker weer is ingelogd, dus het VPN moet proberen opnieuw verbinding te maken.

UIEvent

De enum wordt door het platform gebruikt om de gebeurtenis aan te geven die onUIEvent heeft geactiveerd.

Enum

"showAddDialog"
Vraagt de VPN-client om het dialoogvenster voor het toevoegen van de configuratie aan de gebruiker te tonen.

"showConfigureDialog"
Vraagt de VPN-client om het dialoogvenster met configuratie-instellingen aan de gebruiker te tonen.

VpnConnectionState

De enum wordt door de VPN-client gebruikt om het platform te informeren over de huidige status. Zo kun je de gebruiker nuttige berichten sturen.

Enum

"connected"
Geeft aan dat de VPN-verbinding is geslaagd.

"failure"
Geeft aan dat de VPN-verbinding is mislukt.

Methoden

createConfig()

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

Maakt een nieuwe VPN-configuratie die blijft bestaan tijdens meerdere inlogsessies van de gebruiker.

Parameters

  • name

    tekenreeks

    De naam van de VPN-configuratie.

Retourzendingen

  • Promise<string>

    Chrome 96+ browser.* sinds Chrome 148

    Retourneert een Promise die wordt opgelost als de configuratie is gemaakt of wordt afgewezen als er een fout is.

destroyConfig()

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

Hiermee wordt een VPN-configuratie verwijderd die door de extensie is gemaakt.

Parameters

  • id

    tekenreeks

    ID van de VPN-configuratie die je wilt verwijderen.

Retourzendingen

  • Promise<void>

    Chrome 96+ browser.* sinds Chrome 148

    Retourneert een Promise die wordt opgelost als de configuratie wordt vernietigd of wordt geweigerd als er een fout is.

notifyConnectionStateChanged()

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

Meldt de status van de VPN-sessie aan het platform. Dit lukt alleen als de VPN-sessie eigendom is van de extensie.

Parameters

Retourzendingen

  • Promise<void>

    Chrome 96+ browser.* sinds Chrome 148

    Retourneert een Promise die wordt opgelost als de melding is afgerond of wordt afgewezen als er een fout is.

sendPacket()

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

Stuurt een IP-pakket via de tunnel die is gemaakt voor de VPN-sessie. Dit lukt alleen als de VPN-sessie eigendom is van de extensie.

Parameters

  • gegevens

    ArrayBuffer

    Het IP-pakket dat naar het platform moet worden gestuurd.

Retourzendingen

  • Promise<void>

    Chrome 96+ browser.* sinds Chrome 148

    Retourneert een Promise die wordt opgelost als het pakket is verstuurd of wordt afgewezen als er een fout is.

setParameters()

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

Hiermee stel je de parameters voor de VPN-sessie in. Dit moet onmiddellijk worden aangeroepen nadat "connected" is ontvangen van het platform. Dit lukt alleen als de VPN-sessie eigendom is van de extensie.

Parameters

  • parameters

    De parameters voor de VPN-sessie.

Retourzendingen

  • Promise<void>

    Chrome 96+ browser.* sinds Chrome 148

    Retourneert een Promise die wordt opgelost als de parameters zijn ingesteld of wordt afgewezen als er een fout is.

Evenementen

onConfigCreated

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

Wordt geactiveerd als het platform een configuratie maakt voor de extensie.

Parameters

  • callback

    functie

    De parameter callback ziet er zo uit:

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

    • id

      tekenreeks

    • name

      tekenreeks

    • gegevens

      object

onConfigRemoved

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

Wordt geactiveerd als een configuratie die door de extensie is gemaakt, door het platform wordt verwijderd.

Parameters

  • callback

    functie

    De parameter callback ziet er zo uit:

    (id: string) => void

    • id

      tekenreeks

onPacketReceived

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

Wordt geactiveerd als een IP-pakket wordt ontvangen via de tunnel voor de VPN-sessie die eigendom is van de extensie.

Parameters

  • callback

    functie

    De parameter callback ziet er zo uit:

    (data: ArrayBuffer) => void

    • gegevens

      ArrayBuffer

onPlatformMessage

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

Wordt geactiveerd als er een bericht van het platform wordt ontvangen voor een VPN-configuratie die eigendom is van de extensie.

Parameters

  • callback

    functie

    De parameter callback ziet er zo uit:

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

onUIEvent

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

Wordt geactiveerd als er een UI-gebeurtenis is voor de extensie. UI-gebeurtenissen zijn signalen van het platform die aan de app aangeven dat er een UI-dialoogvenster aan de gebruiker moet worden getoond.

Parameters

  • callback

    functie

    De parameter callback ziet er zo uit:

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

    • gebeurtenis
    • id

      tekenreeks optioneel