คำอธิบาย
ใช้ chrome.vpnProvider
API เพื่อใช้ไคลเอ็นต์ VPN
สิทธิ์
vpnProvider
ความพร้อมใช้งาน
แนวคิดและการใช้งาน
การใช้งานทั่วไปของ 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 ต้องแสดงต่อผู้ใช้