Mô tả
Sử dụng API chrome.vpnProvider
để triển khai một ứng dụng VPN.
Quyền
vpnProvider
Phạm vi cung cấp
Khái niệm và cách sử dụng
Sau đây là cách sử dụng chrome.vpnProvider
thông thường:
Tạo cấu hình VPN bằng cách gọi
createConfig()
. Cấu hình VPN là một mục nhập cố định mà người dùng nhìn thấy trong giao diện người dùng ChromeOS. Người dùng có thể chọn một cấu hình VPN trong danh sách và kết nối hoặc ngắt kết nối vớ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"
. Khoảng thời gian giữa thông báo"connected"
và"disconnected"
được gọi là "phiên VPN". Trong khoảng thời gian này, tiện ích nhận được thông báo được coi là sở hữu phiên VPN.Khởi tạo kết nối với máy chủ VPN và khởi động ứng dụng VPN.
Đặt các tham số của kết nối bằng cách gọi
setParameters()
.Thông báo trạng thái kết nối dưới dạng
"connected"
bằng cách gọinotifyConnectionStateChanged()
.Khi các bước trước đó hoàn tất mà không gặp lỗi, một đường hầm ảo sẽ được tạo cho 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 gọi
sendPacket()
và mọi gói bắt nguồn từ thiết bị ChromeOS sẽ được nhận bằng trình xử lý 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 thiết nữa, bạn có thể huỷ cấu hình VPN bằng cách gọi
destroyConfig()
.
Loại
Parameters
Thuộc tính
- xử lý
chuỗi
Địa chỉ IP cho giao diện VPN dưới dạng ký hiệu 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: được suy ra từ địa chỉ IP và mặt nạ)
- dnsServers
string[]
Danh sách IP cho các 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
string[]
Loại trừ lưu lượng truy cập mạng khỏi danh sách các khối IP ở ký hiệu CIDR trong đường hầm. Bạn có thể dùng tính năng 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ố khớp dài nhất sẽ giành chiến thắng. Các mục tương ứng với cùng một khối CIDR sẽ được coi là trùng lặp. Những mục trùng lặp như vậy trong danh sách được đối chiếu (exclusionList + inclusionList) sẽ bị loại bỏ và mục trùng lặp chính xác sẽ bị loại bỏ là không xác định.
- inclusionList
string[]
Thêm lưu lượng truy cập mạng vào danh sách các khối IP ở 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 chia. Theo mặc định, không có lưu lượng truy cập nào được chuyển hướng đến đường hầm. Việc thêm mục "0.0.0.0/0" vào danh sách này sẽ chuyển hướng tất cả lưu lượng truy cập của người dù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ố khớp dài nhất sẽ giành chiến thắng. Các mục tương ứng với cùng một khối CIDR sẽ được coi là trùng lặp. Những mục trùng lặp như vậy trong danh sách được đối chiếu (exclusionList + inclusionList) sẽ bị loại bỏ và mục trùng lặp chính xác sẽ bị loại bỏ là 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ênTiệ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, các thông báo 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 thành false, hệ thống sẽ buộc ngắt kết nối VPN nếu cấu trúc liên kết mạng thay đổi và người dùng sẽ cần kết nối lại theo cách thủ công. (mặc định: false)Thuộc tính này mới xuất hiện 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 trước. Bạn có thể dùng try/catch để bật tính năng này có điều kiện dựa trên khả năng hỗ trợ của trình duyệt.
PlatformMessage
Nền tảng này dùng enum để thông báo cho ứng dụng về trạng thái phiên VPN.
Enum
"đã kết nối"
Cho biết cấu hình VPN đã kết nối.
"disconnected"
Cho biết cấu hình VPN đã bị ngắt kết nối.
"error"
Cho biết đã xảy ra lỗi trong kết nối VPN, ví dụ: hết thời gian chờ. Nội dung mô tả về lỗi được đưa ra dưới dạng đối số lỗi cho onPlatformMessage.
"linkDown"
Cho biết kết nối mạng vật lý mặc định đang ở trạng thái không hoạt động.
"linkUp"
Cho biết kết nối mạng vật lý mặc định đã được sao lưu.
"linkChanged"
Cho biết rằng kết nối mạng vật lý mặc định đã thay đổi, ví dụ: Wi-Fi -> thiết bị di động.
"suspend"
Cho biết hệ điều hành đang chuẩn bị tạm dừng, vì vậy VPN sẽ phải ngắt kết nối. Tiện ích không đảm bảo 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 hoạt động và người dùng đã đăng nhập lại, vì vậy VPN sẽ cố gắng kết nối lại.
UIEvent
Nền tảng dùng enum này để cho biết sự kiện đã kích hoạt onUIEvent
.
Enum
"showAddDialog"
Yêu cầu ứng dụng VPN cho người dùng xem hộp thoại thêm cấu hình.
"showConfigureDialog"
Yêu cầu ứng dụng VPN cho người dùng xem hộp thoại cài đặt cấu hình.
VpnConnectionState
Ứng dụng VPN dùng enum này để thông báo cho nền tảng về trạng thái hiện tại của ứng dụng. Điều này giúp cung cấp thông báo có ý nghĩa cho người dùng.
Enum
"connected"
Cho biết 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,
): Promise<string>
Tạo một cấu hình VPN mới duy trì trong nhiều phiên đăng nhập của người dùng.
Thông số
- tên
chuỗi
Tên của cấu hình VPN.
Giá trị trả về
-
Promise<string>
Chrome 96 trở lên
destroyConfig()
chrome.vpnProvider.destroyConfig(
id: string,
): Promise<void>
Huỷ cấu hình VPN do tiện ích tạo.
Thông số
- id
chuỗi
Mã của cấu hình VPN cần xoá.
Giá trị trả về
-
Promise<void>
Chrome 96 trở lên
notifyConnectionStateChanged()
chrome.vpnProvider.notifyConnectionStateChanged(
state: VpnConnectionState,
): Promise<void>
Thông báo trạng thái phiên VPN cho nền tảng. Thao tác này sẽ chỉ thành công khi phiên VPN thuộc quyền sở hữu của tiện ích.
Thông số
- tiểu bang
Trạng thái phiên VPN của ứng dụng VPN.
Giá trị trả về
-
Promise<void>
Chrome 96 trở lên
sendPacket()
chrome.vpnProvider.sendPacket(
data: ArrayBuffer,
): Promise<void>
Gửi một gói IP thông qua đường hầm được tạo cho phiên VPN. Thao tác này sẽ chỉ thành công khi phiên VPN thuộc quyền sở hữu của tiện ích.
Thông số
- khác
ArrayBuffer
Gói IP sẽ được gửi đến nền tảng.
Giá trị trả về
-
Promise<void>
Chrome 96 trở lên
setParameters()
chrome.vpnProvider.setParameters(
parameters: Parameters,
): Promise<void>
Đặt các tham số cho phiên VPN. Bạn nên gọi phương thức này ngay sau khi nhận được "connected"
từ nền tảng. Thao tác này sẽ chỉ thành công khi phiên VPN thuộc quyền sở hữu của tiện ích.
Thông số
- tham số
Các tham số cho phiên VPN.
Giá trị trả về
-
Promise<void>
Chrome 96 trở lên
Sự kiện
onConfigCreated
chrome.vpnProvider.onConfigCreated.addListener(
callback: function,
)
Được kích hoạt khi nền tảng tạo một cấu hình cho tiện ích.
Thông số
- callback
hàm
Tham số
callback
có dạng như sau:(id: string, name: string, data: object) => void
- id
chuỗi
- tên
chuỗi
- khác
đối tượng
-
onConfigRemoved
chrome.vpnProvider.onConfigRemoved.addListener(
callback: function,
)
Được kích hoạt khi nền tảng xoá một cấu hình do tiện ích tạo.
Thông số
- callback
hàm
Tham số
callback
có dạng như sau:(id: string) => void
- id
chuỗi
-
onPacketReceived
chrome.vpnProvider.onPacketReceived.addListener(
callback: function,
)
Được kích hoạt khi một gói IP được nhận qua đường hầm cho phiên VPN do tiện ích sở hữu.
Thông số
- callback
hàm
Tham số
callback
có dạng như sau:(data: ArrayBuffer) => void
- khác
ArrayBuffer
-
onPlatformMessage
chrome.vpnProvider.onPlatformMessage.addListener(
callback: function,
)
Được kích hoạt khi một thông báo được nhận từ nền tảng cho một cấu hình VPN do tiện ích sở hữu.
Thông số
- callback
hàm
Tham số
callback
có dạng như sau:(id: string, message: PlatformMessage, error: string) => void
- id
chuỗi
- tin nhắn
- error
chuỗi
-
onUIEvent
chrome.vpnProvider.onUIEvent.addListener(
callback: function,
)
Được kích hoạt khi có sự kiện giao diện người dùng cho tiện ích. Sự kiện giao diện người dùng là các tín hiệu từ nền tảng cho biết ứng dụng cần hiển thị hộp thoại giao diện người dùng cho người dùng.