chrome.vpnProvider

説明

chrome.vpnProvider API を使用して VPN クライアントを実装します。

権限

vpnProvider

対象

Chrome 43 以降 ChromeOS のみ をご覧ください。

用途

vpnProvider の一般的な使用方法は次のとおりです。

  • createConfig メソッドを使用して VPN 構成を作成します。VPN 構成は永続的なエントリで、ネイティブの ChromeOS UI でユーザーに表示されます。ユーザーはリストから VPN 構成を選択して、接続または接続解除できます。

  • イベント onPlatformMessageonPacketReceivedonConfigRemoved にリスナーを追加します。

  • ユーザーが VPN 構成に接続すると、onPlatformMessage がメッセージ "connected" とともに受信されます。メッセージ "connected""disconnected" の間の期間を VPN セッションと呼びます。この期間中は、メッセージを受信した拡張機能が VPN セッションを所有していると見なされます。

  • VPN サーバーへの接続を開始し、VPN クライアントを起動します。

  • setParameters を使用して接続のパラメータを設定します。

  • notifyConnectionStateChanged を使用して接続状態を "connected" として通知します。

  • 上記の手順がエラーなしで完了すると、ChromeOS のネットワーク スタックへの仮想トンネルが作成されます。IP パケットは sendPacket を使用してトンネル経由で送信できます。ChromeOS デバイスから送信されたパケットは、イベント onPacketReceived を使用して受信されます。

  • ユーザーが VPN 設定から切断すると、onPlatformMessage がメッセージ "disconnected" とともに呼び出されます。

  • VPN 構成が不要になった場合は、destroyConfig を使用して破棄できます。

Parameters

プロパティ

  • 住所

    文字列

    VPN インターフェースの IP アドレス(CIDR 表記)。現在サポートされているモードは IPv4 のみです。

  • broadcastAddress

    文字列(省略可)

    VPN インターフェースのブロードキャスト アドレス。(デフォルト: IP アドレスとマスクから推定)

  • dnsServers

    string[]

    DNS サーバーの IP のリスト。

  • domainSearch

    文字列 [] 省略可

    検索ドメインのリスト。(デフォルト: 検索ドメインなし)

  • exclusionList

    string[]

    CIDR 表記の IP ブロックリストへのネットワーク トラフィックをトンネルから除外します。これを使用して、VPN サーバーとの間のトラフィックをバイパスできます。多くのルールが宛先と一致する場合は、一致する接頭辞が最も長いルールが優先されます。同じ CIDR ブロックに対応するエントリは重複として扱われます。照合された(exclusionList + InclusionList)リスト内の重複は除外され、除外される正確な重複エントリは未定義になります。

  • inclusionList

    string[]

    トンネルへの CIDR 表記の IP ブロックリストへのネットワーク トラフィックを含めます。このパラメータを使用して、スプリット トンネルを設定できます。デフォルトでは、トラフィックはトンネルに送信されません。エントリ「0.0.0.0/0」を追加するすべてのユーザー トラフィックがトンネルにリダイレクトされます。多くのルールが宛先と一致する場合は、一致する接頭辞が最も長いルールが優先されます。同じ CIDR ブロックに対応するエントリは重複として扱われます。照合された(exclusionList + InclusionList)リスト内の重複は除外され、除外される正確な重複エントリは未定義になります。

  • mtu

    文字列(省略可)

    VPN インターフェースの MTU 設定。(デフォルト: 1,500 バイト)。

  • 再接続

    文字列(省略可)

    Chrome 51 以降

    VPN 拡張機能で自動再接続を実装するかどうか。

    true の場合、linkDownlinkUplinkChangedsuspendresume プラットフォーム メッセージを使用して、それぞれのイベントが通知されます。false の場合、ネットワーク トポロジが変更されると VPN が強制的に切断され、ユーザーが手動で再接続する必要があります。(デフォルト: false)。

    このプロパティは Chrome 51 で新たに導入されました。それより前のバージョンでは例外が生成されます。try/catch を使用すると、ブラウザのサポートに基づいて条件付きでこの機能を有効にできます。

PlatformMessage

この列挙型は、VPN セッションのステータスをクライアントに通知するためにプラットフォームによって使用されます。

列挙型

「Connected」
VPN 構成が接続されたことを示します。

"disconnect"
VPN 構成が切断されたことを示します。

"error"
VPN 接続でエラーが発生したことを示します(タイムアウトなど)。エラーの説明は onPlatformMessage の error 引数として指定されます。

"linkDown"
デフォルトの物理ネットワーク接続がダウンしていることを示します。

"linkUp"
デフォルトの物理ネットワーク接続がバックアップされていることを示します。

