WebApp快捷打包
天融信 TopVPN
转到模块插件

敬告:此 DEMO 演示为开放测试页面,仅用于开发者快速测试体验应用功能,请严格遵守开发者协议,了解更多

JS-SDK 引用方式:

♦ 普通网页 script 方式加载:下载最新版 jsBridge-v20240523.zip,请在页面上调用 jsBridge 接口之前引用 jsbridge-mini.js 库;

♦ js module 方式引用:npm install ym-jsbridge 具体请参考 npm package

♦ js API 详细说明及VPN连接流程请参考 官方文档 的同名函数

事件监听

setListener 设置监听器

• 如需接口调用事件,请设置此监听器;

//示例
var login = function(captcha) {
  jsBridge.topVpn.loginVOne({
    m_iLoginType: 2,
    m_iAuthType : 1,
    m_strAccount    : "账号",
    m_strLoginPasswd: "密码",
    m_strExtraCode  : captcha  //验证码
    }, function(succ, data) {
    if (!succ) {
      alert("失败\n" + JSON.stringify(data));
    } else {
      //请处理 GET_SERVERCFG 监听事件
    }
  });
};
jsBridge.topVpn.setListener(function(event, data) {
  switch (event) {
    case "GET_SERVERCFG": { //============= 取得服务器端配置
      if (data.success) {
        if (data.captchaType != "off") {
          //需要验证码,向服务器请求验证码图片
          jsBridge.topVpn.requestCaptcha(function(succ, data) {
            if (!succ) {
              alert("请求验证码图片失败\n" + JSON.stringify(data));
            }
          });
        } else {
          //登录
          login("");
        }
      } else {
        alert("GET_SERVERCFG 失败: " + JSON.stringify(data));
      }
      break;
    }
    case "GET_CAPTCHA": {  //=============取得验证码图片
      if (data.success) {
        //把 data.base64_image 显示在网页上,让用户读取输入图片上的验证码
        //登录
        login("验证码");
      } else {
        alert("GET_CAPTCHA 失败: " + JSON.stringify(data));
      }
      break;
    }
    case "LOGIN_SYSTEM": {  //=============登录事件
      if (data.success) {
        //获取用户授权的资源
        jsBridge.topVpn.requestVPNResInfo(function(succ, data) {
          if (!succ) {
            alert("失败\n" + JSON.stringify(data));
          } else {
            //请处理 GET_RESOURCE 监听事件
          }
        });
      } else {
        alert("LOGIN_SYSTEM 失败: " + JSON.stringify(data));
      }
      break;
    }
    case "GET_RESOURCE": {  //=============获取用户授权的资源
      if (data.success) {
        //启动VPN服务
        jsBridge.topVpn.startService(function(succ, data) {
          if (!succ) {
            alert("失败\n" + JSON.stringify(data));
          } else {
            //请处理 START_SERVICE 监听事件
          }
        });
      } else {
        alert("GET_RESOURCE 失败: " + JSON.stringify(data));
      }
      break;
    }
    case "START_SERVICE": {  //=============启动VPN服务
      if (data.success) {
        //启动VPN服务
        alert("VPN 服务启动成功: " + JSON.stringify(data));
      } else {
        alert("START_SERVICE 失败: " + JSON.stringify(data));
      }
      break;
    }
    //case "....": { //其他事件
    // }
  };

  //json方式显示监听回调参数
  showResult({
    event: event,
    data : data
  });
});

//请拉到页面底部查看回调数据信息
$('html,body').animate({ scrollTop: $('#view').offset().top }, 500);

/**
回调参数说明:
event - 事件代码,字符串类型
data  - 事件数据,JSON 对象
**/

removeListener 移除监听器

//移除监听器,不会再收到回调通知
//在需要时可重新调用 setListener
jsBridge.topVpn.removeListener();

业务接口

setConfigInfo 设置配置信息(以便获取VPN配置)

