zoukankan      html  css  js  c++  java
  • 视频综合管理平台EasyNVS添加https证书配置步骤介绍

    之前我们介绍过EasyNVR硬件设备如何开启使用https,大家也可以了解一下。关于EasyNVR的管理平台EasyNVS,也是支持开启https的。本文就介绍一下EasyNVS视频管理平台添加https证书配置的步骤。

    1、首先需要先添加两个上传证书的接口:

    /**
    * @api {post} /api/v1/uploadfullchain 上传fullchain.pem证书
    * @apiGroup channel
    * @apiUse simpleSuccess
     */
    func (h *APIHandler) Uploadfullchain(c *gin.Context) {
       support := ".pem,.key,.crt,.cer"
       file, err := c.FormFile("file")
       if err != nil {
          err = fmt.Errorf("获取上传文件错误, %v", err)
          c.AbortWithStatusJSON(400, err.Error())
          return
       }
       ext := filepath.Ext(file.Filename)
       reg := regexp.MustCompile("(?i)(" + strings.Join(strings.Split(support, ","), "|") + ")$")
       if !reg.Match([]byte(ext)) {
          c.AbortWithStatusJSON(400, "上传数据格式错误!")
          return
       }
       var dest = ""
       if runtime.GOARCH == "arm" {
          dest = filepath.Join(utils.ExcelDataDir(), fmt.Sprintf("%s", file.Filename))
       } else {
          dest = filepath.Join(utils.SslDir(), fmt.Sprintf("%s", file.Filename))
     
       }
       err = c.SaveUploadedFile(file, dest)
       if ext == ".key" || ext == ".pem" || ext == ".crt" || ext == ".cer" {
          utils.SaveToConf("https", map[string]string{
             "ssl_cert_file": dest,
          })
       }
       if err != nil {
          err = fmt.Errorf("保存上传文件错误, %v", err)
          c.AbortWithStatusJSON(500, err.Error())
          return
       }
       c.IndentedJSON(200, "OK")
       h.Restart(c)
    }
     
    /**
    * @api {post} /api/v1/uploadprivkey 上传privkey
    * @apiGroup channel
    * @apiUse simpleSuccess
     */
    func (h *APIHandler) Uploadprivkey(c *gin.Context) {
       support := ".pem,.key,.crt,.cer"
       file, err := c.FormFile("file")
       if err != nil {
          err = fmt.Errorf("获取上传文件错误, %v", err)
          c.AbortWithStatusJSON(400, err.Error())
          return
       }
       ext := filepath.Ext(file.Filename)
       reg := regexp.MustCompile("(?i)(" + strings.Join(strings.Split(support, ","), "|") + ")$")
       if !reg.Match([]byte(ext)) {
          c.AbortWithStatusJSON(400, "上传数据格式错误!")
          return
       }
       var dest = ""
       if runtime.GOARCH == "arm" {
          dest = filepath.Join(utils.ExcelDataDir(), fmt.Sprintf("%s", file.Filename))
       } else {
          dest = filepath.Join(utils.SslDir(), fmt.Sprintf("%s", file.Filename))
     
       }
       err = c.SaveUploadedFile(file, dest)
       if ext == ".key" || ext == ".pem" || ext == ".crt" || ext == ".cer" {
          utils.SaveToConf("https", map[string]string{
             "ssl_key_file": dest,
          })
       }
       if err != nil {
          err = fmt.Errorf("保存上传文件错误, %v", err)
          c.AbortWithStatusJSON(500, err.Error())
          return
       }
       c.IndentedJSON(200, "OK")
       h.Restart(c)
    }
     
    

      

    2、然后设置开启https配置的接口:

    func (h *APIHandler) SetSslConfig(c *gin.Context) {
       type Form struct {
          HttpsPort uint
          Https     bool
          CrtFile   string
          KeyFile   string
       }
       var form = Form{}
       if err := c.Bind(&form); err != nil {
          return
       }
       _port := utils.Conf().Section("https").Key("port").MustUint(443)
       if _port != form.HttpsPort && utils.IsPortInUse(int(form.HttpsPort)) {
          c.AbortWithStatusJSON(http.StatusBadRequest, "HTTPS 本地端口 已占用")
          return
       }
       _Https := "0"
       if form.Https {
          _Https = "1"
       }
       utils.SaveToConf("https", map[string]string{
          "port":          fmt.Sprintf("%d", form.HttpsPort),
          "ssl_cert_file": fmt.Sprintf("%s", form.CrtFile),
          "ssl_key_file":  fmt.Sprintf("%s", form.KeyFile),
          "http_ssl":      _Https,
       })
     
       if _port != form.HttpsPort {
          API.RestartChan <- true
       }
       c.IndentedJSON(http.StatusOK, "ok")
    }
    

      

    3、最后还需要添加一个获取是否开启https配置的接口:

    func (h *APIHandler) GetSslConfig(c *gin.Context) {
       sec := utils.Conf().Section("https")
       ack := map[string]interface{}{
          "HttpsPort": sec.Key("port").MustString("443"),
          "CrtFile":   sec.Key("ssl_cert_file").MustString(""),
          "KeyFile":   sec.Key("ssl_key_file").MustString(""),
          "Https":     sec.Key("http_ssl").MustBool(false),
       }
       c.IndentedJSON(http.StatusOK, ack)
    }
    

    配置完成后,EasyNVS访问即可通过https进入。

    有想了解EasyNVS的用户,可以直接留言联系我们。如果还想了解更多视频相关的解决方案,可进入TSINGSEE青犀视频查阅浏览,青犀视频全线产品都已经支持H265编码视频,可实战测试,欢迎咨询了解。

  • 相关阅读:
    Windows Server 无法启用 .Net Framework3.5的问题
    DocumentSet 操作代码(二)
    自定义SharePoint2010文档库的上传页面
    SharePoint2010 文档集操作创建
    JQuery 删除SharePoint菜单
    three.js项目引入vue,因代码编写不当导致的严重影响性能的问题,卡顿掉帧严重
    WPF 实现窗体鼠标事件穿透
    如何在传统前端项目中进行javascript模块化编程,并引入使用vue.js、elementui,并且不依赖nodejs和webpack?
    用 three.js 绘制三维带箭头线 (线内箭头)
    Vista中给IIS7添加PHP支持终于算是做成了
  • 原文地址:https://www.cnblogs.com/EasyNVR/p/14665541.html
Copyright © 2011-2022 走看看