chrome.vpnProvider

คำอธิบาย

ใช้ chrome.vpnProvider API เพื่อใช้ไคลเอ็นต์ VPN

สิทธิ์

vpnProvider

ความพร้อมใช้งาน

Chrome 43 ขึ้นไป ChromeOS เท่านั้น

แนวคิดและการใช้งาน

การใช้งานทั่วไปของ chrome.vpnProvider มีดังนี้

  • สร้างการกำหนดค่า VPN โดยการเรียกใช้ createConfig() การกำหนดค่า VPN คือรายการที่แสดงให้ผู้ใช้เห็นใน UI ของ ChromeOS อย่างถาวร ผู้ใช้สามารถเลือกการกำหนดค่า VPN จากรายการแล้วเชื่อมต่อหรือยกเลิกการเชื่อมต่อจากรายการได้

  • เพิ่ม Listener เหตุการณ์ onPlatformMessage, onPacketReceived และ onConfigRemoved

  • เมื่อผู้ใช้เชื่อมต่อกับการกำหนดค่า VPN คุณจะได้รับ onPlatformMessage พร้อมข้อความ "connected" ระยะเวลาระหว่างข้อความ "connected" ถึง "disconnected" จะเรียกว่า "เซสชัน VPN" ซึ่งในช่วงเวลานี้ ส่วนขยายที่ได้รับข้อความจะเป็นเจ้าของเซสชัน VPN

  • เริ่มการเชื่อมต่อกับเซิร์ฟเวอร์ VPN และเริ่มไคลเอ็นต์ VPN

  • ตั้งค่าพารามิเตอร์ของการเชื่อมต่อโดยเรียกใช้ setParameters()

  • แจ้งสถานะการเชื่อมต่อเป็น "connected" โดยการเรียกใช้ notifyConnectionStateChanged()

  • เมื่อทำขั้นตอนก่อนหน้าเสร็จสมบูรณ์โดยไม่มีข้อผิดพลาด ระบบจะสร้างอุโมงค์เสมือนไปยังสแต็กเครือข่ายของ ChromeOS คุณสามารถส่งแพ็กเก็ต IP ผ่านอุโมงค์ข้อมูลได้ด้วยการเรียกใช้ sendPacket() และจะได้รับแพ็กเกตทั้งหมดที่เกิดในอุปกรณ์ ChromeOS โดยใช้เครื่องจัดการเหตุการณ์ onPacketReceived

  • เมื่อผู้ใช้ยกเลิกการเชื่อมต่อจากการกำหนดค่า VPN onPlatformMessage จะเริ่มทำงานพร้อมข้อความ "disconnected"

  • หากไม่จำเป็นต้องกำหนดค่า VPN แล้ว คุณสามารถทำลายได้โดยเรียกใช้ destroyConfig()

ประเภท

Parameters

พร็อพเพอร์ตี้

  • ที่อยู่

    สตริง

    ที่อยู่ IP สำหรับอินเทอร์เฟซ VPN ในรูปแบบ CIDR ปัจจุบันโหมดใดโหมดหนึ่งที่สนับสนุน IPv4 เท่านั้น

  • broadcastAddress

    string ไม่บังคับ

    ที่อยู่บรอดแคสต์สำหรับอินเทอร์เฟซ VPN (ค่าเริ่มต้น: อนุมานจากที่อยู่ IP และมาสก์)

  • dnsServers

    สตริง[]

    รายการ IP สำหรับเซิร์ฟเวอร์ DNS

  • domainSearch

    string[] ไม่บังคับ

    รายการโดเมนการค้นหา (ค่าเริ่มต้น: ไม่มีโดเมนการค้นหา)

  • exclusionList

    สตริง[]

    ยกเว้นการจราจรของข้อมูลในเครือข่ายลงในรายการบล็อก IP ในรูปแบบ CIDR จากอุโมงค์ข้อมูล ซึ่งใช้เพื่อข้ามการรับส่งข้อมูลไปยังและจากเซิร์ฟเวอร์ VPN ได้ เมื่อมีกฎหลายข้อตรงกับปลายทาง กฎที่มีคำนำหน้าตรงกันยาวที่สุดจะเป็นผู้ชนะ รายการที่สอดคล้องกับบล็อก CIDR เดียวกันจะถือว่าเป็นรายการที่ซ้ำกัน ข้อมูลที่ซ้ำกันดังกล่าวในรายการที่จัดเรียง (exclusionList + IntegrationList) จะถูกลบและระบบจะไม่ระบุรายการที่ซ้ำกันที่จะลบออก

  • inclusionList

    สตริง[]

    รวมการจราจรของข้อมูลในเครือข่ายไปยังรายการบล็อก IP ในรูปแบบ CIDR ไปยังอุโมงค์ข้อมูล คุณใช้พารามิเตอร์นี้เพื่อสร้างอุโมงค์แบบแยกได้ โดยค่าเริ่มต้น ระบบจะไม่เปลี่ยนเส้นทางการจราจรไปยังอุโมงค์ข้อมูล การเพิ่มรายการ "0.0.0.0/0" รายการนี้จะทำให้การรับส่งข้อมูลของผู้ใช้ทั้งหมดเปลี่ยนเส้นทางไปยังอุโมงค์ข้อมูล เมื่อมีกฎหลายข้อตรงกับปลายทาง กฎที่มีคำนำหน้าตรงกันยาวที่สุดจะเป็นผู้ชนะ รายการที่สอดคล้องกับบล็อก CIDR เดียวกันจะถือว่าเป็นรายการที่ซ้ำกัน ข้อมูลที่ซ้ำกันดังกล่าวในรายการที่จัดเรียง (exclusionList + IntegrationList) จะถูกลบและระบบจะไม่ระบุรายการที่ซ้ำกันที่จะลบออก

  • mtu

    string ไม่บังคับ

    การตั้งค่า MTU สำหรับอินเทอร์เฟซ VPN (ค่าเริ่มต้น: 1500 ไบต์)

  • เชื่อมต่ออีกครั้ง

    string ไม่บังคับ

    Chrome 51 ขึ้นไป

    ส่วนขยาย VPN ใช้การเชื่อมต่อใหม่อัตโนมัติหรือไม่

    หากเป็นจริง ระบบจะใช้ข้อความแพลตฟอร์ม linkDown, linkUp, linkChanged, suspend และ resume เพื่อส่งสัญญาณเหตุการณ์ที่เกี่ยวข้อง หากเป็น "เท็จ" ระบบจะบังคับให้ยกเลิกการเชื่อมต่อ VPN หากโทโพโลยีเครือข่ายมีการเปลี่ยนแปลง และผู้ใช้จะต้องเชื่อมต่อใหม่ด้วยตนเอง (ค่าเริ่มต้น: เท็จ)

    พร็อพเพอร์ตี้นี้เป็นฟีเจอร์ใหม่ใน Chrome 51 ระบบจะสร้างข้อยกเว้นในเวอร์ชันก่อนหน้านี้ สามารถใช้ use/catch เพื่อเปิดใช้ฟีเจอร์ตามเงื่อนไขตามการสนับสนุนเบราว์เซอร์

PlatformMessage

แพลตฟอร์มจะใช้ Enum เพื่อแจ้งไคลเอ็นต์เกี่ยวกับสถานะเซสชัน VPN

ค่าแจกแจง

"เชื่อมต่อแล้ว"
ระบุว่าเชื่อมต่อการกำหนดค่า VPN แล้ว

"disconnected"
บ่งบอกว่ายกเลิกการเชื่อมต่อการกำหนดค่า VPN แล้ว

"error"
ระบุว่าเกิดข้อผิดพลาดในการเชื่อมต่อ VPN เช่น หมดเวลา คำอธิบายข้อผิดพลาดจะระบุเป็นอาร์กิวเมนต์ข้อผิดพลาดที่ onPlatformMessage

"linkDown"
ระบุว่าการเชื่อมต่อเครือข่ายทางกายภาพเริ่มต้นขัดข้อง

"linkUp"
ระบุว่าสำรองข้อมูลการเชื่อมต่อเครือข่ายทางกายภาพเริ่มต้นแล้ว

"linkChanged"
ระบุว่าการเชื่อมต่อเครือข่ายทางกายภาพเริ่มต้นมีการเปลี่ยนแปลง เช่น wifi->mobile.

"ระงับ"
ระบุว่าระบบปฏิบัติการกำลังเตรียมระงับการใช้งาน ทำให้ VPN ควรยกเลิกการเชื่อมต่อ เราไม่รับประกันว่าส่วนขยายนี้จะได้รับรางวัลนี้ก่อนที่จะระงับ

"ดำเนินการต่อ"
ระบุว่าระบบปฏิบัติการกลับมาทำงานอีกครั้งแล้ว และผู้ใช้ได้เข้าสู่ระบบอีกครั้งแล้ว VPN ควรพยายามเชื่อมต่อใหม่

UIEvent

แพลตฟอร์มจะใช้ enum เพื่อระบุเหตุการณ์ที่ทริกเกอร์ onUIEvent

ค่าแจกแจง

"showAddDialog"
ขอให้ไคลเอ็นต์ VPN แสดงกล่องโต้ตอบการเพิ่มการกำหนดค่าให้กับผู้ใช้

"showConfigureDialog"
ขอให้ไคลเอ็นต์ VPN แสดงกล่องโต้ตอบการตั้งค่าการกำหนดค่าให้ผู้ใช้

VpnConnectionState

ไคลเอ็นต์ VPN จะใช้ enum เพื่อแจ้งให้แพลตฟอร์มทราบถึงสถานะปัจจุบันของแพลตฟอร์ม วิธีนี้จะช่วยส่งข้อความที่มีความหมายแก่ผู้ใช้

ค่าแจกแจง

"เชื่อมต่อแล้ว"
ระบุว่าการเชื่อมต่อ VPN สำเร็จ

"failure"
ระบุว่าการเชื่อมต่อ VPN ล้มเหลว

เมธอด

createConfig()

สัญญา
chrome.vpnProvider.createConfig(
  name: string,
  callback?: function,
)

สร้างการกำหนดค่า VPN ใหม่ที่ยังคงอยู่ในเซสชันการเข้าสู่ระบบหลายเซสชันของผู้ใช้

พารามิเตอร์

  • ชื่อ

    สตริง

    ชื่อของการกำหนดค่า VPN

  • Callback

    ไม่บังคับ

    พารามิเตอร์ callback มีลักษณะดังนี้

    (id: string) => void

    • id

      สตริง

      รหัสที่ไม่ซ้ำกันสำหรับการกำหนดค่าที่สร้างขึ้น หรือ undefined เมื่อล้มเหลว

การคืนสินค้า

  • คำมั่นสัญญา<สตริง>

    Chrome 96 ขึ้นไป

    รองรับคำสัญญาในไฟล์ Manifest V3 ขึ้นไป แต่จะมี Callback สำหรับ ความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 อย่างในการเรียกใช้ฟังก์ชันเดียวกันได้ จะมีการแก้ไขด้วยประเภทเดียวกันที่ส่งไปยัง Callback

destroyConfig()

สัญญา
chrome.vpnProvider.destroyConfig(
  id: string,
  callback?: function,
)

ทำลายการกำหนดค่า VPN ที่ส่วนขยายสร้างขึ้น

พารามิเตอร์

  • id

    สตริง

    รหัสของการกำหนดค่า VPN ที่จะทำลาย

  • Callback

    ไม่บังคับ

    พารามิเตอร์ callback มีลักษณะดังนี้

    () => void

การคืนสินค้า

  • คำมั่นสัญญา<โมฆะ>

    Chrome 96 ขึ้นไป

    รองรับคำสัญญาในไฟล์ Manifest V3 ขึ้นไป แต่จะมี Callback สำหรับ ความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 อย่างในการเรียกใช้ฟังก์ชันเดียวกันได้ จะมีการแก้ไขด้วยประเภทเดียวกันที่ส่งไปยัง Callback

notifyConnectionStateChanged()

สัญญา
chrome.vpnProvider.notifyConnectionStateChanged(
  state: VpnConnectionState,
  callback?: function,
)

แจ้งสถานะเซสชัน VPN ให้แพลตฟอร์มทราบ การดำเนินการนี้จะสำเร็จก็ต่อเมื่อส่วนขยายเป็นเจ้าของเซสชัน VPN เท่านั้น

พารามิเตอร์

  • รัฐ

    สถานะเซสชัน VPN ของไคลเอ็นต์ VPN

  • Callback

    ไม่บังคับ

    พารามิเตอร์ callback มีลักษณะดังนี้

    () => void

การคืนสินค้า

  • คำมั่นสัญญา<โมฆะ>

    Chrome 96 ขึ้นไป

    รองรับคำสัญญาในไฟล์ Manifest V3 ขึ้นไป แต่จะมี Callback สำหรับ ความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 อย่างในการเรียกใช้ฟังก์ชันเดียวกันได้ จะมีการแก้ไขด้วยประเภทเดียวกันที่ส่งไปยัง Callback

sendPacket()

สัญญา
chrome.vpnProvider.sendPacket(
  data: ArrayBuffer,
  callback?: function,
)

