视频上云/网络穿透/拉转推工具EasyNTS设备IP地址返回数据与实际IP匹配的筛选机制优化

目前TSINGSEE青犀视频已经把EasyNTS的功能进行了扩展,扩大了EasyNTS的使用范围,关于新版EasyNTS的使用方法,我们在之前的博文中也有介绍,大家可以了解一下:EasyNTS上云网关配置手册介绍、EasyNTS上云网关推流直播实现流程

视频上云/网络穿透/拉转推工具EasyNTS设备IP地址返回数据与实际IP匹配的筛选机制优化_第1张图片

我们研发在客户现场对EasyNTS平台的测试当中发现,EasyNTS获取设备列表界面下,其中ip地址的那一栏,出现一大串的html的源码,本来应该是获取设备所在环境的外网ip,但是却是获得一大串的文本信息。

视频上云/网络穿透/拉转推工具EasyNTS设备IP地址返回数据与实际IP匹配的筛选机制优化_第2张图片

经过排查我们了解到,这是由于客户环境导致的问题,该客户网络是有限制的,有些地址无法被访问到,导致在获取外网ip的时候没有数据可获取,最后返回一大串html的文本数据,是由于代码中没有对返回的数据进行校验。

因此我们不仅要确保地址访问无误,而且要在获取外网ip的时候,对返回的数据进行校验,如果和外网ip数据不匹配,就返回空的字符串。

视频上云/网络穿透/拉转推工具EasyNTS设备IP地址返回数据与实际IP匹配的筛选机制优化_第3张图片

参考代码如下:

func WanIP() string {
   for {
      if ip, err := HttpGet("http://myexternalip.com/raw"); err == nil {
         //防止有些客户的网络出现限制,所以对获取的ip进行校验
         if !checkIp(ip) {
            global.WanIP = ""
            log.Println("wan ip: 网络限制 ", )
         } else {
            global.WanIP = ip
            log.Println("wan ip:", ip)
         }
      }
      time.Sleep(time.Minute)
   }
}

func checkIp(ip string) bool {
   bits := strings.Split(ip, ".")
   if len(bits) != 4 {
      return false
   }
   return true
}

EasyNTS上云网关与EasyNTS平台的结合,实现了接入与管控、动态组网、远程运维、文件传输、远程指令调用等功能,从终端到云端,形成了一整套的上云网关解决方案,极大地解决了现场无固定IP、端口不开放、系统权限不开放等问题。如果大家还想了解更多内容或者视频相关解决方案,欢迎联系我们。

你可能感兴趣的:(EasyNTS)