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

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

ค่าแจกแจง

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

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

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

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

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

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

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

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

UIEvent

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

ค่าแจกแจง

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

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

VpnConnectionState

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

ค่าแจกแจง

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

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

เมธอด

createConfig()

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

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

พารามิเตอร์

  • ชื่อ

    สตริง

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

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

  • Promise<string>

    Chrome 96 ขึ้นไป

destroyConfig()

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

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

พารามิเตอร์

  • id

    สตริง

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

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

  • Promise<void>

    Chrome 96 ขึ้นไป

notifyConnectionStateChanged()

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

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

พารามิเตอร์

  • รัฐ

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

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

  • Promise<void>

    Chrome 96 ขึ้นไป

sendPacket()

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

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

พารามิเตอร์

  • เพิ่มเติม

    ArrayBuffer

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

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

  • Promise<void>

    Chrome 96 ขึ้นไป

setParameters()

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

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

พารามิเตอร์

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

  • Promise<void>

    Chrome 96 ขึ้นไป

กิจกรรม

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

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