คำอธิบาย
ใช้ 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
สตริง ไม่บังคับ
ที่อยู่บรอดแคสต์สำหรับอินเทอร์เฟซ 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 เป็นของส่วนขยายเท่านั้น
พารามิเตอร์
-
พารามิเตอร์
พารามิเตอร์สำหรับเซสชัน 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 ต่อผู้ใช้