From 7a97e64ef0ca20fd34c8f9bbb7190489dbe61377 Mon Sep 17 00:00:00 2001 From: Maisem Ali Date: Tue, 21 Mar 2023 16:22:36 -0700 Subject: [PATCH] ssh/tailssh: add more metadata to recording header Updates tailscale/corp#9967 Signed-off-by: Maisem Ali --- ssh/tailssh/tailssh.go | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/ssh/tailssh/tailssh.go b/ssh/tailssh/tailssh.go index d642ad0e4..85ac064cc 100644 --- a/ssh/tailssh/tailssh.go +++ b/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 }