//设置配置信息后触发 GET_SERVERCFG 监听事件时返回服务器配置信息
jsBridge.topVpn.setConfigInfo({
  //是否自动重连
  m_blAutoReConnect: true,
  //重试次数
  m_iRetryCount: 10,
  //超时时间(秒)
  m_iTimeOut: 5,
  //VPN 地址
  m_strVPNIP: "222.223.187.10",
  //VPN 端口
  m_iServerPort: 8443
}, function(succ, data) {
  if (!succ) {
    alert("失败\n" + JSON.stringify(data));
  } else {
    //请处理 GET_SERVERCFG 监听事件
  }
});

loginVOne 登录VPN系统

//需先调用 setConfigInfo,在 GET_SERVERCFG 监听事件中判断成功获取服务器配置信息后才能调用此登录接口。
jsBridge.topVpn.loginVOne({
  //登录方式:
  //方式1.用户名口令
  m_iLoginType: 2,
  m_iAuthType : 1,
  //方式2.国际(rsa)软证书
  //m_iLoginType: 4,
  //m_iAuthType : 2,
  //m_iProtocolType: 4,
  //方式3.国际(rsa)硬证书
  //m_iLoginType: 4,
  //m_iAuthType : 4,
  //m_iProtocolType : 4,
  //m_strPackageName: "App的包名,com.example.vpn",
  //方式4.国密(sm)硬证书
  //m_iLoginType: 4,
  //m_iAuthType : 4,
  //m_iProtocolType : 2,
  //m_strPackageName: "App的包名,com.example.vpn",
  //方式5.外部认证
  //m_iLoginType: 16,
  //m_iAuthType : 1,
  //m_iProtocolType : 1, //1 静态密码, 8 动态密码, 16 Token认证
  //方式6.生物指纹认证
  //m_iLoginType: 64,
  //m_iAuthType : 128,
  //m_byarrReservedData_base64 : "", //生物指纹数据的 Base64 编码

  //口令方式时提供
  m_strAccount    : "账号",
  m_strLoginPasswd: "密码",
  m_strExtraCode  : "验证码",
  //证书方式时提供
  m_strCer_base64: "",  //p12证书文件的 Base64 编码
  m_strCerPasswd : "证书密码"



}, function(succ, data) {
  if (!succ) {
    alert("失败\n" + JSON.stringify(data));
  } else {
    //请处理 LOGIN_SYSTEM 监听事件
  }
});

requestVPNResInfo 获取用户授权的资源

jsBridge.topVpn.requestVPNResInfo(function(succ, data) {
  if (!succ) {
    alert("失败\n" + JSON.stringify(data));
  } else {
    //请处理 GET_RESOURCE 监听事件
  }
});

startService 启动VPN服务

jsBridge.topVpn.startService(function(succ, data) {
  if (!succ) {
    alert("失败\n" + JSON.stringify(data));
  } else {
    //请处理 START_SERVICE 监听事件
  }
});

closeService 关闭VPN服务

jsBridge.topVpn.closeService(function(succ, data) {
  if (!succ) {
    alert("失败\n" + JSON.stringify(data));
  } else {
    //请处理 CLOSE_SERVICE 监听事件
  }
});

logoutVOne 退出VPN系统

jsBridge.topVpn.logoutVOne(function(succ, data) {
  if (!succ) {
    alert("失败\n" + JSON.stringify(data));
  } else {
    //请处理 LOGOUT_SYSTEM 监听事件
  }
});

requestCaptcha 请求图片验证码

jsBridge.topVpn.requestCaptcha(function(succ, data) {
  if (!succ) {
    alert("失败\n" + JSON.stringify(data));
  } else {
    //请处理 GET_CAPTCHA 监听事件
    //返回 base64_image JPG 图片,请自行显示在 UI 上
  }
});

modifyPassword 修改密码

jsBridge.topVpn.modifyPassword({
  oldPassword: "旧密码",
  newPassword: "新密码"
}, function(succ, data) {
  if (!succ) {
    alert("失败\n" + JSON.stringify(data));
  } else {
    //请处理 MODIFY_PASSWORD 监听事件
  }
});

getStatus 获取VPN状态

//此接口无监听事件
jsBridge.topVpn.getStatus(function(succ, data) {
  if (!succ) {
    alert("失败\n" + JSON.stringify(data));
  } else {
    alert(JSON.stringify(data));
  }
});

监听回调数据: