Opis
Użyj interfejsu API chrome.vpnProvider
, aby wdrożyć klienta VPN.
Uprawnienia
vpnProvider
Dostępność
Pojęcia i zastosowanie
Typowe zastosowanie chrome.vpnProvider
:
Utwórz konfiguracje VPN, wywołując metodę
createConfig()
. Konfiguracja sieci VPN to stały wpis wyświetlany użytkownikowi w interfejsie ChromeOS. Użytkownik może wybrać konfigurację VPN z listy i połączyć się z nią lub się z nią rozłączyć.Dodaj detektory do zdarzeń
onPlatformMessage
,onPacketReceived
ionConfigRemoved
.Gdy użytkownik połączy się z konfiguracją VPN,
onPlatformMessage
otrzyma wiadomość z komunikatem"connected"
. Okres między wiadomościami"connected"
i"disconnected"
jest nazywany „sesją VPN”. W tym okresie mówi się, że rozszerzenie odbierające wiadomość jest właścicielem sesji VPN.Zainicjuj połączenie z serwerem VPN i uruchom klienta VPN.
Ustaw parametry połączenia, wywołując metodę
setParameters()
.Powiadom o stanie połączenia jako
"connected"
, wywołując metodęnotifyConnectionStateChanged()
.Jeśli poprzednie kroki zakończą się bez błędów, do stosu sieciowego ChromeOS zostanie utworzony wirtualny tunel. Pakiety IP mogą być wysyłane przez tunel przez wywołanie
sendPacket()
. Wszystkie pakiety pochodzące z urządzenia z ChromeOS będą odbierane przez moduł obsługi zdarzeńonPacketReceived
.Gdy użytkownik rozłączy się z konfiguracją VPN, uruchomi się aplikacja
onPlatformMessage
z komunikatem"disconnected"
.Jeśli konfiguracja VPN nie jest już potrzebna, możesz ją zniszczyć, wywołując metodę
destroyConfig()
.
Typy
Parameters
Właściwości
-
adres
string,
Adres IP interfejsu VPN w notacji CIDR. Jedynym obsługiwanym trybem jest obecnie IPv4.
-
broadcastAddress
ciąg znaków opcjonalny
Adres rozgłoszeniowy dla interfejsu VPN. (domyślnie: usunięte z adresu IP i maski)
-
dnsServers
string[]
Lista adresów IP serwerów DNS.
-
domainSearch
string[] opcjonalny
Lista domen wyszukiwania. (domyślnie: brak domeny wyszukiwania)
-
exclusionList
string[]
Wyklucz ruch sieciowy z tunelu na liście bloków adresów IP w notacji CIDR. W ten sposób można omijać ruch do i z serwera VPN. Jeśli do miejsca docelowego pasuje wiele reguł, wygrywa reguła z najdłuższym pasującym prefiksem. Wpisy odpowiadające temu samemu blokowi CIDR są traktowane jako duplikaty. Takie duplikaty na liście wykluczających (exclusionList + insertList) są usuwane, a dokładny duplikat, który zostanie usunięty, jest niezdefiniowany.
-
inclusionList
string[]
Uwzględnij ruch sieciowy do listy bloków adresów IP w notacji CIDR do tunelu. Tego parametru można użyć do skonfigurowania podzielonego tunelu. Domyślnie ruch nie jest kierowany do tunelu. Dodanie wpisu „0.0.0.0/0” do tej listy spowoduje, że cały ruch użytkowników będzie przekierowywany do tunelu. Jeśli do miejsca docelowego pasuje wiele reguł, wygrywa reguła z najdłuższym pasującym prefiksem. Wpisy odpowiadające temu samemu blokowi CIDR są traktowane jako duplikaty. Takie duplikaty na liście wykluczających (exclusionList + insertList) są usuwane, a dokładny duplikat, który zostanie usunięty, jest niezdefiniowany.
-
mtu
ciąg znaków opcjonalny
Ustawienie MTU dla interfejsu VPN. (domyślnie: 1500 bajtów)
-
połącz ponownie
ciąg znaków opcjonalny
Chrome 51 i nowsze wersjeWskazuje, czy rozszerzenie VPN stosuje automatyczne ponowne połączenie.
Jeśli wartość to prawda, do sygnalizowania odpowiednich zdarzeń będą używane komunikaty z platform
linkDown
,linkUp
,linkChanged
,suspend
iresume
. W przypadku wartości false (fałsz) system będzie wymuszał rozłączenie sieci VPN w przypadku zmiany topologii sieci i użytkownik będzie musiał ręcznie połączyć się z siecią. (domyślnie: fałsz)Ta właściwość jest nowa w Chrome 51 – wygeneruje wyjątek we wcześniejszych wersjach. Polecenie try/catch może być używane do warunkowego włączania tej funkcji w zależności od obsługi przez przeglądarkę.
PlatformMessage
Wyliczenie jest używane przez platformę do powiadamiania klienta o stanie sesji VPN.
Typ wyliczeniowy
„Połączono”
Wskazuje, że konfiguracja VPN została połączona.
"disconnect"
Wskazuje, że konfiguracja VPN została odłączona.
„error”
Wskazuje, że wystąpił błąd połączenia VPN, na przykład przekroczenie limitu czasu oczekiwania. Opis błędu jest podawany jako argument błędu w funkcji onPlatformMessage.
"linkDown"
Wskazuje, że domyślne połączenie sieciowe nie działa.
"linkUp"
Wskazuje, że domyślne połączenie sieciowe zostało utworzone.
„linkChanged”
Wskazuje, że zmieniło się domyślne połączenie z siecią fizyczną, np. Wi-Fi->komórkowe.
"suspend"
Wskazuje, że system operacyjny przygotowuje się do zawieszenia, więc sieć VPN powinna zakończyć połączenie. Nie ma gwarancji, że rozszerzenie otrzyma to zdarzenie przed zawieszeniem.
"resume"
Wskazuje, że system operacyjny został wznowiony, a użytkownik zalogował się ponownie, więc sieć VPN powinna próbować połączyć się ponownie.
UIEvent
Wyliczenie jest używane przez platformę do wskazywania zdarzenia, które wywołało funkcję onUIEvent
.
Typ wyliczeniowy
"showAddDialog"
Zażąda, aby klient VPN wyświetlił okno dialogowe konfiguracji dodawania użytkownika.
"showConfigureDialog"
Zażąda od klienta VPN wyświetlenia okna ustawień konfiguracji.
VpnConnectionState
Klient VPN informuje platformę o jej bieżącym stanie. Wyliczenie jest używane przez klienta VPN. Pomaga to przekazywać użytkownikowi wartościowe komunikaty.
Typ wyliczeniowy
"linked"
Określa, że udało się nawiązać połączenie VPN.
"failure"
Wskazuje, że nie udało się nawiązać połączenia VPN.
Metody
createConfig()
chrome.vpnProvider.createConfig(
name: string,
callback?: function,
)
Tworzy nową konfigurację VPN, która będzie stosowana w wielu sesjach logowania użytkownika.
Parametry
-
nazwa
string,
Nazwa konfiguracji VPN.
-
wywołanie zwrotne
funkcja opcjonalnie
Parametr
callback
wygląda tak:(id: string) => void
-
id
string,
Unikalny identyfikator utworzonej konfiguracji lub
undefined
w przypadku niepowodzenia.
-
Zwroty
-
Obietnica<string>
Chrome 96 i nowsze wersjeObietnice są obsługiwane w platformie Manifest V3 i nowszych, ale wywołania zwrotne są dostępne na potrzeby zgodności wstecznej. Nie można użyć obu w tym samym wywołaniu funkcji. Obietnica znika z tym samym typem, który jest przekazywany do wywołania zwrotnego.
destroyConfig()
chrome.vpnProvider.destroyConfig(
id: string,
callback?: function,
)
Niszczy konfigurację VPN utworzoną przez rozszerzenie.
Parametry
-
id
string,
Identyfikator konfiguracji sieci VPN do zniszczenia.
-
wywołanie zwrotne
funkcja opcjonalnie
Parametr
callback
wygląda tak:() => void
Zwroty
-
Promise<void>
Chrome 96 i nowsze wersjeObietnice są obsługiwane w platformie Manifest V3 i nowszych, ale wywołania zwrotne są dostępne na potrzeby zgodności wstecznej. Nie można użyć obu w tym samym wywołaniu funkcji. Obietnica znika z tym samym typem, który jest przekazywany do wywołania zwrotnego.
notifyConnectionStateChanged()
chrome.vpnProvider.notifyConnectionStateChanged(
state: VpnConnectionState,
callback?: function,
)
Informuje platformę o stanie sesji VPN. Będzie to działać tylko wtedy, gdy sesja VPN należy do rozszerzenia.
Parametry
-
state
Stan sesji VPN klienta VPN.
-
wywołanie zwrotne
funkcja opcjonalnie
Parametr
callback
wygląda tak:() => void
Zwroty
-
Promise<void>
Chrome 96 i nowsze wersjeObietnice są obsługiwane w platformie Manifest V3 i nowszych, ale wywołania zwrotne są dostępne na potrzeby zgodności wstecznej. Nie można użyć obu w tym samym wywołaniu funkcji. Obietnica znika z tym samym typem, który jest przekazywany do wywołania zwrotnego.
sendPacket()
chrome.vpnProvider.sendPacket(
data: ArrayBuffer,
callback?: function,
)
Wysyła pakiet IP przez tunel utworzony dla sesji VPN. Będzie to działać tylko wtedy, gdy sesja VPN należy do rozszerzenia.
Parametry
-
dane
ArrayBuffer
Pakiet IP, który ma zostać wysłany do platformy.
-
wywołanie zwrotne
funkcja opcjonalnie
Parametr
callback
wygląda tak:() => void
Zwroty
-
Promise<void>
Chrome 96 i nowsze wersjeObietnice są obsługiwane w platformie Manifest V3 i nowszych, ale wywołania zwrotne są dostępne na potrzeby zgodności wstecznej. Nie można użyć obu w tym samym wywołaniu funkcji. Obietnica znika z tym samym typem, który jest przekazywany do wywołania zwrotnego.
setParameters()
chrome.vpnProvider.setParameters(
parameters: Parameters,
callback?: function,
)
Ustawia parametry sesji VPN. Powinna ona zostać wywołana natychmiast po otrzymaniu parametru "connected"
z platformy. Będzie to działać tylko wtedy, gdy sesja VPN należy do rozszerzenia.
Parametry
-
Parametry
Parametry sesji VPN.
-
wywołanie zwrotne
funkcja opcjonalnie
Parametr
callback
wygląda tak:() => void
Zwroty
-
Promise<void>
Chrome 96 i nowsze wersjeObietnice są obsługiwane w platformie Manifest V3 i nowszych, ale wywołania zwrotne są dostępne na potrzeby zgodności wstecznej. Nie można użyć obu w tym samym wywołaniu funkcji. Obietnica znika z tym samym typem, który jest przekazywany do wywołania zwrotnego.
Wydarzenia
onConfigCreated
chrome.vpnProvider.onConfigCreated.addListener(
callback: function,
)
Wywoływane, gdy platforma tworzy konfigurację rozszerzenia.
Parametry
-
wywołanie zwrotne
funkcja
Parametr
callback
wygląda tak:(id: string, name: string, data: object) => void
-
id
string,
-
nazwa
string,
-
dane
obiekt
-
onConfigRemoved
chrome.vpnProvider.onConfigRemoved.addListener(
callback: function,
)
Wywoływane, gdy konfiguracja utworzona przez rozszerzenie zostanie usunięta przez platformę.
Parametry
-
wywołanie zwrotne
funkcja
Parametr
callback
wygląda tak:(id: string) => void
-
id
string,
-
onPacketReceived
chrome.vpnProvider.onPacketReceived.addListener(
callback: function,
)
Wywoływane, gdy pakiet IP zostaje odebrany przez tunel dla sesji VPN należącej do rozszerzenia.
Parametry
-
wywołanie zwrotne
funkcja
Parametr
callback
wygląda tak:(data: ArrayBuffer) => void
-
dane
ArrayBuffer
-
onPlatformMessage
chrome.vpnProvider.onPlatformMessage.addListener(
callback: function,
)
Wywoływane, gdy z platformy zostanie odebrany komunikat dotyczący konfiguracji VPN należącej do rozszerzenia.
Parametry
-
wywołanie zwrotne
funkcja
Parametr
callback
wygląda tak:(id: string, message: PlatformMessage, error: string) => void
-
id
string,
-
wiadomość
-
error
string,
-
onUIEvent
chrome.vpnProvider.onUIEvent.addListener(
callback: function,
)
Wywoływane, gdy w interfejsie występuje zdarzenie dotyczące rozszerzenia. Zdarzenia interfejsu to sygnały z platformy, które wskazują aplikacji, że użytkownikowi musi wyświetlić się okno interfejsu.