Beschreibung
Verwenden Sie die chrome.vpnProvider
API, um einen VPN-Client zu implementieren.
Berechtigungen
vpnProvider
Verfügbarkeit
Nutzung
Typische Verwendung von vpnProvider:
Erstellen Sie VPN-Konfigurationen mit der Methode
createConfig
. Eine VPN-Konfiguration ist ein dauerhafter Eintrag, der dem Nutzer in einer nativen ChromeOS-Benutzeroberfläche angezeigt wird. Der Nutzer kann eine VPN-Konfiguration aus einer Liste auswählen und eine Verbindung zu dieser Konfiguration herstellen oder die Verbindung trennen.Fügen Sie den Ereignissen
onPlatformMessage
,onPacketReceived
undonConfigRemoved
Listener hinzu.Wenn der Nutzer eine Verbindung zur VPN-Konfiguration herstellt, wird
onPlatformMessage
mit der Nachricht"connected"
empfangen. Den Zeitraum zwischen den Nachrichten"connected"
und"disconnected"
wird als VPN-Sitzung bezeichnet. In diesem Zeitraum gehört die VPN-Sitzung der Erweiterung, die die Nachricht erhält.Stellen Sie die Verbindung zum VPN-Server her und starten Sie den VPN-Client.
Legen Sie die Parameter der Verbindung mit
setParameters
fest.Benachrichtigen Sie den Verbindungsstatus mit
notifyConnectionStateChanged
als"connected"
.Wenn die Schritte oben ohne Fehler ausgeführt werden, wird ein virtueller Tunnel zum Netzwerkstack von ChromeOS erstellt. IP-Pakete können mit
sendPacket
durch den Tunnel gesendet werden und alle Pakete, die vom ChromeOS-Gerät stammen, werden mit dem EreignisonPacketReceived
empfangen.Wenn der Nutzer die VPN-Konfiguration trennt, wird
onPlatformMessage
mit der Meldung"disconnected"
ausgelöst.Wenn die VPN-Konfiguration nicht mehr erforderlich ist, kann sie mit
destroyConfig
gelöscht werden.
Typen
Parameters
Attribute
-
Adresse
String
IP-Adresse für die VPN-Schnittstelle in CIDR-Notation. IPv4 ist derzeit der einzige unterstützte Modus.
-
broadcastAddress
String optional
Übertragungsadresse für die VPN-Schnittstelle. (Standard: abgeleitet aus IP-Adresse und Maske)
-
dnsServers
String[]
Eine Liste von IP-Adressen für die DNS-Server.
-
domainSearch
string[] optional
Eine Liste mit Suchdomains. (Standardeinstellung: keine Suchdomain)
-
exclusionList
String[]
Schließen Sie Netzwerkverkehr aus der Liste der IP-Blöcke in CIDR-Notation aus dem Tunnel aus. Dadurch kann der Traffic zum und vom VPN-Server umgangen werden. Wenn viele Regeln mit einem Ziel übereinstimmen, gewinnt die Regel mit dem längsten übereinstimmenden Präfix. Einträge, die demselben CIDR-Block entsprechen, werden als Duplikate behandelt. Solche Duplikate aus der sortierten Liste (exclusionList + inclusionList) werden entfernt und der exakte Duplikateintrag, der entfernt wird, ist nicht definiert.
-
inclusionList
String[]
Nehmen Sie Netzwerkverkehr in die Liste der IP-Blöcke in CIDR-Notation zum Tunnel auf. Dieser Parameter kann zum Einrichten eines Split-Tunnels verwendet werden. Standardmäßig wird kein Traffic an den Tunnel weitergeleitet. Wenn Sie der Liste den Eintrag „0.0.0.0/0“ hinzufügen, wird der gesamte Nutzertraffic an den Tunnel weitergeleitet. Wenn viele Regeln mit einem Ziel übereinstimmen, gewinnt die Regel mit dem längsten übereinstimmenden Präfix. Einträge, die demselben CIDR-Block entsprechen, werden als Duplikate behandelt. Solche Duplikate aus der sortierten Liste (exclusionList + inclusionList) werden entfernt und der exakte Duplikateintrag, der entfernt wird, ist nicht definiert.
-
mtu
String optional
MTU-Einstellung für die VPN-Schnittstelle. (Standard: 1.500 Byte)
-
Erneut verbinden
String optional
Chrome 51 und höherGibt an, ob die VPN-Erweiterung die automatische Wiederverbindung implementiert.
Bei „true“ werden die Plattformnachrichten
linkDown
,linkUp
,linkChanged
,suspend
undresume
verwendet, um die entsprechenden Ereignisse zu signalisieren. Wenn „false“ festgelegt ist, wird die Verbindung zum VPN erzwungen, wenn sich die Netzwerktopologie ändert. Der Nutzer muss dann manuell wieder eine Verbindung herstellen. (Standard: false)Diese Eigenschaft ist neu in Chrome 51. Sie generiert in früheren Versionen eine Ausnahme. Mit „try/catch“ kann die Funktion je nach Browserunterstützung aktiviert werden.
PlatformMessage
Die Aufzählung wird von der Plattform verwendet, um den Client über den Status der VPN-Sitzung zu informieren.
Enum
"connected"
Gibt an, dass die VPN-Konfiguration verbunden wurde.
"disconnected"
Gibt an, dass die VPN-Konfiguration getrennt wurde.
"Fehler"
Gibt an, dass bei der VPN-Verbindung ein Fehler aufgetreten ist, z. B. eine Zeitüberschreitung. Eine Beschreibung des Fehlers wird als Fehlerargument an onPlatformMessage übergeben.
"linkDown"
Gibt an, dass die standardmäßige physische Netzwerkverbindung ausgefallen ist.
"linkUp"
Zeigt an, dass die standardmäßige physische Netzwerkverbindung wieder verfügbar ist.
"linkChanged"
Gibt an, dass sich die standardmäßige physische Netzwerkverbindung geändert hat, z.B. WLAN > Mobilfunk.
"suspend"
Zeigt an, dass sich das Betriebssystem auf den Sperrvorgang vorbereitet. Daher sollte die Verbindung des VPN getrennt werden. Es wird nicht garantiert, dass die Erweiterung dieses Ereignis erhält, bevor sie gesperrt wird.
"resume"
Gibt an, dass das Betriebssystem fortgesetzt wurde und sich der Nutzer wieder angemeldet hat. Daher sollte das VPN versuchen, die Verbindung wiederherzustellen.
UIEvent
Die Aufzählung wird von der Plattform verwendet, um das Ereignis anzugeben, das onUIEvent
ausgelöst hat.
Enum
"showAddDialog"
Führt an, dass der VPN-Client dem Nutzer das Dialogfeld zum Hinzufügen von Konfigurationen anzeigt.
"showConfigDialog"
Fordert an, dass der VPN-Client dem Nutzer das Dialogfeld mit den Konfigurationseinstellungen anzeigt.
VpnConnectionState
Die Enum wird vom VPN-Client verwendet, um die Plattform über ihren aktuellen Status zu informieren. Dies trägt dazu bei, dem Nutzer aussagekräftige Botschaften zu liefern.
Enum
"connected"
Gibt an, dass die VPN-Verbindung erfolgreich hergestellt wurde.
"failure"
Gibt an, dass die VPN-Verbindung fehlgeschlagen ist.
Methoden
createConfig()
chrome.vpnProvider.createConfig(
name: string,
callback?: function,
)
Erstellt eine neue VPN-Konfiguration, die über mehrere Log-in-Sitzungen des Nutzers hinweg bestehen bleibt.
Parameter
-
name
String
Der Name der VPN-Konfiguration.
-
callback
Funktion optional
Der Parameter
callback
sieht so aus:(id: string) => void
-
id
String
Eine eindeutige ID für die erstellte Konfiguration oder
undefined
bei einem Fehler.
-
Rückgabe
-
Versprechen<string>
Chrome 96 und höherPromise-Objekte werden nur für Manifest V3 und höher unterstützt. Andere Plattformen müssen Callbacks verwenden.
destroyConfig()
chrome.vpnProvider.destroyConfig(
id: string,
callback?: function,
)
Zerstört eine von der Erweiterung erstellte VPN-Konfiguration.
Parameter
-
id
String
ID der zu löschenden VPN-Konfiguration.
-
callback
Funktion optional
Der Parameter
callback
sieht so aus:() => void
Rückgabe
-
Promise<void>
Chrome 96 und höherPromise-Objekte werden nur für Manifest V3 und höher unterstützt. Andere Plattformen müssen Callbacks verwenden.
notifyConnectionStateChanged()
chrome.vpnProvider.notifyConnectionStateChanged(
state: VpnConnectionState,
callback?: function,
)
Informiert den Status der VPN-Sitzung an die Plattform. Dies ist nur möglich, wenn die VPN-Sitzung der Erweiterung gehört.
Parameter
-
state
Der VPN-Sitzungsstatus des VPN-Clients.
-
callback
Funktion optional
Der Parameter
callback
sieht so aus:() => void
Rückgabe
-
Promise<void>
Chrome 96 und höherPromise-Objekte werden nur für Manifest V3 und höher unterstützt. Andere Plattformen müssen Callbacks verwenden.
sendPacket()
chrome.vpnProvider.sendPacket(
data: ArrayBuffer,
callback?: function,
)
Sendet ein IP-Paket über den für die VPN-Sitzung erstellten Tunnel. Dies ist nur möglich, wenn die VPN-Sitzung der Erweiterung gehört.
Parameter
-
daten
ArrayBuffer
Das IP-Paket, das an die Plattform gesendet werden soll.
-
callback
Funktion optional
Der Parameter
callback
sieht so aus:() => void
Rückgabe
-
Promise<void>
Chrome 96 und höherPromise-Objekte werden nur für Manifest V3 und höher unterstützt. Andere Plattformen müssen Callbacks verwenden.
setParameters()
chrome.vpnProvider.setParameters(
parameters: Parameters,
callback?: function,
)
Legt die Parameter für die VPN-Sitzung fest. Dieser sollte sofort aufgerufen werden, nachdem "connected"
von der Plattform empfangen wurde. Dies ist nur möglich, wenn die VPN-Sitzung der Erweiterung gehört.
Parameter
-
Parameter
Die Parameter für die VPN-Sitzung.
-
callback
Funktion optional
Der Parameter
callback
sieht so aus:() => void
Rückgabe
-
Promise<void>
Chrome 96 und höherPromise-Objekte werden nur für Manifest V3 und höher unterstützt. Andere Plattformen müssen Callbacks verwenden.
Veranstaltungen
onConfigCreated
chrome.vpnProvider.onConfigCreated.addListener(
callback: function,
)
Wird ausgelöst, wenn von der Plattform eine Konfiguration für die Erweiterung erstellt wird.
Parameter
-
callback
Funktion
Der Parameter
callback
sieht so aus:(id: string, name: string, data: object) => void
-
id
String
-
name
String
-
daten
Objekt
-
onConfigRemoved
chrome.vpnProvider.onConfigRemoved.addListener(
callback: function,
)
Wird ausgelöst, wenn eine von der Erweiterung erstellte Konfiguration von der Plattform entfernt wird.
Parameter
-
callback
Funktion
Der Parameter
callback
sieht so aus:(id: string) => void
-
id
String
-
onPacketReceived
chrome.vpnProvider.onPacketReceived.addListener(
callback: function,
)
Wird ausgelöst, wenn ein IP-Paket über den Tunnel für die VPN-Sitzung empfangen wird, die der Erweiterung gehört.
Parameter
-
callback
Funktion
Der Parameter
callback
sieht so aus:(data: ArrayBuffer) => void
-
daten
ArrayBuffer
-
onPlatformMessage
chrome.vpnProvider.onPlatformMessage.addListener(
callback: function,
)
Wird ausgelöst, wenn von der Plattform eine Nachricht für eine VPN-Konfiguration eingeht, die der Erweiterung gehört.
Parameter
-
callback
Funktion
Der Parameter
callback
sieht so aus:(id: string, message: PlatformMessage, error: string) => void
-
id
String
-
Nachricht
-
error
String
-
onUIEvent
chrome.vpnProvider.onUIEvent.addListener(
callback: function,
)
Wird ausgelöst, wenn ein UI-Ereignis für die Erweiterung eintritt. UI-Ereignisse sind Signale von der Plattform, die der App signalisieren, dass dem Nutzer ein UI-Dialogfeld angezeigt werden muss.