chrome.vpnProvider

説明

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

権限

vpnProvider

対象

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

コンセプトと使用方法

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

  • createConfig() を呼び出して VPN 構成を作成します。VPN 設定は永続的なエントリで、ChromeOS の UI でユーザーに表示されます。ユーザーはリストから VPN 構成を選択して、接続または接続解除できます。

  • onPlatformMessage イベント、onPacketReceived イベント、onConfigRemoved イベントにリスナーを追加します。

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

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

  • setParameters() を呼び出して、接続のパラメータを設定します。

  • notifyConnectionStateChanged() を呼び出して、接続状態を "connected" として通知します。

  • 上記のステップをエラーなしで完了すると、ChromeOS のネットワーク スタックへの仮想トンネルが作成されます。sendPacket() を呼び出すと、このトンネルを介して IP パケットを送信できます。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 以降でサポートされていますが、 下位互換性が確保されます同じ関数呼び出しで両方を使用することはできません。「 Promise はコールバックに渡された型と同じ型で解決されます。

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 以降でサポートされていますが、 下位互換性が確保されます同じ関数呼び出しで両方を使用することはできません。「 Promise はコールバックに渡された型と同じ型で解決されます。

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 以降でサポートされていますが、 下位互換性が確保されます同じ関数呼び出しで両方を使用することはできません。「 Promise はコールバックに渡された型と同じ型で解決されます。

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 以降でサポートされていますが、 下位互換性が確保されます同じ関数呼び出しで両方を使用することはできません。「 Promise はコールバックに渡された型と同じ型で解決されます。

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 以降でサポートされていますが、 下位互換性が確保されます同じ関数呼び出しで両方を使用することはできません。「 Promise はコールバックに渡された型と同じ型で解決されます。

イベント

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

      文字列(省略可)