- sangfor
- 概述
- setLoginTimeOut
- logout
- setLoginListener
- enableByPass
- queryStatus
- addStatusChangedListener
- clearStatusChangedListener
- loginByAccount
- loginByCertificate
- loginBySession
- ticketAuthAvailable
- loginByAuthAvailable
- doCertificateAuth
- doSMSAuth
- doRadiusAuth
- doTokenAuth
- doPasswordAuth
- doRandCodeAuth
- reacquireSmsCode
- reacquireRandCode
- addRandCodeListener
- getSession
sangfor
setLoginTimeOut logout setLoginListener enableByPass queryStatus addStatusChangedListener clearStatusChangedListener loginByAccount loginByCertificate loginBySession ticketAuthAvailable loginByAuthAvailable doCertificateAuth doSMSAuth doRadiusAuth doTokenAuth doPasswordAuth doRandCodeAuth reacquireSmsCode addRandCodeListener getSession
概述
深信服vpn模块,可多种方式登陆vpn。
iOS关于L3VPN说明
L3vpn模式的特点是在一个应用中打通了VPN隧道后,其他应用不需要集成SDK即可访问资源。并且额外支持了UDP、ICMP协议
iOS证书及描述文件制作
申请iOS主证书及描述文件和扩展证书及描述文件,两者都需开启Network Extension权限,且扩展的AppID的BundleId以主App的AppID为前缀,例如主APP的BundleId为com.sangfor.vpndemo,那么拓展的BundleId可以设置为com.sangfor.vpndemo.vpnextension,证书配置流程操作详情参考iOS证书及描述文件制作流程
iOS重签名扩展
去深信服官网下载官方demo,找到PacketTunnel.appex文件,然后使用可视化工具SangforResign-1.2beta.app对扩展描述文件进行重签名,然后打包成一个附加自定义模块上传 APICloud 平台。可视化工具可联系深信服获得。
附加自定义模块制作方法如下:
下载 sangforAppendix 模块 zip 包并解压,把 zip 包内 plugins 目录下的 PacketTunnel.appex 文件替换为对扩展描述文件重签名后的文件。然后重新压缩为 zip 包文件上传自定义模块,云编译时勾选该模块。
Network Extension权限:
使用本模块需要在工程target的Capabilities选项中打开Network Extension权限开关,而最终的配置都会写入到工程中的一个.entitlements文件中,下面我们提供了配置该entitlements文件的方法,具体配置请参考iOS修改entitlements文件
示例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.networking.networkextension</key>
<array>
<string>app-proxy-provider</string>
<string>content-filter-provider</string>
<string>packet-tunnel-provider</string>
</array>
</dict>
</plist>
var sangfor = api.require('sangfor');
sangfor.setLoginTimeOut({
timeOut:,
}, function(ret, err) {
alert(JSON.stringify(ret));
});
setLoginTimeOut
设置登陆超时时间
setLoginTimeOut({params},callback(ret))
param
timeOut:
- 类型:数字类型
- 描述:超时时间,单位/秒
- 默认:8
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:, //布尔类型;是否调用成功
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg:, //字符串类型;错误信息
}
示例代码
var sangfor = api.require('sangfor');
sangfor.setLoginTimeOut({
timeOut:,
}, function(ret, err) {
alert(JSON.stringify(ret));
});
可用性
Android、iOS系统
可提供的1.0.0及更高版本
logout
退出登陆
logout({params},callback(ret))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:, //布尔类型;是否成功
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg:, //字符串类型;错误信息
}
示例代码
var sangfor = api.require('sangfor');
sangfor.logout({
}, function(ret, err) {
alert(JSON.stringify(ret));
});
可用性
Android、iOS系统
可提供的1.0.0及更高版本
setLoginListener
设置登陆监听
setLoginListener({params},callback(ret))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
state:'', //字符串类型;登陆状态, 'success'/登陆成功、‘failed’/登陆失败,'process'/登陆中
nextAuthType:, //数字类型;下个认证类型;state为'process'时返回,取值如下:
0, //证书认证
1, //用户名密码认证
2, //短信认证
6, //挑战认证或者Radius认证
7, //令牌认证
11, //钉钉code认证
16, //Session认证
17, //无认证
18, //强制修改密码认证
20, //强制修改密码认证,处理之前没有输入密码的情况。
22, //图形校验码认证
2048 //Ticket认证
msg{ //json类型;下个认证类型;state为'process'时返回,nextAuthType为2、6、18,20时才有值,Android不支持
pswMsg:'', //字符类型;请求修改密码认证的密码规则信息,nextAuthType == 18、20时返回
challengeMsg:'', //字符类型;挑战认证的提示信息,nextAuthType == 6时返回
phoneNum:'', //字符类型;短信认证的手机号码,nextAuthType == 2时返回
countDown:, //数字类型;重新发送短信倒计时时间,nextAuthType == 2时返回
stillValid:, //布尔类型;上次发送的短信验证码是否在有效期 ,nextAuthType == 2时返回
}:,
errorCode:, //数字类型;错误码 state为‘failed‘时返回
errorMsg:'', //字符串类型;错误信息;state为‘ailed’时返回
}
示例代码
var sangfor = api.require('sangfor');
sangfor.setLoginListener({
}, function(ret, err) {
alert(JSON.stringify(ret));
});
可用性
Android、iOS系统
可提供的1.0.0及更高版本
enableByPass
开启ByPass模式,开启后,所有SDK功能将失效 需要在认证之前设置,否则设置无效
enableByPass({params},callback(ret))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:, //布尔类型;是否调用成功
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg:, //字符串类型;错误信息
}
示例代码
var sangfor = api.require('sangfor');
sangfor.enableByPass({
}, function(ret, err) {
alert(JSON.stringify(ret));
});
可用性
Android、iOS系统
可提供的1.0.0及更高版本
queryStatus
获取当前vpn状态
queryStatus({params},callback(ret))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:, //布尔类型;是否在线
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg:, //字符串类型;错误信息
}
示例代码
var sangfor = api.require('sangfor');
sangfor.queryStatus({
}, function(ret, err) {
alert(JSON.stringify(ret));
});
可用性
Android、iOS系统
可提供的1.0.0及更高版本
addStatusChangedListener
添加vpn状态监听
addStatusChangedListener({params},callback(ret))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:, //布尔类型;是否添加成功
state:, //数字类型;vpn状态 1/在线、2/离线、3/重连中(iOS 3为重连失败)
changeReason:, //字符类型;VPN状态变化的原因,state == 3不返回;仅支持iOS
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg:, //字符串类型;错误信息
}
示例代码
var sangfor = api.require('sangfor');
sangfor.addStatusChangedListener({
}, function(ret, err) {
alert(JSON.stringify(ret));
});
可用性
Android、iOS系统
可提供的1.0.0及更高版本
clearStatusChangedListener
清除所有vpn状态监听
clearStatusChangedListener({params},callback(ret))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:, //布尔类型;是否成功
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg:, //字符串类型;错误信息
}
示例代码
var sangfor = api.require('sangfor');
sangfor.clearStatusChangedListener({
}, function(ret, err) {
alert(JSON.stringify(ret));
});
可用性
Android、iOS系统
可提供的1.0.0及更高版本
loginByAccount
初始化并使用账号密码登陆
loginByAccount({params},callback(ret))
param
vpnMode:
- 类型:数字类型
- 描述:vpn登陆模式,分为EASYAPP 进程vpn,L3VPN 手机代理vpn
- 可选值:1/EASYAPP,2/L3VPN
- 默认:1
vpnAddress:
- 类型:字符串类型
- 描述:vpn地址,需要带http://
name:
- 类型:字符串类型
- 描述:登陆用户名
password:
- 类型:字符串类型
- 描述:登陆密码
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:, //布尔类型;是否调用成功
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg:, //字符串类型;错误信息
}
示例代码
var sangfor = api.require('sangfor');
sangfor.loginByAccount({
name:'',
password:'',
vpnAddress:'',
}, function(ret, err) {
alert(JSON.stringify(ret));
});
可用性
Android、iOS系统
可提供的1.0.0及更高版本
loginByCertificate
初始化并使用证书认证登陆
loginByCertificate({params},callback(ret))
param
vpnMode:
- 类型:数字类型
- 描述:vpn登陆模式,分为EASYAPP 进程vpn,L3VPN 手机代理vpn
- 可选值:1/EASYAPP,2/L3VPN
- 默认:1
vpnAddress:
- 类型:字符串类型
- 描述:vpn地址,需要带http://
cirtificatePath:
- 类型:字符串类型
- 描述:证书路径,支持fs、原生路径。
password:
- 类型:字符串类型
- 描述:登陆密码
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:, //布尔类型;是否调用成功
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg:, //字符串类型;错误信息
}
示例代码
var sangfor = api.require('sangfor');
sangfor.loginByCertificate({
vpnAddress:'',
cirtificatePath:'',
password:'',
}, function(ret, err) {
alert(JSON.stringify(ret));
});
可用性
Android、iOS系统
可提供的1.0.0及更高版本
loginBySession
初始化并进行共享session认证
loginBySession({params},callback(ret))
param
vpnMode:
- 类型:数字类型
- 描述:vpn登陆模式,分为EASYAPP 进程vpn,L3VPN 手机代理vpn
- 可选值:1/EASYAPP,2/L3VPN
- 默认:1
vpnAddress:
- 类型:字符串类型
- 描述:vpn地址,需要带http://
session:
- 类型:字符串类型
- 描述:共享session。
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:, //布尔类型;是否调用成功
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg:, //字符串类型;错误信息
}
示例代码
var sangfor = api.require('sangfor');
sangfor.loginBySession({
vpnAddress:'',
session:'',
}, function(ret, err) {
alert(JSON.stringify(ret));
});
可用性
Android、iOS系统
可提供的1.0.0及更高版本
ticketAuthAvailable
判断是否支持免密登陆
ticketAuthAvailable({params},callback(ret))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:, //布尔类型;是否支持免密登陆
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg:, //字符串类型;错误信息
}
示例代码
var sangfor = api.require('sangfor');
sangfor.ticketAuthAvailable({
}, function(ret, err) {
alert(JSON.stringify(ret));
});
可用性
Android、iOS系统
可提供的1.0.0及更高版本
loginByAuthAvailable
初始化并进行免密登陆
loginByAuthAvailable({params},callback(ret))
param
vpnMode:
- 类型:数字类型
- 描述:vpn登陆模式,分为EASYAPP 进程vpn,L3VPN 手机代理vpn
- 可选值:1/EASYAPP,2/L3VPN
- 默认:1
vpnAddress:
- 类型:字符串类型
- 描述:vpn地址,需要带http://,iOS不支持此参数
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:, //布尔类型;是否调用成功
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg:, //字符串类型;错误信息
}
示例代码
var sangfor = api.require('sangfor');
sangfor.loginByAuthAvailable({
vpnMode:,
}, function(ret, err) {
alert(JSON.stringify(ret));
});
可用性
Android、iOS系统
可提供的1.0.0及更高版本
doCertificateAuth
证书认证,不进行sdk初始化
doCertificateAuth({params},callback(ret))
param
cirtificatePath:
- 类型:字符串类型
- 描述:证书路径,支持fs、原生路径。
password:
- 类型:字符串类型
- 描述:登陆密码
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:, //布尔类型;是否调用成功
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg:, //字符串类型;错误信息
}
示例代码
var sangfor = api.require('sangfor');
sangfor.doCertificateAuth({
cirtificatePath:'',
password:'',
}, function(ret, err) {
alert(JSON.stringify(ret));
});
可用性
Android、iOS系统
可提供的1.0.0及更高版本
doSMSAuth
短信认证,不进行sdk初始化
doSMSAuth({params},callback(ret))
param
sms:
- 类型:字符串类型
- 描述:短信验证码
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:, //布尔类型;是否调用成功
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg:, //字符串类型;错误信息
}
示例代码
var sangfor = api.require('sangfor');
sangfor.doSMSAuth({
sms:'',
}, function(ret, err) {
alert(JSON.stringify(ret));
});
可用性
Android、iOS系统
可提供的1.0.0及更高版本
doRadiusAuth
Radius挑战认证,不进行sdk初始化
doRadiusAuth({params},callback(ret))
param
radiusCode:
- 类型:字符串类型
- 描述:挑战认证码
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:, //布尔类型;是否调用成功
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg:, //字符串类型;错误信息
}
示例代码
var sangfor = api.require('sangfor');
sangfor.doRadiusAuth({
radiusCode:'',
}, function(ret, err) {
alert(JSON.stringify(ret));
});
可用性
Android、iOS系统
可提供的1.0.0及更高版本
doTokenAuth
token令牌认证,不进行sdk初始化
doTokenAuth({params},callback(ret))
param
token:
- 类型:字符串类型
- 描述:动态令牌
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:, //布尔类型;是否调用成功
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg:, //字符串类型;错误信息
}
示例代码
var sangfor = api.require('sangfor');
sangfor.doTokenAuth({
token:'',
}, function(ret, err) {
alert(JSON.stringify(ret));
});
可用性
Android、iOS系统
可提供的1.0.0及更高版本
doPasswordAuth
账号密码认证,不进行sdk初始化
doPasswordAuth({params},callback(ret))
param
name:
- 类型:字符串类型
- 描述:登陆用户名
password:
- 类型:字符串类型
- 描述:登陆密码
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:, //布尔类型;是否调用成功
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg:, //字符串类型;错误信息
}
示例代码
var sangfor = api.require('sangfor');
sangfor.doPasswordAuth({
name:'',
password:'',
}, function(ret, err) {
alert(JSON.stringify(ret));
});
可用性
Android、iOS系统
可提供的1.0.0及更高版本
doRandCodeAuth
图形校验码认证
doRandCodeAuth({params},callback(ret))
param
code:
- 类型:字符串类型
- 描述:图形校验码
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:, //布尔类型;是否调用成功
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg:, //字符串类型;错误信息
}
示例代码
var sangfor = api.require('sangfor');
sangfor.doRandCodeAuth({
code:'',
}, function(ret, err) {
alert(JSON.stringify(ret));
});
可用性
Android、iOS系统
可提供的1.0.0及更高版本
reacquireSmsCode
重新获取短信验证码
reacquireSmsCode({params},callback(ret))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:, //布尔类型;是否调用成功
msg{ //json对象,短信信息,仅支持iOS
phoneNum:'', //字符类型;短信认证的手机号码
countDown:, //数字类型;重新发送短信倒计时时间
stillValid:, //布尔类型;上次发送的短信验证码是否在有效期
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg:, //字符串类型;错误信息
}
示例代码
var sangfor = api.require('sangfor');
sangfor.reacquireSmsCode({
}, function(ret, err) {
alert(JSON.stringify(ret));
});
可用性
Android、iOS系统
可提供的1.0.0及更高版本
reacquireRandCode
重新获取图形验证码
reacquireRandCode({params},callback(ret))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:, //布尔类型;是否调用成功
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg:, //字符串类型;错误信息
}
示例代码
var sangfor = api.require('sangfor');
sangfor.reacquireRandCode({
}, function(ret, err) {
alert(JSON.stringify(ret));
});
可用性
Android、iOS系统
可提供的1.0.0及更高版本
addRandCodeListener
图形验证码监听
addRandCodeListener({params},callback(ret))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:, //布尔类型;是否调用成功
data:'', //字符串类型;图片信息的base64字符串
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg:, //字符串类型;错误信息
}
示例代码
var sangfor = api.require('sangfor');
sangfor.addRandCodeListener({
}, function(ret) {
alert(JSON.stringify(ret));
});
可用性
Android、iOS系统
可提供的1.0.0及更高版本
getSession
获取共享登录的Session
getSession({params},callback(ret))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:, //布尔类型;是否调用成功
session:'', //字符串类型;共享session
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg:, //字符串类型;错误信息
}
示例代码
var sangfor = api.require('sangfor');
sangfor.getSession({
}, function(ret, err) {
alert(JSON.stringify(ret));
});
可用性
Android、iOS系统
可提供的1.0.0及更高版本