From e871758bd82d9a4fbce42e43c9665d869c240dfb Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@iotlink.com> Date: 星期一, 21 十月 2019 15:12:11 +0800 Subject: [PATCH] feat: add api for system clock update --- controllers/syssetcont.go | 214 +++++++++++++++++++------- extend/sys/system.go | 113 ++++++++++++++ extend/util/util.go | 66 ++++---- router/router.go | 57 +++--- 4 files changed, 332 insertions(+), 118 deletions(-) diff --git a/controllers/syssetcont.go b/controllers/syssetcont.go index 977aeb5..6cd0e0a 100644 --- a/controllers/syssetcont.go +++ b/controllers/syssetcont.go @@ -1,45 +1,54 @@ package controllers import ( - "basic.com/dbapi.git" - "github.com/gin-gonic/gin" "webserver/extend/code" "webserver/extend/config" + "webserver/extend/sys" "webserver/extend/util" + + "basic.com/dbapi.git" + "github.com/gin-gonic/gin" ) type SysSetController struct { - } type LocalConfigVo struct { - Id string `json:"id"` - AlarmIp string `json:"alarm_ip,omitempty" example:"192.168.1.182"` - AlarmPort int `json:"alarm_port,omitempty" example:"22122"` - AlarmThresholdType int `json:"alarm_threshold_type"`//鎶ヨ闃堝�肩被鍨嬭缃細1:鎸夋渶楂樺垎,2:鎸夐槇鍊间互涓� - AlarmThreshold int `json:"alarm_threshold"`//鎶ヨ闃堝�� - WebPicIp string `json:"web_pic_ip,omitempty" example:""` - WebPicPort int `json:"web_pic_port,omitempty" example:"22122"` - EsPicIp string `json:"es_pic_ip,omitempty" example:""` - EsPicPort int `json:"es_pic_port,omitempty" example:"22122"` - CutMaxDuration int `json:"cut_max_duration,omitempty" example:"20"` - CutMinDuration int `json:"cut_min_duration,omitempty" example:"5"` - ServerId string `json:"server_id,omitempty" example:"鍒嗘瀽璁惧id"` - ServerName string `json:"server_name,omitempty" example:"鍒嗘瀽璁惧鍚嶇О"` - ServerType int `json:"server_type,omitempty" example:"1"` - Reserved string `json:"reserved,omitempty" example:"1"` - RealMax int `json:"real_max"`//瀹炴椂澶勭悊鐨勬渶澶ц矾鏁� + Id string `json:"id"` + AlarmIp string `json:"alarm_ip,omitempty" example:"192.168.1.182"` + AlarmPort int `json:"alarm_port,omitempty" example:"22122"` + AlarmThresholdType int `json:"alarm_threshold_type"` //鎶ヨ闃堝�肩被鍨嬭缃細1:鎸夋渶楂樺垎,2:鎸夐槇鍊间互涓� + AlarmThreshold int `json:"alarm_threshold"` //鎶ヨ闃堝�� + WebPicIp string `json:"web_pic_ip,omitempty" example:""` + WebPicPort int `json:"web_pic_port,omitempty" example:"22122"` + EsPicIp string `json:"es_pic_ip,omitempty" example:""` + EsPicPort int `json:"es_pic_port,omitempty" example:"22122"` + CutMaxDuration int `json:"cut_max_duration,omitempty" example:"20"` + CutMinDuration int `json:"cut_min_duration,omitempty" example:"5"` + ServerId string `json:"server_id,omitempty" example:"鍒嗘瀽璁惧id"` + ServerName string `json:"server_name,omitempty" example:"鍒嗘瀽璁惧鍚嶇О"` + ServerType int `json:"server_type,omitempty" example:"1"` + Reserved string `json:"reserved,omitempty" example:"1"` + RealMax int `json:"real_max"` //瀹炴椂澶勭悊鐨勬渶澶ц矾鏁� } type Gb28181ConfigVo struct { - Id string `json:"Id"` - ServerIp string `json:"ServerIp" example:"鍥芥爣鏈嶅姟鍣↖P"` - ServerPort int `json:"ServerPort" example:"骞冲彴鏈嶅姟绔彛:7060"` - PublicId string `json:"PublicId" example:"骞冲彴鏈嶅姟Id"` - GbServerPort int `json:"GbServerPort" example:"鍥芥爣鏈嶅姟绔彛:8060"` - IsAuth bool `json:"IsAuth" example:"鏄惁寮�鍚壌鏉�:true"` - Password string `json:"Password" example:"瀵嗙爜"` - UpdateTime string `json:"UpdateTime"` + Id string `json:"Id"` + ServerIp string `json:"ServerIp" example:"鍥芥爣鏈嶅姟鍣↖P"` + ServerPort int `json:"ServerPort" example:"骞冲彴鏈嶅姟绔彛:7060"` + PublicId string `json:"PublicId" example:"骞冲彴鏈嶅姟Id"` + GbServerPort int `json:"GbServerPort" example:"鍥芥爣鏈嶅姟绔彛:8060"` + IsAuth bool `json:"IsAuth" example:"鏄惁寮�鍚壌鏉�:true"` + Password string `json:"Password" example:"瀵嗙爜"` + UpdateTime string `json:"UpdateTime"` +} + +type SysClockConfigVo struct { + TimeZone string `json:"timeZone" example:"鏃跺尯"` + NTP bool `json:"ntp" example:"NTP鏍℃椂"` + NTPServer string `json:"ntpServer" example:"NTP鏈嶅姟鍣ㄥ湴鍧�"` + Interval int `json:"interval" example:"鑷姩鏍℃椂闂撮殧"` + NewTime string `json:"newTime" example:"鎵嬪姩鎸囧畾鏃堕棿"` } // @Summary 瀛樺偍淇℃伅鏌ヨ @@ -50,13 +59,13 @@ // @Success 200 {string} json "{"code":200, msg:"鐩綍缁撴瀯鏁版嵁", success:true}" // @Failure 500 {string} json "{"code":500, msg:"杩斿洖閿欒淇℃伅", success:false}" // @Router /data/api-v/sysset/alarmServerShow [GET] -func (sset SysSetController) AlarmServerShow(c *gin.Context){ +func (sset SysSetController) AlarmServerShow(c *gin.Context) { var api dbapi.SysSetApi b, sysconf := api.GetServerInfo() - if b{ - util.ResponseFormat(c,code.Success,sysconf) + if b { + util.ResponseFormat(c, code.Success, sysconf) } else { - util.ResponseFormat(c,code.ComError,"鏌ヨ澶辫触") + util.ResponseFormat(c, code.ComError, "鏌ヨ澶辫触") } } @@ -72,17 +81,17 @@ func (sset SysSetController) AlarmEdit(c *gin.Context) { var args LocalConfigVo err := c.BindJSON(&args) - if err !=nil { - util.ResponseFormat(c,code.RequestParamError,"鍙傛暟鏈夎") + if err != nil { + util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎") return } var api dbapi.SysSetApi paramBody := util.Struct2Map(args) - b,data := api.AlarmEdit(paramBody) + b, data := api.AlarmEdit(paramBody) if b { - util.ResponseFormat(c,code.Success,data) - }else { - util.ResponseFormat(c,code.ComError,"淇濆瓨澶辫触") + util.ResponseFormat(c, code.Success, data) + } else { + util.ResponseFormat(c, code.ComError, "淇濆瓨澶辫触") } } @@ -94,7 +103,7 @@ // @Success 200 {string} json "{"code":200, msg:"鐩綍缁撴瀯鏁版嵁", success:true}" // @Failure 500 {string} json "{"code":500, msg:"杩斿洖閿欒淇℃伅", success:false}" // @Router /data/api-v/sysset/videoLenShow [GET] -func (sset SysSetController) VideoLenShow(c *gin.Context){ +func (sset SysSetController) VideoLenShow(c *gin.Context) { var api dbapi.SysSetApi b, sysconf := api.GetServerInfo() if b { @@ -104,7 +113,7 @@ // 瀛樺湪鍒欎慨鏀� util.ResponseFormat(c, code.Success, resData) } else { - util.ResponseFormat(c,code.ComError,"鏌ヨ澶辫触") + util.ResponseFormat(c, code.ComError, "鏌ヨ澶辫触") } } @@ -125,11 +134,11 @@ max_video_len := c.Request.FormValue("max_video_len") min_video_len := c.Request.FormValue("min_video_len") var api dbapi.SysSetApi - b,data := api.VideoLenEdit(max_video_len,min_video_len) - if b{ - util.ResponseFormat(c,code.UpdateSuccess,data) + b, data := api.VideoLenEdit(max_video_len, min_video_len) + if b { + util.ResponseFormat(c, code.UpdateSuccess, data) } else { - util.ResponseFormat(c,code.ComError,"淇濆瓨澶辫触") + util.ResponseFormat(c, code.ComError, "淇濆瓨澶辫触") } } @@ -146,8 +155,8 @@ b, sysconf := api.GetServerInfo() resData := make(map[string]string, 0) if !b { // 鏌ヨ鏄惁瀛樺湪 - util.ResponseFormat(c, code.ServiceInsideError,"鏌ヨ澶辫触") - }else { + util.ResponseFormat(c, code.ServiceInsideError, "鏌ヨ澶辫触") + } else { resData["server_id"] = sysconf.GetServerId() resData["server_name"] = sysconf.GetServerName() ipv4, mask, _ := util.GetLocalIP(config.Server.NetworkAdapter) @@ -178,20 +187,19 @@ // @Success 200 {string} json "{"code":200, msg:"鐩綍缁撴瀯鏁版嵁", success:true}" // @Failure 500 {string} json "{"code":500, msg:"杩斿洖閿欒淇℃伅", success:false}" // @Router /data/api-v/sysset/saveDevInfo [POST] -func (sset SysSetController) SaveDevInfo(c *gin.Context){ +func (sset SysSetController) SaveDevInfo(c *gin.Context) { dev_name := c.PostForm("server_name") var api dbapi.SysSetApi - paramBody :=make(map[string]interface{},0) + paramBody := make(map[string]interface{}, 0) paramBody["serverName"] = dev_name - b,data := api.SaveServerInfo(paramBody) + b, data := api.SaveServerInfo(paramBody) if b { // 鏌ヨ鏄惁瀛樺湪 - util.ResponseFormat(c,code.Success,data) - } else { // 瀛樺湪鍙婁慨鏀� 涓嶅瓨鍦� 鍗虫坊鍔� - util.ResponseFormat(c,code.ComError,"淇濆瓨澶辫触") + util.ResponseFormat(c, code.Success, data) + } else { // 瀛樺湪鍙婁慨鏀� 涓嶅瓨鍦� 鍗虫坊鍔� + util.ResponseFormat(c, code.ComError, "淇濆瓨澶辫触") } } - // @Summary GB28181璁剧疆鏌ヨ // @Description GB28181璁剧疆淇℃伅鏌ヨ @@ -205,9 +213,9 @@ var api dbapi.SysSetApi b, data := api.Gb28181ConfigShow() if b { - util.ResponseFormat(c,code.Success,data) + util.ResponseFormat(c, code.Success, data) } else { - util.ResponseFormat(c,code.ComError,"鏌ヨ澶辫触") + util.ResponseFormat(c, code.ComError, "鏌ヨ澶辫触") } } @@ -223,16 +231,106 @@ func (sset SysSetController) Gb28181ConfigEdit(c *gin.Context) { var args Gb28181ConfigVo err := c.BindJSON(&args) - if err !=nil { - util.ResponseFormat(c,code.RequestParamError,"鍙傛暟鏈夎") + if err != nil { + util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎") return } var api dbapi.SysSetApi paramBody := util.Struct2Map(args) b, data := api.Gb28181ConfigEdit(paramBody) if b { - util.ResponseFormat(c,code.UpdateSuccess,data) + util.ResponseFormat(c, code.UpdateSuccess, data) } else { - util.ResponseFormat(c,code.ComError,"鏇存柊澶辫触") + util.ResponseFormat(c, code.ComError, "鏇存柊澶辫触") } } + +// @Summary 鑾峰彇鏃堕棿閰嶇疆 +// @Description 绯荤粺鏃堕棿閰嶇疆淇℃伅 +// @Accept json +// @Produce json +// @Tags sysset +// @Success 200 {string} json "{"code":200, msg:"鐩綍缁撴瀯鏁版嵁", success:true}" +// @Failure 500 {string} json "{"code":500, msg:"杩斿洖閿欒淇℃伅", success:false}" +// @Router /data/api-v/sysset/clockInfo [GET] +func (sset SysSetController) GetClockinfo(c *gin.Context) { + resData := make(map[string]interface{}, 0) + resData["time_zone"], resData["local_time"] = sys.TimeZone() + resData["ntp"], resData["ntp_server"], resData["interval"] = sys.NTPConfig() + + util.ResponseFormat(c, code.Success, resData) +} + +// @Summary 娴嬭瘯鍚屾鏃堕棿 +// @Description 娴嬭瘯鍚屾鏃堕棿鏈嶅姟鍣ㄦ槸鍚﹀彲鐢� +// @Accept json +// @Produce json +// @Tags sysset +// @Param server query string true "鏃堕棿鏈嶅姟鍣╥p" +// @Success 200 {string} json "{"code":200, msg:"鐩綍缁撴瀯鏁版嵁", success:true}" +// @Failure 500 {string} json "{"code":500, msg:"杩斿洖閿欒淇℃伅", success:false}" +// @Router /data/api-v/sysset/ntpTest [GET] +func (sset SysSetController) TestNTPServer(c *gin.Context) { + ntpServer := c.Query("server") + + if root := sys.CheckRootPermissions(); !root { + util.ResponseFormat(c, code.ServiceInsideError, "鏈嶅姟鍣ㄦ病鏈変慨鏀规椂闂寸殑鏉冮檺") + return + } + + isIP, err := sys.RunNTPDate(ntpServer) + if !isIP { + util.ResponseFormat(c, code.RequestParamError, "鎸囧畾鐨勬湇鍔″櫒鍦板潃閿欒") + return + } + + if err == nil { + util.ResponseFormat(c, code.Success, "") + } else { + util.ResponseFormat(c, code.TaskStoped, "") + } +} + +// @Summary 璁剧疆绯荤粺鏃堕棿 +// @Description 鏍℃绯荤粺鏃堕棿 +// @Accept json +// @Produce json +// @Tags sysset +// @Param config body controllers.SysClockConfigVo true "鏍℃椂淇℃伅" +// @Success 200 {string} json "{"code":200, msg:"鐩綍缁撴瀯鏁版嵁", success:true}" +// @Failure 500 {string} json "{"code":500, msg:"杩斿洖閿欒淇℃伅", success:false}" +// @Router /data/api-v/sysset/updateClock [POST] +func (sset SysSetController) SetSysClock(c *gin.Context) { + var args SysClockConfigVo + err := c.BindJSON(&args) + if err != nil { + util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎") + return + } + + if root := sys.CheckRootPermissions(); !root { + util.ResponseFormat(c, code.ServiceInsideError, "鏈嶅姟鍣ㄦ病鏈変慨鏀规椂闂寸殑鏉冮檺") + return + } + + if args.TimeZone != "CST" && args.TimeZone != "UTC" { + if r := sys.SetTimeZone(args.TimeZone); !r { + util.ResponseFormat(c, code.RequestParamError, "鏃跺尯鍙傛暟閿欒") + return + } + } + + if !args.NTP { + if r := sys.SetLocalTime(args.NewTime); !r { + util.ResponseFormat(c, code.RequestParamError, "鎸囧畾鐨勬椂闂村弬鏁伴敊璇�") + return + } + } else { + if r := sys.EnableNTPCron(args.NTPServer, args.Interval); !r { + util.ResponseFormat(c, code.RequestParamError, "鎸囧畾鐨勬湇鍔″櫒鍦板潃閿欒") + return + } + } + + util.ResponseFormat(c, code.UpdateSuccess, "閰嶇疆鎴愬姛") +} diff --git a/extend/sys/system.go b/extend/sys/system.go new file mode 100644 index 0000000..563d85b --- /dev/null +++ b/extend/sys/system.go @@ -0,0 +1,113 @@ +package sys + +import ( + "errors" + "os/exec" + + "fmt" + "net" + "strings" + "time" +) + +// 妫�鏌� root鏉冮檺 +func CheckRootPermissions() bool { + showRootCMD := exec.Command("/bin/sh", "-c", "ls /root/") + if _, err := showRootCMD.Output(); err != nil { + return false + } + + return true +} + +// 閰嶇疆鏃跺尯 +func TimeZone() (string, int64) { + cmd := exec.Command("/bin/sh", "-c", "echo -n $TZ") + tz, _ := cmd.Output() + if tzstr := string(tz); tzstr != "" { + return tzstr, time.Now().Unix() + } + + zone, _ := time.Now().Zone() + return zone, time.Now().Unix() +} + +func NTPConfig() (bool, string, string) { + status, server, interval := false, "", "" + + cmd := exec.Command("/bin/sh", "-c", "crontab -l | grep ntpdate | tr -d '\n'") + cron, _ := cmd.Output() + if task := string(cron); task != "" { + status = true + slice := strings.Split(task, " ") + interval, server = slice[0][2:], slice[len(slice)-1] + } + + return status, server, interval +} + +// 璁剧疆鏃跺尯 +func SetTimeZone(tz string) bool { + if _, err := time.LoadLocation(tz); err != nil { + return false + } + + // set env + envCMD := exec.Command("/bin/sh", "-c", "TZ=%s", tz) + envCMD.Run() + // change permanent to the file '.profile' + + cleanTZ := exec.Command("/bin/sh", "-c", "sed -i '/^TZ=.*$/d' ~/.profile") + cleanTZ.Run() + + TZ := "TZ='" + tz + "'; export TZ" + appendTZCMD := fmt.Sprintf("echo \"%s\" >> ~/.profile;", TZ) + appendTZ := exec.Command("/bin/sh", "-c", appendTZCMD) + appendTZ.Run() + + return true +} + +// 閰嶇疆绯荤粺鏃堕棿 +func SetLocalTime(newTime string) bool { + const TimeLayout = "2006-01-02 15:04:05" + _, err := time.Parse(TimeLayout, newTime) + if err != nil { + return false + } + + args := []string{"-s", newTime} + exec.Command("date", args...).Run() + stopNTPCron() + + return true +} + +const NTPCRONTABFILE = "~/.webServer.crontab" + +func EnableNTPCron(server string, interval int) bool { + stopNTPCron() + + if ip := net.ParseIP(server); ip == nil { + return false + } + + addTask := fmt.Sprintf("echo \"*/%d * * * * /usr/sbin/ntpdate %s\" >> %s; crontab %s", interval, server, NTPCRONTABFILE, NTPCRONTABFILE) + exec.Command("/bin/sh", "-c", addTask).Run() + + return true +} + +func stopNTPCron() { + cleanTask := fmt.Sprintf("crontab -l | grep -v /usr/sbin/ntpdate > %s; crontab %s", NTPCRONTABFILE, NTPCRONTABFILE) + exec.Command("/bin/sh", "-c", cleanTask).Run() +} + +func RunNTPDate(server string) (bool, error) { + if ip := net.ParseIP(server); ip == nil { + return false, errors.New("鍙傛暟閿欒") + } + + ntpdate := fmt.Sprintf("/usr/sbin/ntpdate %s", server) + return true, exec.Command("/bin/sh", "-c", ntpdate).Run() +} diff --git a/extend/util/util.go b/extend/util/util.go index 16aecd5..e680ee6 100644 --- a/extend/util/util.go +++ b/extend/util/util.go @@ -1,14 +1,9 @@ package util import ( - "basic.com/pubsub/protomsg.git" "bytes" "encoding/json" "errors" - "github.com/gin-gonic/gin" - "github.com/golang/glog" - "github.com/pierrec/lz4" - "gocv.io/x/gocv" "image" "io/ioutil" "net" @@ -16,6 +11,12 @@ "os/exec" "strconv" "webserver/extend/code" + + "basic.com/pubsub/protomsg.git" + "github.com/gin-gonic/gin" + "github.com/golang/glog" + "github.com/pierrec/lz4" + "gocv.io/x/gocv" "crypto/rand" "fmt" @@ -60,14 +61,14 @@ //struct杞琺ap func Struct2Map(obj interface{}) map[string]interface{} { - resultMap :=make(map[string]interface{},0) + resultMap := make(map[string]interface{}, 0) bytesData, err := json.Marshal(obj) - if err !=nil { + if err != nil { return resultMap } json.Unmarshal(bytesData, &resultMap) return resultMap - + // //t := reflect.TypeOf(obj) //v := reflect.ValueOf(obj) @@ -79,21 +80,21 @@ //return data } -func ReadImgData(url string) ([]byte,error) { - resp,err := http.Get(url) - if err !=nil { - return nil,err +func ReadImgData(url string) ([]byte, error) { + resp, err := http.Get(url) + if err != nil { + return nil, err } defer resp.Body.Close() - pix,err := ioutil.ReadAll(resp.Body) - if err !=nil { - return nil,err + pix, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, err } - return pix,nil + return pix, nil } // 鎸夊昂瀵稿幓鍒囧浘 -func SubImg(i protomsg.Image, x0, y0, x1, y1 int, ) []byte { +func SubImg(i protomsg.Image, x0, y0, x1, y1 int) []byte { img, _ := gocv.NewMatFromBytes(int(i.Height), int(i.Width), gocv.MatTypeCV8UC3, i.Data) rect := image.Rect(EnlargeSize(x0, y0, x1, y1, i)) region := img.Region(rect) @@ -135,44 +136,43 @@ return } - // 鑾峰彇鏈満缃戝崱IP -func GetLocalIP(networkName string) (ipv4 string,mask string, err error) { +func GetLocalIP(networkName string) (ipv4 string, mask string, err error) { interfaces, err := net.Interfaces() if err != nil { - return "","", err + return "", "", err } for _, i := range interfaces { byName, err := net.InterfaceByName(i.Name) if err != nil { - return "","", err + return "", "", err } addresses, err := byName.Addrs() for _, v := range addresses { - if ipnet, ok:=v.(*net.IPNet);ok && !ipnet.IP.IsLoopback(){ - if ipnet.IP.To4() !=nil{ - if byName.Name == networkName{ + if ipnet, ok := v.(*net.IPNet); ok && !ipnet.IP.IsLoopback() { + if ipnet.IP.To4() != nil { + if byName.Name == networkName { maskStr := ipnet.Mask.String() mask64, _ := strconv.ParseUint(maskStr, 16, 32) - return ipnet.IP.String(),IpIntToString(int(mask64)),nil + return ipnet.IP.String(), IpIntToString(int(mask64)), nil } } } } } - return "","", errors.New("ipv4 not found") + return "", "", errors.New("ipv4 not found") } -func GetDefaultRoute(networkName string)(route string,err error){ - cmdStr := fmt.Sprintf("route | grep -P \"^default.*%s$\" | awk '{print $2}'",networkName) - cmd := exec.Command("/bin/sh","-c",cmdStr) +func GetDefaultRoute(networkName string) (route string, err error) { + cmdStr := fmt.Sprintf("ip route show | grep -P \"^default.*%s\" | awk '{print $3}'", networkName) + cmd := exec.Command("/bin/sh", "-c", cmdStr) b, err := cmd.Output() - if err!=nil{ - return "",err + if err != nil { + return "", err } - return string(b),nil + return string(b), nil } func StringIpToInt(ipstring string) int { @@ -188,7 +188,7 @@ return ipInt } -func IpIntToString(ipInt int) string{ +func IpIntToString(ipInt int) string { ipSegs := make([]string, 4) var len int = len(ipSegs) buffer := bytes.NewBufferString("") diff --git a/router/router.go b/router/router.go index e548e2b..76c7ec2 100644 --- a/router/router.go +++ b/router/router.go @@ -1,13 +1,14 @@ package router import ( - "github.com/gin-gonic/gin" - "github.com/swaggo/gin-swagger" - "github.com/swaggo/gin-swagger/swaggerFiles" - "github.com/szuecs/gin-glog" "time" "webserver/controllers" "webserver/middlewares/auth" + + "github.com/gin-gonic/gin" + ginSwagger "github.com/swaggo/gin-swagger" + "github.com/swaggo/gin-swagger/swaggerFiles" + ginglog "github.com/szuecs/gin-glog" _ "webserver/docs" ) @@ -16,7 +17,7 @@ r := gin.Default() r.Use(ginglog.Logger(3 * time.Second)) - r.Use(auth.AuthHandler())//auth杩囨护鍣� + r.Use(auth.AuthHandler()) //auth杩囨护鍣� r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) @@ -38,31 +39,30 @@ eventPushController := new(controllers.EventPushController) pollConfigController := new(controllers.PollConfigController) fileController := new(controllers.FileController) - sysMenuController :=new(controllers.SysMenuController) - clusterController :=new(controllers.ClusterController) - sysRoleController :=new(controllers.RoleController) + sysMenuController := new(controllers.SysMenuController) + clusterController := new(controllers.ClusterController) + sysRoleController := new(controllers.RoleController) - - sysApi := r.Group( "/data/api-u/sys") + sysApi := r.Group("/data/api-u/sys") { - sysApi.POST("/login",userController.Login) - sysApi.GET("/logout",userController.Logout) - sysApi.POST("refresh_token",userController.RefreshToken) + sysApi.POST("/login", userController.Login) + sysApi.GET("/logout", userController.Logout) + sysApi.POST("refresh_token", userController.RefreshToken) } sysMenuApi := r.Group("/data/api-u/sysmenus") { - sysMenuApi.GET("/me",sysMenuController.Me) - sysMenuApi.GET("/tree",sysMenuController.MenuTree) + sysMenuApi.GET("/me", sysMenuController.Me) + sysMenuApi.GET("/tree", sysMenuController.MenuTree) } - roleApi :=r.Group("/data/api-v/role") + roleApi := r.Group("/data/api-v/role") { - roleApi.GET("/findAll",sysRoleController.FindAll) + roleApi.GET("/findAll", sysRoleController.FindAll) } userApi := r.Group("/data/api-u/users") { - userApi.GET("/current",userController.Current) + userApi.GET("/current", userController.Current) userApi.GET("/findAllUser", userController.FindAllUser) - userApi.POST("/edit",userController.Edit) + userApi.POST("/edit", userController.Edit) } urlPrefix := "/data/api-v" // wp 娣诲姞 璺緞 鍓嶇紑 @@ -71,7 +71,7 @@ area := r.Group(urlPrefix + "/area") { area.GET("/localmenu", areaController.CameraTree) - area.GET("/gb28181Tree",areaController.CameraGb28181Tree) + area.GET("/gb28181Tree", areaController.CameraGb28181Tree) area.POST("/add", areaController.AreaAdd) area.POST("/del", areaController.AreaDelete) area.POST("/update", areaController.AreaUpdate) @@ -86,7 +86,7 @@ camera.PUT("/update", cameraController.CameraUpdate) camera.DELETE("/del/:cid", cameraController.CameraDel) camera.GET("/show/:cid", cameraController.CameraSel) - camera.GET("/updateSnapshotUrl/:cid",cameraController.UpdateSnapshotUrl) + camera.GET("/updateSnapshotUrl/:cid", cameraController.UpdateSnapshotUrl) camera.POST("/alltask", cameraTaskController.FindTasksByCameraIds) camera.GET("/task/:cameraId", cameraTaskController.CameraTaskAll) @@ -105,7 +105,7 @@ cameraTaskArgsApi.GET("/deleteByGroup", cameraTaskArgsController.DeleteByGroup) cameraTaskArgsApi.POST("/getLinkRulesByCameraIds", cameraTaskArgsController.GetLinkRulesByCameraIds) cameraTaskArgsApi.POST("/saveLinkRulesByGroup", cameraTaskArgsController.SaveLinkRulesByGroup) - cameraTaskArgsApi.POST("/updateDefenceStateByGroup",cameraTaskArgsController.UpdateDefenceStateByGroup) + cameraTaskArgsApi.POST("/updateDefenceStateByGroup", cameraTaskArgsController.UpdateDefenceStateByGroup) } cameraTaskApi := r.Group(urlPrefix + "/cameraTask") @@ -179,8 +179,8 @@ vdbperson.PUT("/addDbPerson", dbPersonCont.AddDbPerson) vdbperson.POST("/fileUploadTest", fileController.UploadPersonTest) - vdbperson.POST("/faceExtract",fileController.FaceExtract) - vdbperson.POST("/searchByPhoto",fileController.SearchByPhoto) + vdbperson.POST("/faceExtract", fileController.FaceExtract) + vdbperson.POST("/searchByPhoto", fileController.SearchByPhoto) vdbperson.POST("/updateFace", dbPersonCont.UpdateFace) } @@ -195,6 +195,9 @@ vsset.POST("/saveDevInfo", ssController.SaveDevInfo) vsset.GET("/gb28181ConfigShow", ssController.Gb28181ConfigShow) vsset.POST("/gb28181ConfigEdit", ssController.Gb28181ConfigEdit) + vsset.GET("/clockInfo", ssController.GetClockinfo) + vsset.POST("/updateClock", ssController.SetSysClock) + vsset.GET("/ntpTest", ssController.TestNTPServer) } //绠楁硶搴撴搷浣� @@ -204,11 +207,11 @@ sdkApi.GET("/findAllSdk", sdkController.FindAllSdk) sdkApi.GET("/findByTaskId", sdkController.FindByTaskId) sdkApi.GET("/getById", sdkController.GetById) - sdkApi.GET("/sdkDownload",sdkController.SdkDownLoad) + sdkApi.GET("/sdkDownload", sdkController.SdkDownLoad) } //绠楁硶鍙傛暟 - sdkArgApi :=r.Group(urlPrefix + "/sdkArg") + sdkArgApi := r.Group(urlPrefix + "/sdkArg") { sdkArgApi.GET("/getSdkArgs", sdkController.GetSdkArgs) } @@ -240,7 +243,7 @@ pollCApi.GET("/getPollConfig", pollConfigController.GetPollConfig) pollCApi.POST("/updateEnable", pollConfigController.UpdateEnable) } - clusterApi := r.Group(urlPrefix+"/cluster") + clusterApi := r.Group(urlPrefix + "/cluster") { clusterApi.GET("/findCluster", clusterController.FindCluster) clusterApi.GET("/randomPwd", clusterController.RandomPwd) -- Gitblit v1.8.0