chrome.vpnProvider

คำอธิบาย

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

สิทธิ์

vpnProvider

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

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

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

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

  • สร้างการกำหนดค่า VPN โดยการเรียกใช้ createConfig() การกำหนดค่า VPN เป็นรายการถาวรที่แสดงต่อผู้ใช้ใน UI ของ ChromeOS ผู้ใช้สามารถเลือกการกำหนดค่า VPN จากรายการและเชื่อมต่อหรือยกเลิกการเชื่อมต่อกับ 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

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

  • จัดการ

    string

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

  • broadcastAddress

    string ไม่บังคับ

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

  • dnsServers

    สตริง[]

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

  • domainSearch

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

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

  • exclusionList

    สตริง[]

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

  • inclusionList

    สตริง[]

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

  • mtu

    string ไม่บังคับ

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

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

    string ไม่บังคับ

    Chrome 51 ขึ้นไป

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

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

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

PlatformMessage

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

ค่าแจกแจง

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

"disconnect"
ระบุว่าไม่มีการเชื่อมต่อการกำหนดค่า VPN

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

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

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

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

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

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

UIEvent

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

ค่าแจกแจง

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

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

VpnConnectionState

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

ค่าแจกแจง

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

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

วิธีการ

createConfig()

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

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

พารามิเตอร์

  • ชื่อ

    string

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

  • Callback

    ฟังก์ชัน ไม่บังคับ

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

    (id: string)=>void

    • id

      string

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

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

  • คำสัญญา<string>

    Chrome 96 ขึ้นไป

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

destroyConfig()

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

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

พารามิเตอร์

  • id

    string

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

  • Callback

    ฟังก์ชัน ไม่บังคับ

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

    ()=>void

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

  • Promise<void>

    Chrome 96 ขึ้นไป

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

notifyConnectionStateChanged()

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

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

พารามิเตอร์

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

  • Callback

    ฟังก์ชัน ไม่บังคับ

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

    ()=>void

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

  • Promise<void>

    Chrome 96 ขึ้นไป

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

sendPacket()

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

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

พารามิเตอร์

  • ข้อมูล

    ArrayBuffer

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

  • Callback

    ฟังก์ชัน ไม่บังคับ

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

    ()=>void

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

  • Promise<void>

    Chrome 96 ขึ้นไป

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

setParameters()

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

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

พารามิเตอร์

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

    พารามิเตอร์ของเซสชัน VPN

  • Callback

    ฟังก์ชัน ไม่บังคับ

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

    ()=>void

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

  • Promise<void>

    Chrome 96 ขึ้นไป

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

กิจกรรม

onConfigCreated

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

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

พารามิเตอร์

  • Callback

    ฟังก์ชัน

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

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

    • id

      string

    • ชื่อ

      string

    • ข้อมูล

      ออบเจ็กต์

onConfigRemoved

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

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

พารามิเตอร์

  • Callback

    ฟังก์ชัน

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

    (id: string)=>void

    • id

      string

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

onUIEvent

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

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

พารามิเตอร์

  • Callback

    ฟังก์ชัน

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

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

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

      string ไม่บังคับ