ส่งแพ็กเก็ต IP ผ่านอุโมงค์ข้อมูลที่สร้างขึ้นสำหรับเซสชัน VPN การดำเนินการนี้จะสำเร็จก็ต่อเมื่อส่วนขยายเป็นเจ้าของเซสชัน VPN เท่านั้น

พารามิเตอร์

  • ข้อมูล

    อาร์เรย์บัฟเฟอร์

    แพ็กเก็ต IP ที่จะส่งไปยังแพลตฟอร์ม

  • Callback

    ไม่บังคับ

    พารามิเตอร์ callback มีลักษณะดังนี้

    () => void

การคืนสินค้า

  • คำมั่นสัญญา<โมฆะ>

    Chrome 96 ขึ้นไป

    รองรับคำสัญญาในไฟล์ Manifest V3 ขึ้นไป แต่จะมี Callback สำหรับ ความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 อย่างในการเรียกใช้ฟังก์ชันเดียวกันได้ จะมีการแก้ไขด้วยประเภทเดียวกันที่ส่งไปยัง Callback

setParameters()

สัญญา
chrome.vpnProvider.setParameters(
  parameters: Parameters,
  callback?: function,
)

ตั้งค่าพารามิเตอร์สำหรับเซสชัน VPN การดำเนินการนี้ควรเรียกใช้ทันทีหลังจากได้รับ "connected" จากแพลตฟอร์ม การดำเนินการนี้จะสำเร็จก็ต่อเมื่อส่วนขยายเป็นเจ้าของเซสชัน VPN เท่านั้น

พารามิเตอร์

  • พารามิเตอร์

    พารามิเตอร์สำหรับเซสชัน VPN

  • Callback

    ไม่บังคับ

    พารามิเตอร์ callback มีลักษณะดังนี้

    () => void

การคืนสินค้า

  • คำมั่นสัญญา<โมฆะ>

    Chrome 96 ขึ้นไป

    รองรับคำสัญญาในไฟล์ Manifest V3 ขึ้นไป แต่จะมี Callback สำหรับ ความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 อย่างในการเรียกใช้ฟังก์ชันเดียวกันได้ จะมีการแก้ไขด้วยประเภทเดียวกันที่ส่งไปยัง Callback

กิจกรรม

onConfigCreated

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

ทริกเกอร์เมื่อแพลตฟอร์มสร้างการกำหนดค่าสำหรับส่วนขยาย

พารามิเตอร์

  • Callback

    ฟังก์ชัน

    พารามิเตอร์ callback มีลักษณะดังนี้

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

    • id

      สตริง

    • ชื่อ

      สตริง

    • ข้อมูล

      ออบเจ็กต์

onConfigRemoved

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

ทริกเกอร์เมื่อแพลตฟอร์มนำการกำหนดค่าที่สร้างโดยส่วนขยายออก

พารามิเตอร์

  • Callback

    ฟังก์ชัน

    พารามิเตอร์ callback มีลักษณะดังนี้

    (id: string) => void

    • id

      สตริง

onPacketReceived

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

ทริกเกอร์เมื่อได้รับแพ็กเก็ต IP ผ่านอุโมงค์ข้อมูลสำหรับเซสชัน VPN ของส่วนขยาย

พารามิเตอร์

  • Callback

    ฟังก์ชัน

    พารามิเตอร์ callback มีลักษณะดังนี้

    (data: ArrayBuffer) => void

    • ข้อมูล

      อาร์เรย์บัฟเฟอร์

onPlatformMessage

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

ทริกเกอร์เมื่อได้รับข้อความจากแพลตฟอร์มสำหรับการกำหนดค่า VPN ที่เป็นของส่วนขยาย

พารามิเตอร์

  • Callback

    ฟังก์ชัน

    พารามิเตอร์ callback มีลักษณะดังนี้

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

    • id

      สตริง

    • ข้อความ
    • ข้อผิดพลาด

      สตริง

onUIEvent

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

ทริกเกอร์เมื่อมีเหตุการณ์ UI สำหรับส่วนขยาย เหตุการณ์ UI คือสัญญาณจากแพลตฟอร์มที่บอกให้แอปทราบว่ากล่องโต้ตอบ UI ต้องแสดงต่อผู้ใช้

พารามิเตอร์

  • Callback

    ฟังก์ชัน

    พารามิเตอร์ callback มีลักษณะดังนี้

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

    • event
    • id

      string ไม่บังคับ