From e16d5d3bb47c8b36f62f3cbffa33d123a9be354e Mon Sep 17 00:00:00 2001 From: ShiKhu Date: Wed, 22 Sep 2021 15:09:37 +0200 Subject: [PATCH] feat(backend): iframe message --- backend/pkg/messages/filters.go | 2 +- backend/pkg/messages/messages.go | 372 ++------------------------- backend/pkg/messages/read_message.go | 168 +----------- 3 files changed, 30 insertions(+), 512 deletions(-) diff --git a/backend/pkg/messages/filters.go b/backend/pkg/messages/filters.go index d0a17577b..3aa209c42 100644 --- a/backend/pkg/messages/filters.go +++ b/backend/pkg/messages/filters.go @@ -3,7 +3,7 @@ package messages func IsReplayerType(id uint64) bool { - return 0 == id || 4 == id || 5 == id || 6 == id || 7 == id || 8 == id || 9 == id || 10 == id || 11 == id || 12 == id || 13 == id || 14 == id || 15 == id || 16 == id || 18 == id || 19 == id || 20 == id || 22 == id || 37 == id || 38 == id || 39 == id || 40 == id || 41 == id || 44 == id || 45 == id || 46 == id || 47 == id || 48 == id || 49 == id || 54 == id || 55 == id || 59 == id || 90 == id || 93 == id || 100 == id || 102 == id || 103 == id || 105 == id + return 0 == id || 2 == id || 4 == id || 5 == id || 6 == id || 7 == id || 8 == id || 9 == id || 10 == id || 11 == id || 12 == id || 13 == id || 14 == id || 15 == id || 16 == id || 18 == id || 19 == id || 20 == id || 22 == id || 37 == id || 38 == id || 39 == id || 40 == id || 41 == id || 44 == id || 45 == id || 46 == id || 47 == id || 48 == id || 49 == id || 54 == id || 55 == id || 59 == id || 69 == id || 70 == id } func IsIOSType(id uint64) bool { diff --git a/backend/pkg/messages/messages.go b/backend/pkg/messages/messages.go index e150256c3..10cb158ec 100644 --- a/backend/pkg/messages/messages.go +++ b/backend/pkg/messages/messages.go @@ -86,6 +86,18 @@ p = WriteString(msg.UserCountry, buf, p) return buf[:p] } +type SessionDisconnect struct { + *meta + Timestamp uint64 +} +func (msg *SessionDisconnect) Encode() []byte{ + buf := make([]byte, 11 ) + buf[0] = 2 + p := 1 + p = WriteUint(msg.Timestamp, buf, p) + return buf[:p] +} + type SessionEnd struct { *meta Timestamp uint64 @@ -1166,361 +1178,17 @@ p = WriteString(msg.Selector, buf, p) return buf[:p] } -type IOSSessionStart struct { +type CreateIFrameDocument struct { *meta - Timestamp uint64 -ProjectID uint64 -TrackerVersion string -RevID string -UserUUID string -UserOS string -UserOSVersion string -UserDevice string -UserDeviceType string -UserCountry string + FrameID uint64 +ID uint64 } -func (msg *IOSSessionStart) Encode() []byte{ - buf := make([]byte, 101 + len(msg.TrackerVersion)+ len(msg.RevID)+ len(msg.UserUUID)+ len(msg.UserOS)+ len(msg.UserOSVersion)+ len(msg.UserDevice)+ len(msg.UserDeviceType)+ len(msg.UserCountry)) - buf[0] = 90 +func (msg *CreateIFrameDocument) Encode() []byte{ + buf := make([]byte, 21 ) + buf[0] = 70 p := 1 - p = WriteUint(msg.Timestamp, buf, p) -p = WriteUint(msg.ProjectID, buf, p) -p = WriteString(msg.TrackerVersion, buf, p) -p = WriteString(msg.RevID, buf, p) -p = WriteString(msg.UserUUID, buf, p) -p = WriteString(msg.UserOS, buf, p) -p = WriteString(msg.UserOSVersion, buf, p) -p = WriteString(msg.UserDevice, buf, p) -p = WriteString(msg.UserDeviceType, buf, p) -p = WriteString(msg.UserCountry, buf, p) - return buf[:p] -} - -type IOSSessionEnd struct { - *meta - Timestamp uint64 -} -func (msg *IOSSessionEnd) Encode() []byte{ - buf := make([]byte, 11 ) - buf[0] = 91 - p := 1 - p = WriteUint(msg.Timestamp, buf, p) - return buf[:p] -} - -type IOSMetadata struct { - *meta - Timestamp uint64 -Length uint64 -Key string -Value string -} -func (msg *IOSMetadata) Encode() []byte{ - buf := make([]byte, 41 + len(msg.Key)+ len(msg.Value)) - buf[0] = 92 - p := 1 - p = WriteUint(msg.Timestamp, buf, p) -p = WriteUint(msg.Length, buf, p) -p = WriteString(msg.Key, buf, p) -p = WriteString(msg.Value, buf, p) - return buf[:p] -} - -type IOSCustomEvent struct { - *meta - Timestamp uint64 -Length uint64 -Name string -Payload string -} -func (msg *IOSCustomEvent) Encode() []byte{ - buf := make([]byte, 41 + len(msg.Name)+ len(msg.Payload)) - buf[0] = 93 - p := 1 - p = WriteUint(msg.Timestamp, buf, p) -p = WriteUint(msg.Length, buf, p) -p = WriteString(msg.Name, buf, p) -p = WriteString(msg.Payload, buf, p) - return buf[:p] -} - -type IOSUserID struct { - *meta - Timestamp uint64 -Length uint64 -Value string -} -func (msg *IOSUserID) Encode() []byte{ - buf := make([]byte, 31 + len(msg.Value)) - buf[0] = 94 - p := 1 - p = WriteUint(msg.Timestamp, buf, p) -p = WriteUint(msg.Length, buf, p) -p = WriteString(msg.Value, buf, p) - return buf[:p] -} - -type IOSUserAnonymousID struct { - *meta - Timestamp uint64 -Length uint64 -Value string -} -func (msg *IOSUserAnonymousID) Encode() []byte{ - buf := make([]byte, 31 + len(msg.Value)) - buf[0] = 95 - p := 1 - p = WriteUint(msg.Timestamp, buf, p) -p = WriteUint(msg.Length, buf, p) -p = WriteString(msg.Value, buf, p) - return buf[:p] -} - -type IOSScreenChanges struct { - *meta - Timestamp uint64 -SkipData []byte -} -func (msg *IOSScreenChanges) Encode() []byte{ - buf := make([]byte, 21 + len(msg.SkipData)) - buf[0] = 96 - p := 1 - p = WriteUint(msg.Timestamp, buf, p) -p = WriteData(msg.SkipData, buf, p) - return buf[:p] -} - -type IOSCrash struct { - *meta - Timestamp uint64 -Length uint64 -Name string -Reason string -Stacktrace string -} -func (msg *IOSCrash) Encode() []byte{ - buf := make([]byte, 51 + len(msg.Name)+ len(msg.Reason)+ len(msg.Stacktrace)) - buf[0] = 97 - p := 1 - p = WriteUint(msg.Timestamp, buf, p) -p = WriteUint(msg.Length, buf, p) -p = WriteString(msg.Name, buf, p) -p = WriteString(msg.Reason, buf, p) -p = WriteString(msg.Stacktrace, buf, p) - return buf[:p] -} - -type IOSScreenEnter struct { - *meta - Timestamp uint64 -Length uint64 -Title string -ViewName string -} -func (msg *IOSScreenEnter) Encode() []byte{ - buf := make([]byte, 41 + len(msg.Title)+ len(msg.ViewName)) - buf[0] = 98 - p := 1 - p = WriteUint(msg.Timestamp, buf, p) -p = WriteUint(msg.Length, buf, p) -p = WriteString(msg.Title, buf, p) -p = WriteString(msg.ViewName, buf, p) - return buf[:p] -} - -type IOSScreenLeave struct { - *meta - Timestamp uint64 -Length uint64 -Title string -ViewName string -} -func (msg *IOSScreenLeave) Encode() []byte{ - buf := make([]byte, 41 + len(msg.Title)+ len(msg.ViewName)) - buf[0] = 99 - p := 1 - p = WriteUint(msg.Timestamp, buf, p) -p = WriteUint(msg.Length, buf, p) -p = WriteString(msg.Title, buf, p) -p = WriteString(msg.ViewName, buf, p) - return buf[:p] -} - -type IOSClickEvent struct { - *meta - Timestamp uint64 -Length uint64 -Label string -X uint64 -Y uint64 -} -func (msg *IOSClickEvent) Encode() []byte{ - buf := make([]byte, 51 + len(msg.Label)) - buf[0] = 100 - p := 1 - p = WriteUint(msg.Timestamp, buf, p) -p = WriteUint(msg.Length, buf, p) -p = WriteString(msg.Label, buf, p) -p = WriteUint(msg.X, buf, p) -p = WriteUint(msg.Y, buf, p) - return buf[:p] -} - -type IOSInputEvent struct { - *meta - Timestamp uint64 -Length uint64 -Value string -ValueMasked bool -Label string -} -func (msg *IOSInputEvent) Encode() []byte{ - buf := make([]byte, 51 + len(msg.Value)+ len(msg.Label)) - buf[0] = 101 - p := 1 - p = WriteUint(msg.Timestamp, buf, p) -p = WriteUint(msg.Length, buf, p) -p = WriteString(msg.Value, buf, p) -p = WriteBoolean(msg.ValueMasked, buf, p) -p = WriteString(msg.Label, buf, p) - return buf[:p] -} - -type IOSPerformanceEvent struct { - *meta - Timestamp uint64 -Length uint64 -Name string -Value uint64 -} -func (msg *IOSPerformanceEvent) Encode() []byte{ - buf := make([]byte, 41 + len(msg.Name)) - buf[0] = 102 - p := 1 - p = WriteUint(msg.Timestamp, buf, p) -p = WriteUint(msg.Length, buf, p) -p = WriteString(msg.Name, buf, p) -p = WriteUint(msg.Value, buf, p) - return buf[:p] -} - -type IOSLog struct { - *meta - Timestamp uint64 -Length uint64 -Severity string -Content string -} -func (msg *IOSLog) Encode() []byte{ - buf := make([]byte, 41 + len(msg.Severity)+ len(msg.Content)) - buf[0] = 103 - p := 1 - p = WriteUint(msg.Timestamp, buf, p) -p = WriteUint(msg.Length, buf, p) -p = WriteString(msg.Severity, buf, p) -p = WriteString(msg.Content, buf, p) - return buf[:p] -} - -type IOSInternalError struct { - *meta - Timestamp uint64 -Length uint64 -Content string -} -func (msg *IOSInternalError) Encode() []byte{ - buf := make([]byte, 31 + len(msg.Content)) - buf[0] = 104 - p := 1 - p = WriteUint(msg.Timestamp, buf, p) -p = WriteUint(msg.Length, buf, p) -p = WriteString(msg.Content, buf, p) - return buf[:p] -} - -type IOSNetworkCall struct { - *meta - Timestamp uint64 -Length uint64 -Duration uint64 -Headers string -Body string -URL string -Success bool -Method string -Status uint64 -} -func (msg *IOSNetworkCall) Encode() []byte{ - buf := make([]byte, 91 + len(msg.Headers)+ len(msg.Body)+ len(msg.URL)+ len(msg.Method)) - buf[0] = 105 - p := 1 - p = WriteUint(msg.Timestamp, buf, p) -p = WriteUint(msg.Length, buf, p) -p = WriteUint(msg.Duration, buf, p) -p = WriteString(msg.Headers, buf, p) -p = WriteString(msg.Body, buf, p) -p = WriteString(msg.URL, buf, p) -p = WriteBoolean(msg.Success, buf, p) -p = WriteString(msg.Method, buf, p) -p = WriteUint(msg.Status, buf, p) - return buf[:p] -} - -type IOSPerformanceAggregated struct { - *meta - TimestampStart uint64 -TimestampEnd uint64 -MinFPS uint64 -AvgFPS uint64 -MaxFPS uint64 -MinCPU uint64 -AvgCPU uint64 -MaxCPU uint64 -MinMemory uint64 -AvgMemory uint64 -MaxMemory uint64 -MinBattery uint64 -AvgBattery uint64 -MaxBattery uint64 -} -func (msg *IOSPerformanceAggregated) Encode() []byte{ - buf := make([]byte, 141 ) - buf[0] = 110 - p := 1 - p = WriteUint(msg.TimestampStart, buf, p) -p = WriteUint(msg.TimestampEnd, buf, p) -p = WriteUint(msg.MinFPS, buf, p) -p = WriteUint(msg.AvgFPS, buf, p) -p = WriteUint(msg.MaxFPS, buf, p) -p = WriteUint(msg.MinCPU, buf, p) -p = WriteUint(msg.AvgCPU, buf, p) -p = WriteUint(msg.MaxCPU, buf, p) -p = WriteUint(msg.MinMemory, buf, p) -p = WriteUint(msg.AvgMemory, buf, p) -p = WriteUint(msg.MaxMemory, buf, p) -p = WriteUint(msg.MinBattery, buf, p) -p = WriteUint(msg.AvgBattery, buf, p) -p = WriteUint(msg.MaxBattery, buf, p) - return buf[:p] -} - -type IOSIssueEvent struct { - *meta - Timestamp uint64 -Type string -ContextString string -Context string -Payload string -} -func (msg *IOSIssueEvent) Encode() []byte{ - buf := make([]byte, 51 + len(msg.Type)+ len(msg.ContextString)+ len(msg.Context)+ len(msg.Payload)) - buf[0] = 111 - p := 1 - p = WriteUint(msg.Timestamp, buf, p) -p = WriteString(msg.Type, buf, p) -p = WriteString(msg.ContextString, buf, p) -p = WriteString(msg.Context, buf, p) -p = WriteString(msg.Payload, buf, p) + p = WriteUint(msg.FrameID, buf, p) +p = WriteUint(msg.ID, buf, p) return buf[:p] } diff --git a/backend/pkg/messages/read_message.go b/backend/pkg/messages/read_message.go index dced60ed8..87993e9f3 100644 --- a/backend/pkg/messages/read_message.go +++ b/backend/pkg/messages/read_message.go @@ -44,6 +44,11 @@ if msg.UserDeviceHeapSize, err = ReadUint(reader); err != nil { return nil, err if msg.UserCountry, err = ReadString(reader); err != nil { return nil, err } return msg, nil + case 2: + msg := &SessionDisconnect{ meta: &meta{ TypeID: 2} } + if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } + return msg, nil + case 3: msg := &SessionEnd{ meta: &meta{ TypeID: 3} } if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } @@ -521,165 +526,10 @@ if msg.Label, err = ReadString(reader); err != nil { return nil, err } if msg.Selector, err = ReadString(reader); err != nil { return nil, err } return msg, nil - case 90: - msg := &IOSSessionStart{ meta: &meta{ TypeID: 90} } - if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } -if msg.ProjectID, err = ReadUint(reader); err != nil { return nil, err } -if msg.TrackerVersion, err = ReadString(reader); err != nil { return nil, err } -if msg.RevID, err = ReadString(reader); err != nil { return nil, err } -if msg.UserUUID, err = ReadString(reader); err != nil { return nil, err } -if msg.UserOS, err = ReadString(reader); err != nil { return nil, err } -if msg.UserOSVersion, err = ReadString(reader); err != nil { return nil, err } -if msg.UserDevice, err = ReadString(reader); err != nil { return nil, err } -if msg.UserDeviceType, err = ReadString(reader); err != nil { return nil, err } -if msg.UserCountry, err = ReadString(reader); err != nil { return nil, err } - return msg, nil - - case 91: - msg := &IOSSessionEnd{ meta: &meta{ TypeID: 91} } - if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } - return msg, nil - - case 92: - msg := &IOSMetadata{ meta: &meta{ TypeID: 92} } - if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } -if msg.Length, err = ReadUint(reader); err != nil { return nil, err } -if msg.Key, err = ReadString(reader); err != nil { return nil, err } -if msg.Value, err = ReadString(reader); err != nil { return nil, err } - return msg, nil - - case 93: - msg := &IOSCustomEvent{ meta: &meta{ TypeID: 93} } - if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } -if msg.Length, err = ReadUint(reader); err != nil { return nil, err } -if msg.Name, err = ReadString(reader); err != nil { return nil, err } -if msg.Payload, err = ReadString(reader); err != nil { return nil, err } - return msg, nil - - case 94: - msg := &IOSUserID{ meta: &meta{ TypeID: 94} } - if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } -if msg.Length, err = ReadUint(reader); err != nil { return nil, err } -if msg.Value, err = ReadString(reader); err != nil { return nil, err } - return msg, nil - - case 95: - msg := &IOSUserAnonymousID{ meta: &meta{ TypeID: 95} } - if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } -if msg.Length, err = ReadUint(reader); err != nil { return nil, err } -if msg.Value, err = ReadString(reader); err != nil { return nil, err } - return msg, nil - - case 96: - msg := &IOSScreenChanges{ meta: &meta{ TypeID: 96} } - if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } -if msg.SkipData, err = ReadData(reader); err != nil { return nil, err } - return msg, nil - - case 97: - msg := &IOSCrash{ meta: &meta{ TypeID: 97} } - if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } -if msg.Length, err = ReadUint(reader); err != nil { return nil, err } -if msg.Name, err = ReadString(reader); err != nil { return nil, err } -if msg.Reason, err = ReadString(reader); err != nil { return nil, err } -if msg.Stacktrace, err = ReadString(reader); err != nil { return nil, err } - return msg, nil - - case 98: - msg := &IOSScreenEnter{ meta: &meta{ TypeID: 98} } - if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } -if msg.Length, err = ReadUint(reader); err != nil { return nil, err } -if msg.Title, err = ReadString(reader); err != nil { return nil, err } -if msg.ViewName, err = ReadString(reader); err != nil { return nil, err } - return msg, nil - - case 99: - msg := &IOSScreenLeave{ meta: &meta{ TypeID: 99} } - if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } -if msg.Length, err = ReadUint(reader); err != nil { return nil, err } -if msg.Title, err = ReadString(reader); err != nil { return nil, err } -if msg.ViewName, err = ReadString(reader); err != nil { return nil, err } - return msg, nil - - case 100: - msg := &IOSClickEvent{ meta: &meta{ TypeID: 100} } - if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } -if msg.Length, err = ReadUint(reader); err != nil { return nil, err } -if msg.Label, err = ReadString(reader); err != nil { return nil, err } -if msg.X, err = ReadUint(reader); err != nil { return nil, err } -if msg.Y, err = ReadUint(reader); err != nil { return nil, err } - return msg, nil - - case 101: - msg := &IOSInputEvent{ meta: &meta{ TypeID: 101} } - if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } -if msg.Length, err = ReadUint(reader); err != nil { return nil, err } -if msg.Value, err = ReadString(reader); err != nil { return nil, err } -if msg.ValueMasked, err = ReadBoolean(reader); err != nil { return nil, err } -if msg.Label, err = ReadString(reader); err != nil { return nil, err } - return msg, nil - - case 102: - msg := &IOSPerformanceEvent{ meta: &meta{ TypeID: 102} } - if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } -if msg.Length, err = ReadUint(reader); err != nil { return nil, err } -if msg.Name, err = ReadString(reader); err != nil { return nil, err } -if msg.Value, err = ReadUint(reader); err != nil { return nil, err } - return msg, nil - - case 103: - msg := &IOSLog{ meta: &meta{ TypeID: 103} } - if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } -if msg.Length, err = ReadUint(reader); err != nil { return nil, err } -if msg.Severity, err = ReadString(reader); err != nil { return nil, err } -if msg.Content, err = ReadString(reader); err != nil { return nil, err } - return msg, nil - - case 104: - msg := &IOSInternalError{ meta: &meta{ TypeID: 104} } - if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } -if msg.Length, err = ReadUint(reader); err != nil { return nil, err } -if msg.Content, err = ReadString(reader); err != nil { return nil, err } - return msg, nil - - case 105: - msg := &IOSNetworkCall{ meta: &meta{ TypeID: 105} } - if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } -if msg.Length, err = ReadUint(reader); err != nil { return nil, err } -if msg.Duration, err = ReadUint(reader); err != nil { return nil, err } -if msg.Headers, err = ReadString(reader); err != nil { return nil, err } -if msg.Body, err = ReadString(reader); err != nil { return nil, err } -if msg.URL, err = ReadString(reader); err != nil { return nil, err } -if msg.Success, err = ReadBoolean(reader); err != nil { return nil, err } -if msg.Method, err = ReadString(reader); err != nil { return nil, err } -if msg.Status, err = ReadUint(reader); err != nil { return nil, err } - return msg, nil - - case 110: - msg := &IOSPerformanceAggregated{ meta: &meta{ TypeID: 110} } - if msg.TimestampStart, err = ReadUint(reader); err != nil { return nil, err } -if msg.TimestampEnd, err = ReadUint(reader); err != nil { return nil, err } -if msg.MinFPS, err = ReadUint(reader); err != nil { return nil, err } -if msg.AvgFPS, err = ReadUint(reader); err != nil { return nil, err } -if msg.MaxFPS, err = ReadUint(reader); err != nil { return nil, err } -if msg.MinCPU, err = ReadUint(reader); err != nil { return nil, err } -if msg.AvgCPU, err = ReadUint(reader); err != nil { return nil, err } -if msg.MaxCPU, err = ReadUint(reader); err != nil { return nil, err } -if msg.MinMemory, err = ReadUint(reader); err != nil { return nil, err } -if msg.AvgMemory, err = ReadUint(reader); err != nil { return nil, err } -if msg.MaxMemory, err = ReadUint(reader); err != nil { return nil, err } -if msg.MinBattery, err = ReadUint(reader); err != nil { return nil, err } -if msg.AvgBattery, err = ReadUint(reader); err != nil { return nil, err } -if msg.MaxBattery, err = ReadUint(reader); err != nil { return nil, err } - return msg, nil - - case 111: - msg := &IOSIssueEvent{ meta: &meta{ TypeID: 111} } - if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err } -if msg.Type, err = ReadString(reader); err != nil { return nil, err } -if msg.ContextString, err = ReadString(reader); err != nil { return nil, err } -if msg.Context, err = ReadString(reader); err != nil { return nil, err } -if msg.Payload, err = ReadString(reader); err != nil { return nil, err } + case 70: + msg := &CreateIFrameDocument{ meta: &meta{ TypeID: 70} } + if msg.FrameID, err = ReadUint(reader); err != nil { return nil, err } +if msg.ID, err = ReadUint(reader); err != nil { return nil, err } return msg, nil }