Compare commits
	
		
			2 Commits
		
	
	
		
			v2.1.2-alp
			...
			v2.1.4-alp
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						
						
							
						
						b4ec470e2f
	
				 | 
					
					
						|||
| 
						
						
							
						
						6012bccf64
	
				 | 
					
					
						
@@ -88,3 +88,49 @@ type EventModelGetAlarmingResponse struct {
 | 
			
		||||
	VideoLossAlarmMask   uint `json:"VL_AT"`
 | 
			
		||||
	VideoLossStatusMask  uint `json:"VL_AS"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 3.4.1.3
 | 
			
		||||
type EventModelGetAlarmInfoStatusResponse struct {
 | 
			
		||||
	ErrorCode              uint                         `json:"ERRORCODE"`
 | 
			
		||||
	ErrorCause             string                       `json:"ERRORCAUSE"`
 | 
			
		||||
	MotionDetectionAlarm   []MotionDetectionAlarmStatus `json:"MD"`
 | 
			
		||||
	IOAlarm                []IOAlarmStatus              `json:"IO"`
 | 
			
		||||
	StorageAlarm           []StorageAlarmStatus         `json:"ST"`
 | 
			
		||||
	StorageAlarmParameters []CameraCoveredAlarmStatus   `json:"VS"`
 | 
			
		||||
	VideoLossAlarm         []VideoLossAlarmStatus       `json:"VL"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 3.4.1.4.1
 | 
			
		||||
type MotionDetectionAlarmStatus struct {
 | 
			
		||||
	Status uint `json:"ISA"`
 | 
			
		||||
	Mask   uint `json:"LCH"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 3.4.1.4.2
 | 
			
		||||
type IOAlarmStatus struct {
 | 
			
		||||
	Status           uint   `json:"ISA"`
 | 
			
		||||
	IONumber         uint   `json:"IONO"`
 | 
			
		||||
	Mask             uint   `json:"LCH"`
 | 
			
		||||
	Name             string `json:"NAME"`
 | 
			
		||||
	NameAbbreviation string `json:"NSER"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 3.4.1.4.4
 | 
			
		||||
type CameraCoveredAlarmStatus struct {
 | 
			
		||||
	ChannelMask uint `json:"CH"`
 | 
			
		||||
	AlarmMask   uint `json:"AT"`
 | 
			
		||||
	StatusMask  uint `json:"AS"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 3.4.1.4.4
 | 
			
		||||
type VideoLossAlarmStatus struct {
 | 
			
		||||
	Status uint `json:"ISA"`
 | 
			
		||||
	Mask   uint `json:"LCH"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 3.4.1.4.21
 | 
			
		||||
type StorageAlarmStatus struct {
 | 
			
		||||
	SID   any  `json:"SID"`
 | 
			
		||||
	Type  uint `json:"ST"`
 | 
			
		||||
	Error uint `json:"E"`
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -51,110 +51,3 @@ type MediaStreamModelControlStreamRequest struct {
 | 
			
		||||
	AudioValid uint       `json:"AUDIOVALID,omitempty"`
 | 
			
		||||
	FrameMode  uint       `json:"FRAMEMODE,omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
var ip string = os.Getenv("SERVER_IP")
 | 
			
		||||
 | 
			
		||||
func (e *Package) MediaRequestDownloadVideo(token int, serial string, session string, camNo int, date string, begin_time string, end_time string, recordID string, serverId int) {
 | 
			
		||||
	e.Payload = map[string]any{
 | 
			
		||||
		"MODULE":    "MEDIASTREAMMODEL",
 | 
			
		||||
		"OPERATION": "REQUESTDOWNLOADVIDEO",
 | 
			
		||||
		"PARAMETER": map[string]any{
 | 
			
		||||
			"PT":         3,
 | 
			
		||||
			"SSRC":       1,
 | 
			
		||||
			"STREAMNAME": "DOWNLOAD" + "_" + serial + "_" + fmt.Sprint(camNo) + "_" + fmt.Sprint(serverId),
 | 
			
		||||
			"STREAMTYPE": 1, // main stream
 | 
			
		||||
			"RECORDID":   recordID,
 | 
			
		||||
			"CHANNEL":    1 << (camNo - 1),
 | 
			
		||||
			"STARTTIME":  date + begin_time,
 | 
			
		||||
			"ENDTIME":    date + end_time,
 | 
			
		||||
			"OFFSETFLAG": 1,
 | 
			
		||||
			"OFFSET":     0,
 | 
			
		||||
			"IPANDPORT":  ip + ":12092",
 | 
			
		||||
			"SERIAL":     token,
 | 
			
		||||
			"DT":         1, // high speed download
 | 
			
		||||
		},
 | 
			
		||||
		"SESSION": session,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// main server util
 | 
			
		||||
func (e *Package) MediaRequestAliveVideo(token int, camNo int64, Sid string, serial string, quality int64) {
 | 
			
		||||
 | 
			
		||||
	channel := 0
 | 
			
		||||
 | 
			
		||||
	if camNo == 1 {
 | 
			
		||||
		channel = 1
 | 
			
		||||
	} else {
 | 
			
		||||
		channel = 1 << (camNo - 1)
 | 
			
		||||
	}
 | 
			
		||||
	e.Payload = map[string]any{
 | 
			
		||||
		"MODULE":    "MEDIASTREAMMODEL",
 | 
			
		||||
		"OPERATION": "REQUESTALIVEVIDEO",
 | 
			
		||||
		"PARAMETER": map[string]any{
 | 
			
		||||
			"AUDIOVALID": 1,
 | 
			
		||||
			"CHANNEL":    channel,
 | 
			
		||||
			"FRAMEMODE":  0,
 | 
			
		||||
			"IPANDPORT":  ip + ":12092",
 | 
			
		||||
			"STREAMNAME": "LIVE" + "_" + serial + "_" + fmt.Sprint(camNo),
 | 
			
		||||
			"STREAMTYPE": quality,
 | 
			
		||||
			"SERIAL":     token,
 | 
			
		||||
		},
 | 
			
		||||
		"SESSION": Sid,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// main server util
 | 
			
		||||
func (e *Package) MediaRequestRemotePlayback(token int, serial string, session string, camNo int, date string, begin_time string, end_time string, serverId int) {
 | 
			
		||||
	if end_time == "" {
 | 
			
		||||
		e.Payload = map[string]any{
 | 
			
		||||
			"MODULE":    "MEDIASTREAMMODEL",
 | 
			
		||||
			"OPERATION": "REQUESTREMOTEPLAYBACK",
 | 
			
		||||
			"PARAMETER": map[string]any{
 | 
			
		||||
				"STREAMNAME": "PLAYBACK" + "_" + fmt.Sprint(serial) + "_" + fmt.Sprint(camNo) + "_" + fmt.Sprint(serverId),
 | 
			
		||||
				"STREAMTYPE": 1, // main stream
 | 
			
		||||
				"VIDEOTYPE":  2, // common files
 | 
			
		||||
				"CHANNEL":    1 << (camNo - 1),
 | 
			
		||||
				"STARTTIME":  date + begin_time,
 | 
			
		||||
				"IPANDPORT":  ip + ":12092",
 | 
			
		||||
				"SERIAL":     token,
 | 
			
		||||
				"PBST":       0,
 | 
			
		||||
			},
 | 
			
		||||
			"SESSION": session,
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
		e.Payload = map[string]any{
 | 
			
		||||
			"MODULE":    "MEDIASTREAMMODEL",
 | 
			
		||||
			"OPERATION": "REQUESTREMOTEPLAYBACK",
 | 
			
		||||
			"PARAMETER": map[string]any{
 | 
			
		||||
				"STREAMNAME": "PLAYBACK" + "_" + fmt.Sprint(serial) + "_" + fmt.Sprint(camNo) + "_" + fmt.Sprint(serverId),
 | 
			
		||||
				"STREAMTYPE": 1, // main stream
 | 
			
		||||
				"VIDEOTYPE":  2, // common files
 | 
			
		||||
				"CHANNEL":    1 << (camNo - 1),
 | 
			
		||||
				"STARTTIME":  date + begin_time,
 | 
			
		||||
				"ENDTIME":    date + end_time,
 | 
			
		||||
				"IPANDPORT":  ip + ":12092",
 | 
			
		||||
				"SERIAL":     token,
 | 
			
		||||
				"PBST":       0,
 | 
			
		||||
			},
 | 
			
		||||
			"SESSION": session,
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// main server util
 | 
			
		||||
func (e *Package) ControlRemotePlayback(token int, serial string, session string, camNo int, date string, begin_time string, end_time string, serverId int) {
 | 
			
		||||
	e.Payload = map[string]any{
 | 
			
		||||
		"MODULE":    "MEDIASTREAMMODEL",
 | 
			
		||||
		"OPERATION": "CONTROLREMOTEPLAYBACK",
 | 
			
		||||
		"PARAMETER": map[string]any{
 | 
			
		||||
			"STREAMNAME":  fmt.Sprint(serial) + "_" + fmt.Sprint(camNo) + "_" + fmt.Sprint(serverId),
 | 
			
		||||
			"SERIAL":      token,
 | 
			
		||||
			"PALYBACKCMD": 5,         // main stream
 | 
			
		||||
			"CHANNEL":     268435455, // common files
 | 
			
		||||
		},
 | 
			
		||||
		"SESSION": session,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
*/
 | 
			
		||||
 
 | 
			
		||||
@@ -280,7 +280,7 @@ type REDEV struct {
 | 
			
		||||
	CONTYPE int    // ???
 | 
			
		||||
	SW      int    // Источник поступаемого сигнала
 | 
			
		||||
	REPORT  int    // Порт камеры
 | 
			
		||||
	REIP    int    // IP камеры
 | 
			
		||||
	REIP    string // IP камеры
 | 
			
		||||
	ID      int    // Идентификатор камеры
 | 
			
		||||
	RENAME  string // Название устройства
 | 
			
		||||
	USER    string // Имя пользователя
 | 
			
		||||
 
 | 
			
		||||
@@ -6,10 +6,18 @@ import (
 | 
			
		||||
	"encoding/hex"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func GenerateVerifyKey(key string) string {
 | 
			
		||||
func generateHMAC(key string, data string) string {
 | 
			
		||||
	mac := hmac.New(md5.New, []byte(key))
 | 
			
		||||
 | 
			
		||||
	mac.Write([]byte(key))
 | 
			
		||||
	mac.Write([]byte(data))
 | 
			
		||||
 | 
			
		||||
	return hex.EncodeToString(mac.Sum(nil))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GenerateVerifyKey(key string) string {
 | 
			
		||||
	return generateHMAC(key, key)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GeneratePasswordHash(password string) string {
 | 
			
		||||
	return generateHMAC("streaming", password)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user