คำอธิบาย
ใช้ chrome.vpnProvider API เพื่อติดตั้งใช้งานไคลเอ็นต์ VPN
สิทธิ์
vpnProviderความพร้อมใช้งาน
แนวคิดและการใช้งาน
การใช้งาน browser.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 ใหม่ที่คงอยู่ตลอดเซสชันการเข้าสู่ระบบหลายเซสชันของผู้ใช้
พารามิเตอร์
-
name
สตริง
ชื่อของการกำหนดค่า 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 เป็นของส่วนขยายเท่านั้น
พารามิเตอร์
-
พารามิเตอร์
พารามิเตอร์สำหรับเซสชัน VPN
การคืนสินค้า
-
Promise<void>
Chrome 96 ขึ้นไปแสดงผล Promise ซึ่งจะได้รับการแก้ไขเมื่อตั้งค่าพารามิเตอร์ หรือปฏิเสธหากมีข้อผิดพลาด
กิจกรรม
onConfigCreated
chrome.vpnProvider.onConfigCreated.addListener(
callback: function,
)
ทริกเกอร์เมื่อแพลตฟอร์มสร้างการกำหนดค่าสำหรับส่วนขยาย
พารามิเตอร์
-
callback
ฟังก์ชัน
พารามิเตอร์
callbackมีลักษณะดังนี้(id: string, name: string, data: object) => void
-
id
สตริง
-
name
สตริง
-
เพิ่มเติม
ออบเจ็กต์
-
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 ต่อผู้ใช้