Beschrijving
Gebruik de chrome.vpnProvider API om een VPN-client te implementeren.
Rechten
vpnProviderBeschikbaarheid
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,onPacketReceivedenonConfigRemoved.Als de gebruiker verbinding maakt met de VPN-configuratie, wordt
onPlatformMessageontvangen 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"doornotifyConnectionStateChanged()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 gebeurtenishandleronPacketReceived.Als de gebruiker de verbinding met de VPN-configuratie verbreekt, wordt
onPlatformMessagegeactiveerd 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 148Of de VPN-extensie automatisch opnieuw verbinding maakt.
Als dit waar is, worden de platformberichten
linkDown,linkUp,linkChanged,suspendenresumegebruikt 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 148Retourneert 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 148Retourneert 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
-
status
De VPN-sessiestatus van de VPN-client.
Retourzendingen
-
Promise<void>
Chrome 96+ browser.* sinds Chrome 148Retourneert 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 148Retourneert 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 148Retourneert 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
callbackziet 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
callbackziet 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
callbackziet 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
callbackziet er zo uit:(id: string, message: PlatformMessage, error: string) => void
-
id
tekenreeks
-
bericht
-
fout
tekenreeks
-
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.