Nội dung mô tả
Dùng API chrome.vpnProvider
để triển khai ứng dụng VPN.
Quyền
vpnProvider
Phạm vi cung cấp
Cách sử dụng
Cách sử dụng vpnProvider thông thường như sau:
Tạo cấu hình VPN bằng phương thức
createConfig
. Cấu hình VPN là một mục nhập cố định mà người dùng thấy được trong giao diện người dùng ChromeOS gốc. Người dùng có thể chọn một cấu hình VPN trong danh sách và kết nối với cấu hình đó hoặc ngắt kết nối khỏi cấu hình đó.Thêm trình nghe vào các sự kiện
onPlatformMessage
,onPacketReceived
vàonConfigRemoved
.Khi người dùng kết nối với cấu hình VPN,
onPlatformMessage
sẽ nhận được thông báo"connected"
. Chúng tôi gọi khoảng thời gian giữa các thông báo"connected"
và"disconnected"
là một phiên VPN. Trong khoảng thời gian này, tiện ích nhận được tin nhắn được cho là sở hữu phiên VPN.Bắt đầu kết nối với máy chủ VPN và khởi động ứng dụng VPN.
Đặt thông số của kết nối bằng
setParameters
.Thông báo trạng thái kết nối dưới dạng
"connected"
bằngnotifyConnectionStateChanged
.Khi bạn hoàn tất các bước trên mà không gặp lỗi, một đường hầm ảo sẽ được tạo tới ngăn xếp mạng của ChromeOS. Các gói IP có thể được gửi qua đường hầm bằng cách sử dụng
sendPacket
và mọi gói bắt nguồn từ thiết bị ChromeOS sẽ được nhận bằng sự kiệnonPacketReceived
.Khi người dùng ngắt kết nối khỏi cấu hình VPN,
onPlatformMessage
sẽ được kích hoạt cùng với thông báo"disconnected"
.Nếu không cần cấu hình VPN nữa, bạn có thể huỷ cấu hình đó bằng
destroyConfig
.
Loại
Parameters
Thuộc tính
-
xử lý
string
Địa chỉ IP cho giao diện VPN trong ký hiệu Định tuyến liên miền không phân lớp (CIDR). IPv4 hiện là chế độ duy nhất được hỗ trợ.
-
broadcastAddress
chuỗi không bắt buộc
Địa chỉ truyền tin cho giao diện VPN. (mặc định: suy luận từ địa chỉ IP và mặt nạ)
-
dnsServers
chuỗi[]
Danh sách IP của máy chủ DNS.
-
domainSearch
string[] không bắt buộc
Danh sách các miền tìm kiếm. (mặc định: không có miền tìm kiếm)
-
exclusionList
chuỗi[]
Loại trừ lưu lượng truy cập mạng ra khỏi danh sách các khối IP trong ký hiệu Định tuyến liên miền không lớp (CIDR) khỏi đường hầm. Bạn có thể dùng khoá này để bỏ qua lưu lượng truy cập đến và đi từ máy chủ VPN. Khi nhiều quy tắc khớp với một đích đến, quy tắc có tiền tố dài nhất sẽ chiến thắng. Các mục nhập tương ứng với cùng một khối CIDR được coi là trùng lặp. Những nội dung trùng lặp như vậy trong danh sách được đối chiếu (exclusionList +includedList) sẽ bị loại bỏ, còn mục nhập trùng lặp chính xác sẽ bị loại bỏ thì không xác định.
-
inclusionList
chuỗi[]
Đưa lưu lượng truy cập mạng vào danh sách khối IP trong ký hiệu CIDR cho đường hầm. Bạn có thể dùng tham số này để thiết lập một đường hầm phân tách. Theo mặc định, không có giao thông nào được hướng vào đường hầm. Thêm mục nhập "0.0.0.0/0" vào danh sách này sẽ nhận được tất cả lưu lượng người dùng được chuyển hướng đến đường hầm. Khi nhiều quy tắc khớp với một đích đến, quy tắc có tiền tố dài nhất sẽ chiến thắng. Các mục nhập tương ứng với cùng một khối CIDR được coi là trùng lặp. Những nội dung trùng lặp như vậy trong danh sách được đối chiếu (exclusionList +includedList) sẽ bị loại bỏ, còn mục nhập trùng lặp chính xác sẽ bị loại bỏ thì không xác định.
-
mtu
chuỗi không bắt buộc
Chế độ cài đặt MTU cho giao diện VPN. (mặc định: 1500 byte)
-
kết nối lại
chuỗi không bắt buộc
Chrome 51 trở lênLiệu tiện ích VPN có triển khai tính năng tự động kết nối lại hay không.
Nếu đúng, thông báo trên nền tảng
linkDown
,linkUp
,linkChanged
,suspend
vàresume
sẽ được dùng để báo hiệu các sự kiện tương ứng. Nếu bạn đặt chính sách này thành sai, hệ thống sẽ buộc ngắt kết nối VPN nếu cấu trúc mạng thay đổi và người dùng sẽ phải kết nối lại theo cách thủ công. (mặc định: false)Đây là thuộc tính mới trong Chrome 51. Thuộc tính này sẽ tạo ra một ngoại lệ trong các phiên bản cũ. Bạn có thể sử dụng try/catch để bật tính năng này theo cách có điều kiện dựa trên khả năng hỗ trợ trình duyệt.
PlatformMessage
Nền tảng sử dụng enum này để thông báo cho ứng dụng khách về trạng thái phiên VPN.
Liệt kê
"đã kết nối"
Cho biết rằng cấu hình VPN đã kết nối.
"đã ngắt kết nối"
Cho biết rằng cấu hình VPN đã bị ngắt kết nối.
"error"
Cho biết đã xảy ra lỗi khi kết nối VPN, chẳng hạn như hết thời gian chờ. Nội dung mô tả lỗi được cung cấp dưới dạng đối số lỗi cho onPlatformMessage.
"linkDown"
Cho biết rằng kết nối mạng thực tế mặc định bị ngắt.
"linkUp"
Cho biết rằng kết nối mạng thực tế mặc định đã được sao lưu.
"linkChanged"
Cho biết kết nối mạng thực mặc định đã thay đổi, ví dụ: wifi->thiết bị di động.
"suspend"
Cho biết hệ điều hành đang chuẩn bị tạm ngưng, vì vậy VPN sẽ ngắt kết nối. Chúng tôi không đảm bảo việc gia hạn này sẽ nhận được sự kiện này trước khi tạm ngưng.
"resume"
Cho biết rằng hệ điều hành đã tiếp tục và người dùng đã đăng nhập lại, do đó, VPN cần cố gắng kết nối lại.
UIEvent
Nền tảng sử dụng enum này để biểu thị sự kiện đã kích hoạt onUIEvent
.
Liệt kê
"showAddDialog"
Yêu cầu ứng dụng VPN hiển thị hộp thoại thêm cấu hình cho người dùng.
"showConfigureDialog"
Yêu cầu ứng dụng VPN hiển thị hộp thoại cài đặt cấu hình cho người dùng.
VpnConnectionState
Ứng dụng VPN sử dụng enum này để thông báo cho nền tảng về trạng thái hiện tại. Nhờ vậy, bạn có thể truyền tải thông điệp có ý nghĩa cho người dùng.
Liệt kê
"đã kết nối"
Chỉ định rằng kết nối VPN đã thành công.
"failure"
Chỉ định rằng kết nối VPN không thành công.
Phương thức
createConfig()
chrome.vpnProvider.createConfig(
name: string,
callback?: function,
)
Tạo một cấu hình VPN mới, duy trì qua nhiều phiên đăng nhập của người dùng.
Tham số
-
tên
string
Tên của cấu hình VPN.
-
số gọi lại
hàm không bắt buộc
Tham số
callback
sẽ có dạng như sau:(id: string) => void
-
id
string
Mã nhận dạng duy nhất cho cấu hình đã tạo hoặc
undefined
khi bị lỗi.
-
Giá trị trả về
-
Hứa hẹn<string>
Chrome 96 trở lênLời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.
destroyConfig()
chrome.vpnProvider.destroyConfig(
id: string,
callback?: function,
)
Huỷ cấu hình VPN do tiện ích tạo.
Tham số
-
id
string
Mã nhận dạng cấu hình VPN cần huỷ.
-
số gọi lại
hàm không bắt buộc
Tham số
callback
sẽ có dạng như sau:() => void
Giá trị trả về
-
Promise<void>
Chrome 96 trở lênLời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.
notifyConnectionStateChanged()
chrome.vpnProvider.notifyConnectionStateChanged(
state: VpnConnectionState,
callback?: function,
)
Thông báo trạng thái phiên VPN cho nền tảng. Thao tác này chỉ thành công khi phiên VPN thuộc sở hữu của tiện ích.
Tham số
-
state
Trạng thái phiên VPN của ứng dụng VPN.
-
số gọi lại
hàm không bắt buộc
Tham số
callback
sẽ có dạng như sau:() => void
Giá trị trả về
-
Promise<void>
Chrome 96 trở lênLời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.
sendPacket()
chrome.vpnProvider.sendPacket(
data: ArrayBuffer,
callback?: function,
)
Gửi một gói IP qua đường hầm được tạo cho phiên VPN. Thao tác này chỉ thành công khi phiên VPN thuộc sở hữu của tiện ích.
Tham số
-
data
ArrayBuffer
Gói IP sẽ được gửi đến nền tảng.
-
số gọi lại
hàm không bắt buộc
Tham số
callback
sẽ có dạng như sau:() => void
Giá trị trả về
-
Promise<void>
Chrome 96 trở lênLời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.
setParameters()
chrome.vpnProvider.setParameters(
parameters: Parameters,
callback?: function,
)
Đặt tham số cho phiên VPN. Lệnh này sẽ được gọi ngay sau khi nhận được "connected"
từ nền tảng. Thao tác này chỉ thành công khi phiên VPN thuộc sở hữu của tiện ích.
Tham số
-
tham số
Các tham số cho phiên VPN.
-
số gọi lại
hàm không bắt buộc
Tham số
callback
sẽ có dạng như sau:() => void
Giá trị trả về
-
Promise<void>
Chrome 96 trở lênLời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.
Sự kiện
onConfigCreated
chrome.vpnProvider.onConfigCreated.addListener(
callback: function,
)
Được kích hoạt khi nền tảng tạo cấu hình cho tiện ích.
Tham số
-
số gọi lại
hàm
Tham số
callback
sẽ có dạng như sau:(id: string, name: string, data: object) => void
-
id
string
-
tên
string
-
data
đối tượng
-
onConfigRemoved
chrome.vpnProvider.onConfigRemoved.addListener(
callback: function,
)
Được kích hoạt khi nền tảng xoá cấu hình do tiện ích tạo.
Tham số
-
số gọi lại
hàm
Tham số
callback
sẽ có dạng như sau:(id: string) => void
-
id
string
-
onPacketReceived
chrome.vpnProvider.onPacketReceived.addListener(
callback: function,
)
Được kích hoạt khi nhận được một gói IP thông qua đường hầm cho phiên VPN do tiện ích sở hữu.
Tham số
-
số gọi lại
hàm
Tham số
callback
sẽ có dạng như sau:(data: ArrayBuffer) => void
-
data
ArrayBuffer
-
onPlatformMessage
chrome.vpnProvider.onPlatformMessage.addListener(
callback: function,
)
Được kích hoạt khi nền tảng nhận được thông báo về cấu hình VPN do tiện ích sở hữu.
Tham số
-
số gọi lại
hàm
Tham số
callback
sẽ có dạng như sau:(id: string, message: PlatformMessage, error: string) => void
-
id
string
-
tin nhắn
-
error
string
-
onUIEvent
chrome.vpnProvider.onUIEvent.addListener(
callback: function,
)
Được kích hoạt khi có một sự kiện giao diện người dùng cho phần mở rộng. Sự kiện giao diện người dùng là các tín hiệu từ nền tảng cho ứng dụng biết rằng hộp thoại giao diện người dùng cần hiển thị cho người dùng.