简体中文 | English
本文档列出了 React Native Simple OpenVPN 当前提供的属性与方法
名称 | iOS | Android | 参数 | 返回值 | 描述 |
---|---|---|---|---|---|
connect | ✅ | ✅ | options: VpnOptions | promise | 连接 OpenVPN |
disconnect | ✅ | ✅ | 无 | promise | 关闭 OpenVPN 连接 |
getCurrentState | ✅ | ✅ | 无 | promise | 获取 VPN 当前状态 |
observeState | ✅ | ❌ | 无 | promise | 监听 VPN 状态 |
stopObserveState | ✅ | ❌ | 无 | promise | 停止监听 VPN 状态 |
addVpnStateListener | ✅ | ✅ | callback: (e: VpnEventParams) => void | void | 添加 VPN 状态变更事件监听 |
removeVpnStateListener | ✅ | ✅ | 无 | void | 移除 VPN 状态变更事件监听 |
名称 | 值 | 描述 |
---|---|---|
VpnState | VPN_STATE_DISCONNECTED = 0 VPN_STATE_CONNECTING = 1 VPN_STATE_CONNECTED = 2 VPN_STATE_DISCONNECTING = 3 VPN_OTHER_STATE = 4 |
VPN 当前状态 |
CompatMode | MODERN_DEFAULTS = 0 OVPN_TWO_FIVE_PEER = 1 OVPN_TWO_FOUR_PEER = 2 OVPN_TWO_THREE_PEER = 3 |
OpenVPN 兼容模式(Android only) |
interface VpnOptions {
remoteAddress?: string;
ovpnString?: string;
ovpnFileName?: string;
username?: string;
password?: string;
assetsPath?: string;
notificationTitle?: string;
compatMode?: RNSimpleOpenvpn.CompatMode;
useLegacyProvider?: boolean;
useCustomConfig?: boolean;
customConfigOptions?: string;
allowedAppsVpn?: Array<string>;
allowedAppsVpnAreDisallowed?: boolean;
providerBundleIdentifier: string;
localizedDescription?: string;
}
VPN 服务端地址,格式为 <ip> <port>
,未传入时使用 xxx.ovpn
配置文件中的地址
OpenVPN 配置文件内容的字符串形式,未传入时或传递空字符串 ''
,模块将寻找 xxx.ovpn
配置文件
字符串格式参考 example.ovpn
OpenVPN 配置文件的名称,不含扩展名,未传入时使用默认名称 client
鉴权用户名, 未传入时使用默认值 ''
鉴权密码, 未传入时使用默认值 ''
Android 专用,OpenVPN 配置文件在 android/app/src/main/assets/
下的路径
- 未传入时
assetsPath
为''
,文件路径为assets/xxx.ovpn
- 传入路径时,比如
'ovpn/'
,文件路径为assets/ovpn/xxx.ovpn
Android 专用,通知的标题,未传入时使用默认值 OpenVPN
Android 专用,OpenVPN 兼容模式,未传入时使用默认值 MODERN_DEFAULTS
模式 | 描述 |
---|---|
MODERN_DEFAULTS | Modern defaults |
OVPN_TWO_FIVE_PEER | OpenVPN 2.5.x peers |
OVPN_TWO_FOUR_PEER | OpenVPN 2.4.x peers |
OVPN_TWO_THREE_PEER | OpenVPN 2.3.x and older peers |
Android 专用,是否加载 OpenSSL legacy provider,未传入时使用默认值 false
Android 专用, 是否使用自定义配置,未传入时使用默认值 false
Android 专用,添加类似下方的配置字符串,未传入时使用默认值 ''
http-proxy ...
http-proxy-option ...
Android 专用, 进行 VPN 连接的应用包名列表, 默认值为空数组
['com.app1', 'com.app2'];
Android 专用, 控制 allowedAppsVpn 中所列的应用是否使用 VPN 连接, 而剩下的应用则相反, 未传入时使用默认值 true
iOS 专用,Network Extension target 的 bundle identifier
iOS 专用,应用在设置 -> VPN 中的本地化描述名称,未传入时使用默认名称 RNSimpleOpenvpn
interface VpnEventParams {
state: RNSimpleOpenvpn.VpnState; // VPN 状态
message: string; // VPN 状态相关的消息
level?: string; // Android OpenVPN 库提供的连接状态描述
}
如果你不使用 ovpnString,不要忘记将配置文件添加你的项目中
文件中 remote
所在行的格式必须如下形式
...
remote <IP address> <port>
...
如果你不需要动态修改配置文件中的 remote
地址,则 Android 和 iOS 使用相同的配置文件,options
的 remoteAddress
可不传
但是,如果你需要动态修改配置文件中的 remote
地址,则 iOS 端配置文件需要注释掉 remote
所在行(如下),且始终传递 options
的 remoteAddress
...
;remote <IP address> <port>>
...