"linkChanged"
デフォルトの物理ネットワーク接続が変更されたことを示します(例:(Wi-Fi -> モバイル)。

「suspend」
OS が一時停止の準備をしているので、VPN の接続が切断されます。拡張機能は、一時停止する前にこのイベントを受信する保証はありません。

"resume"
OS が再開され、ユーザーが再度ログインしたため、VPN の再接続が試行されることを示します。

UIEvent

この列挙型は、onUIEvent をトリガーしたイベントを示すためにプラットフォームによって使用されます。

列挙型

"showAddDialog"
VPN クライアントが構成の追加ダイアログ ボックスをユーザーに表示するようリクエストします。

"showConfigureDialog"
VPN クライアントが構成設定ダイアログ ボックスをユーザーに表示するようリクエストします。

VpnConnectionState

この列挙型は、VPN クライアントがプラットフォームに現在の状態を通知するために使用されます。これにより、ユーザーに有意義なメッセージを伝えることができます。

列挙型

"Connected"
VPN 接続が成功したことを示します。

"failure"
VPN 接続が失敗したことを指定します。

メソッド

createConfig()

<ph type="x-smartling-placeholder"></ph> 約束
chrome.vpnProvider.createConfig(
  name: string,
  callback?: function,
)

ユーザーの複数のログイン セッション間で維持される新しい VPN 構成を作成します。

パラメータ

  • name

    文字列

    VPN 構成の名前。

  • callback

    関数(省略可)

    callback パラメータは次のようになります。

    (id: string) => void

    • id

      文字列

      作成された構成の一意の ID。失敗した場合は undefined

戻り値

  • Promise<文字列>

    Chrome 96 以降

    Promise は Manifest V3 以降でのみサポートされています。他のプラットフォームではコールバックを使用する必要があります。

destroyConfig()

<ph type="x-smartling-placeholder"></ph> 約束
chrome.vpnProvider.destroyConfig(
  id: string,
  callback?: function,
)

拡張機能によって作成された VPN 構成を破棄します。

パラメータ

  • id

    文字列

    破棄する VPN 構成の ID。

  • callback

    関数(省略可)

    callback パラメータは次のようになります。

    () => void

戻り値

  • 約束 <void>

    Chrome 96 以降

    Promise は Manifest V3 以降でのみサポートされています。他のプラットフォームではコールバックを使用する必要があります。

notifyConnectionStateChanged()

<ph type="x-smartling-placeholder"></ph> 約束
chrome.vpnProvider.notifyConnectionStateChanged(
  state: VpnConnectionState,
  callback?: function,
)

VPN セッションの状態をプラットフォームに通知します。拡張機能が VPN セッションを所有している場合にのみ成功します。

パラメータ

  • VPN クライアントの VPN セッションの状態。

  • callback

    関数(省略可)

    callback パラメータは次のようになります。

    () => void

戻り値

  • 約束 <void>

    Chrome 96 以降

    Promise は Manifest V3 以降でのみサポートされています。他のプラットフォームではコールバックを使用する必要があります。

sendPacket()

<ph type="x-smartling-placeholder"></ph> 約束
chrome.vpnProvider.sendPacket(
  data: ArrayBuffer,
  callback?: function,
)

VPN セッション用に作成されたトンネルを介して IP パケットを送信します。拡張機能が VPN セッションを所有している場合にのみ成功します。

パラメータ

  • データ

    ArrayBuffer

    プラットフォームに送信される IP パケット。

  • callback

    関数(省略可)

    callback パラメータは次のようになります。

    () => void

戻り値

  • 約束 <void>

    Chrome 96 以降

    Promise は Manifest V3 以降でのみサポートされています。他のプラットフォームではコールバックを使用する必要があります。

setParameters()

<ph type="x-smartling-placeholder"></ph> 約束
chrome.vpnProvider.setParameters(
  parameters: Parameters,
  callback?: function,
)

VPN セッションのパラメータを設定します。これは、プラットフォームから "connected" を受信した直後に呼び出す必要があります。拡張機能が VPN セッションを所有している場合にのみ成功します。

パラメータ

  • パラメータ

    VPN セッションのパラメータ。

  • callback

    関数(省略可)

    callback パラメータは次のようになります。

    () => void

戻り値

  • 約束 <void>

    Chrome 96 以降

    Promise は Manifest V3 以降でのみサポートされています。他のプラットフォームではコールバックを使用する必要があります。

イベント

onConfigCreated

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

プラットフォームによって拡張機能の構成が作成されるとトリガーされます。

パラメータ

  • callback

    関数

    callback パラメータは次のようになります。

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

    • id

      文字列

    • name

      文字列

    • データ

      オブジェクト

onConfigRemoved

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

拡張機能によって作成された構成がプラットフォームによって削除されるとトリガーされます。

パラメータ

  • callback

    関数

    callback パラメータは次のようになります。

    (id: string) => void

    • id

      文字列

onPacketReceived

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

拡張機能が所有する VPN セッションの IP パケットがトンネル経由で受信されるとトリガーされます。

パラメータ

  • callback

    関数

    callback パラメータは次のようになります。

    (data: ArrayBuffer) => void

    • データ

      ArrayBuffer

onPlatformMessage

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

拡張機能が所有する VPN 構成に関するメッセージをプラットフォームから受信するとトリガーされます。

パラメータ

  • callback

    関数

    callback パラメータは次のようになります。

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

onUIEvent

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

拡張機能の UI イベントがあるとトリガーされます。UI イベントは、UI ダイアログをユーザーに表示する必要があることをアプリに示す、プラットフォームからのシグナルです。

パラメータ

  • callback

    関数

    callback パラメータは次のようになります。

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

    • イベント
    • id

      文字列(省略可)