qixiaoning
2025-08-21 e38654fe9eff4562da4f18f8f018aed7879d493c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package service
 
import (
    "basic.com/pubsub/protomsg.git"
    "basic.com/valib/logger.git"
    "bytes"
    "encoding/json"
    "io/ioutil"
    "net/http"
    "time"
)
 
func inCameraTree(id, rtsp string, isGB bool) bool {
    url := "http://127.0.0.1:7009/data/api-v/camera/show?id=" + id
    if isGB {
        url = "http://127.0.0.1:7009/data/api-v/gb28181/camera/show?cid=" + id
    }
 
    body, err := Get(url, nil)
    if err != nil {
        logger.Warn("[db]", err)
        return false
    }
 
    var res Result
    if err = json.Unmarshal(body, &res); err != nil {
        logger.Warn("[db]", err)
        return false
    }
 
    if !res.Success {
        logger.Warn("[db]http response:", res)
        return false
    }
 
    var camera protomsg.Camera
    var bytes []byte
    bytes, err = json.Marshal(res.Data)
    if err != nil {
        logger.Warn("[db]", err)
        return false
    }
 
    err = json.Unmarshal(bytes, &camera)
    if err != nil {
        logger.Warn("[db]", err)
        return false
    }
 
    return camera.Rtsp == rtsp
}
 
// hik 摄像机编码转rtsp
// 参数 {"cameraIndexCode":"3d3edde85d364a15906cf316a58ee69f"}
func rtspTranslation(cameraIndexCode string) (rtsp string) {
    url := "http://192.168.122.101:20886/getHikRtsp"
    param, _ := json.Marshal(map[string]string{"cameraIndexCode": cameraIndexCode})
 
    logger.Debug("request hik api to get rtsp, camera index code:", cameraIndexCode)
 
    body, err := Post(url, param)
    if err != nil {
        logger.Warn("convert rtsp failed:", err)
        return
    }
 
    return string(body)
}
 
const (
    token = "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjQ3NDUwMjU5MjMsInVzZXIiOiJ7XCJpZFwiOlwiZTZjY2QzNmQtNGYxNi00NmZjLTg4ZDUtMDczNjU4NjZkMjA1XCIsXCJwZXJtaXNzaW9uc1wiOltcInByb2R1Y3RNYW5nZTpwdWJsaXNoXCIsXCJjb2RlTWFuZ2U6dmlld1wiLFwiZGV2aWNlTWFuYWdlOmFkZFwiLFwiYWRtaW5NYW5hZ2VcIixcIm9yZGVyTWFuZ2VcIixcImRldmljZU1hbmFnZTp2aWV3XCIsXCJwcm9kdWN0TWFuZ2U6YWRkXCIsXCJhZG1pbk1hbmFnZTp2aWV3XCIsXCJjb2RlTWFuZ2U6YWRkXCIsXCJwcm9kdWN0TWFuZ2U6b2ZmU2FsZVwiLFwib3JkZXJNYW5nZTpjYW5jZWxcIixcInByb2R1Y3RDZW50ZXI6ZG93bmxvYWRcIixcInByb2R1Y3RDZW50ZXI6YnV5XCIsXCJwcm9kdWN0TWFuZ2U6dmlld1wiLFwiYXBpXCIsXCJob21lXCIsXCJvcmRlck1hbmdlOnBheVwiLFwiYWRtaW5NYW5hZ2U6YWRkXCIsXCJvcmRlck1hbmdlOmRvd25sb2FkXCIsXCJwcm9kdWN0Q2VudGVyXCIsXCJkZXZpY2VNYW5hZ2U6dW5iaW5kXCIsXCJvcmRlck1hbmdlOnZpZXdcIixcImFkbWluTWFuYWdlOmVkaXRcIixcImRldmljZU1hbmFnZVwiLFwidmlwTWFuYWdlOmFkZFwiLFwidmlwTWFuYWdlOnZpZXdcIixcInByb2R1Y3RDZW50ZXI6dmlld1wiLFwidmlwTWFuYWdlOmVkaXRcIixcInZpcE1hbmFnZVwiLFwicHJvZHVjdE1hbmdlOmVkaXRcIixcImNvZGVNYW5nZVwiLFwicHJvZHVjdE1hbmdlXCJdLFwidXNlcm5hbWVcIjpcImJhc2ljXCJ9In0.vwjAFkWuEyadRLvIOGK8LFE3MjpY3SQ7j6AlTXnQDG8"
)
 
type Result struct {
    Code    int         `json:"code"`
    Data    interface{} `json:"data"`
    Msg     string      `json:"msg"`
    Success bool        `json:"success"`
}
 
func Get(url string, parama []byte) (body []byte, err error) {
    return request("GET", url, parama)
}
 
func Post(url string, parama []byte) (body []byte, err error) {
    return request("POST", url, parama)
}
 
func request(method string, url string, parama []byte) (body []byte, err error) {
    timeout := time.Duration(10 * time.Second)
    client := http.Client{
        Timeout: timeout,
    }
    request, err := http.NewRequest(method, url, bytes.NewBuffer(parama))
 
    request.Header.Set("Content-type", "application/json")
    request.Header.Add("Authorization", token)
 
    if err != nil {
        logger.Warn("build request fail !")
        return nil, err
    }
 
    resp, err := client.Do(request)
    if err != nil {
        logger.Warn("request error: ", err)
        return nil, err
    }
 
    defer resp.Body.Close()
 
    body, err = ioutil.ReadAll(resp.Body)
    if err != nil {
        logger.Warn(err)
    }
 
    return body, nil
}