Ctrl K
ComunidadGuías…

cli/ssh_other.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
//go:build !windows
// +build !windows

package cli

import (
	"context"
	"io"
	"net"
	"os"
	"os/signal"

	gossh "golang.org/x/crypto/ssh"
	"golang.org/x/sys/unix"
)

func listenWindowSize(ctx context.Context) <-chan os.Signal {
	windowSize := make(chan os.Signal, 1)
	signal.Notify(windowSize, unix.SIGWINCH)
	go func() {
		<-ctx.Done()
		signal.Stop(windowSize)
	}()
	return windowSize
}

func forwardGPGAgent(ctx context.Context, stderr io.Writer, sshClient *gossh.Client) (io.Closer, error) {
	localSocket, err := localGPGExtraSocket(ctx)
	if err != nil {
		return nil, err
	}

	remoteSocket, err := remoteGPGAgentSocket(sshClient)
	if err != nil {
		return nil, err
	}

	localAddr := &net.UnixAddr{
		Name: localSocket,
		Net:  "unix",
	}
	remoteAddr := &net.UnixAddr{
		Name: remoteSocket,
		Net:  "unix",
	}

	return sshRemoteForward(ctx, stderr, sshClient, localAddr, remoteAddr)
}