Explorar o código

ssh/tailssh: add more metadata to recording header

Updates tailscale/corp#9967

Signed-off-by: Maisem Ali <[email protected]>
Maisem Ali %!s(int64=3) %!d(string=hai) anos
pai
achega
7a97e64ef0
Modificáronse 1 ficheiros con 18 adicións e 7 borrados
  1. 18 7
      ssh/tailssh/tailssh.go

+ 18 - 7
ssh/tailssh/tailssh.go

@@ -1366,12 +1366,16 @@ func (ss *sshSession) startNewRecording() (_ *recording, err error) {
 		Env       map[string]string `json:"env"`
 
 		// Tailscale-specific fields:
-		SrcNode   string               `json:"srcNode"` // name
-		SrcNodeID tailcfg.StableNodeID `json:"srcNodeID"`
-		SSHUser   string               `json:"sshUser"`
-		LocalUser string               `json:"localUser"`
+		SrcNode     string               `json:"srcNode"` // node FQDN
+		SrcNodeID   tailcfg.StableNodeID `json:"srcNodeID"`
+		SrcNodeTags []string             `json:"srcNodeTags"`
+		SSHUser     string               `json:"sshUser"` // as presented by the client
+		LocalUser   string               `json:"localUser"`
+
+		SrcNodeUserID tailcfg.UserID `json:"srcNodeUserID"` // if not tagged
+		SrcNodeUser   string         `json:"srcNodeUser"`
 	}
-	j, err := json.Marshal(CastHeader{
+	ch := CastHeader{
 		Version:   2,
 		Width:     w.Width,
 		Height:    w.Height,
@@ -1389,9 +1393,16 @@ func (ss *sshSession) startNewRecording() (_ *recording, err error) {
 		},
 		SSHUser:   ss.conn.info.sshUser,
 		LocalUser: ss.conn.localUser.Username,
-		SrcNode:   ss.conn.info.node.Name,
+		SrcNode:   strings.TrimSuffix(ss.conn.info.node.Name, "."),
 		SrcNodeID: ss.conn.info.node.StableID,
-	})
+	}
+	if !ss.conn.info.node.IsTagged() {
+		ch.SrcNodeUser = ss.conn.info.uprof.LoginName
+		ch.SrcNodeUserID = ss.conn.info.node.User
+	} else {
+		ch.SrcNodeTags = ss.conn.info.node.Tags
+	}
+	j, err := json.Marshal(ch)
 	if err != nil {
 		return nil, err
 	}