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

    สตริง ไม่บังคับ

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

  • dnsServers

    string[]

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

  • domainSearch

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

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

  • exclusionList

    string[]

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

  • inclusionList

    string[]

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

  • mtu

    สตริง ไม่บังคับ

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

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

    สตริง ไม่บังคับ

    Chrome 51 ขึ้นไป

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

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

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

PlatformMessage

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

ค่าแจกแจง

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

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

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

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

"linkUp"
ระบุว่าการเชื่อมต่อเครือข่ายจริงเริ่มต้นกลับมาทำงานอีกครั้ง

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

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

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

UIEvent

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

ค่าแจกแจง

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

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

VpnConnectionState

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

ค่าแจกแจง

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

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

เมธอด

createConfig()

chrome.vpnProvider.createConfig(
  name: string,
)
: Promise<string>

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

พารามิเตอร์

  • ชื่อ

    สตริง

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

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

  • Promise<string>

    Chrome 96 ขึ้นไป

    แสดงผล Promise ซึ่งจะได้รับการแก้ไขเมื่อสร้างการกำหนดค่า หรือปฏิเสธหากมีข้อผิดพลาด

destroyConfig()

chrome.vpnProvider.destroyConfig(
  id: string,
)
: Promise<void>

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

พารามิเตอร์

  • id

    สตริง

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

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

  • Promise<void>

    Chrome 96 ขึ้นไป

    แสดงผล Promise ซึ่งจะได้รับการแก้ไขเมื่อทำลายการกำหนดค่า หรือปฏิเสธหากมีข้อผิดพลาด

notifyConnectionStateChanged()

chrome.vpnProvider.notifyConnectionStateChanged(
  state: VpnConnectionState,
)
: Promise<void>

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

พารามิเตอร์

  • รัฐ

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

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

  • Promise<void>

    Chrome 96 ขึ้นไป

    แสดงผล Promise ซึ่งจะได้รับการแก้ไขเมื่อการแจ้งเตือนเสร็จสมบูรณ์ หรือปฏิเสธหากมีข้อผิดพลาด

sendPacket()

chrome.vpnProvider.sendPacket(
  data: ArrayBuffer,
)
: Promise<void>

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

พารามิเตอร์

  • เพิ่มเติม

    ArrayBuffer

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

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

  • Promise<void>

    Chrome 96 ขึ้นไป

    แสดงผล Promise ซึ่งจะได้รับการแก้ไขเมื่อส่งแพ็กเก็ตหรือปฏิเสธหากมีข้อผิดพลาด

setParameters()

chrome.vpnProvider.setParameters(
  parameters: Parameters,
)
: Promise<void>

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

พารามิเตอร์

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

  • Promise<void>

    Chrome 96 ขึ้นไป

    แสดงผล Promise ซึ่งจะได้รับการแก้ไขเมื่อตั้งค่าพารามิเตอร์ หรือปฏิเสธหากมีข้อผิดพลาด

กิจกรรม

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

    • เพิ่มเติม

      ArrayBuffer

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

    • เหตุการณ์
    • id

      สตริง ไม่บังคับ