• RTSP协议视频监控智能分析系统EasyNVR开发临时授权下自定义标题功能记录


    TSINGSEE青犀视频EasyNVR平台在前几次的更新中,已经支持修改页面标题和底部版权信息了,但是目前EasyNVR修改自定义标题和CopyRight必须是永久授权才能修改。

    对于一些获得了临时授权的用户来说,如果要修改自定义内容,则无法实现。因此现需要改为不限制授权方式就可以自定义修改。

    在目前的逻辑下,前端将如果不是永久授权,就显示为只可读,不可以修改的样式;后端也在修改自定义标题和copyright的地方添加了限制,先判断是否为永久授权,如果不是则不允许修改,是永久授权才允许修改。

    /**
    修改自定义配置
    */
    func UpdateCustom(c *gin.Context) {
       var customConfig CustomConfig
       if err := c.ShouldBind(&customConfig); err != nil {
          c.AbortWithStatusJSON(400, err.Error())
          return
       }
       plays := customConfig.Plays
       var playProtocolEnable string
    
       sort.Sort(plays)
       for i := range plays {
          playProtocolEnable += strconv.FormatInt(int64(plays[i].IsEnable), 10)
          if i != len(plays)-1 {
             playProtocolEnable += ","
          }
       }
       // 保存到文件
       err := utils.SaveToConf("custom_config", map[string]string{
          "advert_enable":        strconv.FormatInt(int64(customConfig.AdvertEnable), 10),
          "default_protocol":     customConfig.PlayDefaultProtocol,
          "default_player":       customConfig.DefaultPlayer,
          "play_protocol_enable": playProtocolEnable,
          "title":     customConfig.Title,
          "copyRight": customConfig.CopyRight,
       })
       if err != nil {
          c.AbortWithStatusJSON(500, err.Error())
          return
       }
       c.IndentedJSON(http.StatusOK, "ok")
    }
    

    因此根据该逻辑,我们需要在修改自定义标题和copyright的地方去除对永久授权的判断和限制,直接就允许修改就行了。获取自定义标题和copyright的地方也是这样,去除是否是永久授权的判断。

    /**
    获取自定义配置
    */
    func GetCustom(c *gin.Context) {
       customConfig := utils.Conf().Section("custom_config")
       defaultProtocol := customConfig.Key("default_protocol").String()
       defaultPlayer := customConfig.Key("default_player").String()
       unPlayerLogo := customConfig.Key("un_play_logo").MustBool(false)
       playProtocol := customConfig.Key("play_protocol").String()
       protocol := strings.Split(playProtocol, ",")
       playProtocolEnable := customConfig.Key("play_protocol_enable").String()
       enable := strings.Split(playProtocolEnable, ",")
       rsa := utils.Conf().Section("base_config").Key("rsa").MustBool(false)
    
       var plays plays
       for i := range protocol {
          isEnable := uint(0)
          if enable[i] == "true" || enable[i] == "1" {
             isEnable = 1
          }
          play := Play{
             Id:       i + 1,
             Name:     protocol[i],
             IsEnable: isEnable,
          }
          plays = append(plays, play)
       }
       title := customConfig.Key("title").MustString("")
       copyRight := customConfig.Key("copyRight").MustString("")
       var data = CustomConfig{
          Title:               title,
          CopyRight:           copyRight,
          AdvertEnable:        customConfig.Key("advert_enable").MustUint(0),
          PlayDefaultProtocol: defaultProtocol,
          Plays:               plays,
          DefaultPlayer:       defaultPlayer,
          UnPlayerLogo:        unPlayerLogo,
          Rsa:                 rsa,
       }
       c.IndentedJSON(http.StatusOK, data)
    }
    
    

    修改后效果如下,无论在什么授权下,都可直接修改自定义内容:

  • 相关阅读:
    connect: network is unreachable问题的解决
    Linux图形界面与字符界面切换
    Xshell远程连接Linux服务器出错
    demo-placeholder兼容ie8
    Python设计TFTP客户端
    python hashlib、hmac模块
    python time、datetime、random、os、sys模块
    python 字符串和字典
    ssh远程登录时提示access denied
    指针的指针与指针的引用
  • 原文地址:https://www.cnblogs.com/EasyNVR/p/14417104.html
Copyright © 2020-2023  润新知