diff --git a/session.go b/session.go index 8691d2cf..1d269c63 100644 --- a/session.go +++ b/session.go @@ -4,6 +4,7 @@ import ( "errors" "fmt" "io" + "log/slog" "net" "sync" @@ -95,7 +96,7 @@ const maxSigBufSize = 128 func DefaultSessionHandler(srv *Server, conn *gossh.ServerConn, newChan gossh.NewChannel, ctx Context) { ch, reqs, err := newChan.Accept() if err != nil { - // TODO: trigger event callback + slog.Warn("ssh: failed to accept session channel", "err", err) return } sess := &session{ @@ -273,9 +274,12 @@ func (sess *session) handleRequests(reqs <-chan *gossh.Request) { go func() { if sess.pty != nil && !sess.pty.IsZero() { - // TODO: log error to server - go io.Copy(sess.pty, sess) //nolint: errcheck - go io.Copy(sess, sess.pty) //nolint: errcheck + go func() { + _, _ = io.Copy(sess.pty, sess) + }() + go func() { + _, _ = io.Copy(sess, sess.pty) + }() } sess.handler(sess) _ = sess.Exit(0) @@ -412,7 +416,7 @@ func (sess *session) handleRequests(reqs <-chan *gossh.Request) { _ = req.Reply(ok, nil) sess.Unlock() default: - // TODO: debug log + slog.Debug("ssh: unknown session request", "type", req.Type) _ = req.Reply(false, nil) } } diff --git a/tcpip.go b/tcpip.go index b238a035..5948908c 100644 --- a/tcpip.go +++ b/tcpip.go @@ -2,7 +2,7 @@ package ssh import ( "io" - "log" + "log/slog" "net" "strconv" "sync" @@ -107,7 +107,7 @@ func (h *ForwardedTCPHandler) HandleSSHRequest(ctx Context, srv *Server, req *go case "tcpip-forward": var reqPayload remoteForwardRequest if err := gossh.Unmarshal(req.Payload, &reqPayload); err != nil { - // TODO: log parse failure + slog.Warn("ssh: failed to parse tcpip-forward request", "err", err) return false, []byte{} } if srv.ReversePortForwardingCallback == nil || !srv.ReversePortForwardingCallback(ctx, reqPayload.BindAddr, reqPayload.BindPort) { @@ -116,7 +116,7 @@ func (h *ForwardedTCPHandler) HandleSSHRequest(ctx Context, srv *Server, req *go addr := net.JoinHostPort(reqPayload.BindAddr, strconv.Itoa(int(reqPayload.BindPort))) ln, err := net.Listen("tcp", addr) if err != nil { - // TODO: log listen failure + slog.Warn("ssh: reverse port forward listen failed", "addr", addr, "err", err) return false, []byte{} } _, destPortStr, _ := net.SplitHostPort(ln.Addr().String()) @@ -140,7 +140,7 @@ func (h *ForwardedTCPHandler) HandleSSHRequest(ctx Context, srv *Server, req *go for { c, err := ln.Accept() if err != nil { - // TODO: log accept failure + slog.Debug("ssh: reverse port forward accept failed", "addr", addr, "err", err) break } originAddr, orignPortStr, _ := net.SplitHostPort(c.RemoteAddr().String()) @@ -154,8 +154,7 @@ func (h *ForwardedTCPHandler) HandleSSHRequest(ctx Context, srv *Server, req *go go func() { ch, reqs, err := conn.OpenChannel(forwardedTCPChannelType, payload) if err != nil { - // TODO: log failure to open channel - log.Println(err) + slog.Warn("ssh: failed to open forwarded channel", "err", err) _ = c.Close() return } @@ -181,7 +180,7 @@ func (h *ForwardedTCPHandler) HandleSSHRequest(ctx Context, srv *Server, req *go case "cancel-tcpip-forward": var reqPayload remoteForwardCancelRequest if err := gossh.Unmarshal(req.Payload, &reqPayload); err != nil { - // TODO: log parse failure + slog.Warn("ssh: failed to parse cancel-tcpip-forward request", "err", err) return false, []byte{} } addr := net.JoinHostPort(reqPayload.BindAddr, strconv.Itoa(int(reqPayload.BindPort)))