"encoding/hex"
"fmt"
"io"
+ "io/fs"
"os/exec"
"strconv"
"strings"
"ruderich.org/simon/safcm"
- "ruderich.org/simon/safcm/remote"
)
type SSHConfig struct {
Host string
User string // optional
SshConfig string // optional
+
+ RemoteHelpers fs.FS
}
func (c *Conn) DialSSH(cfg SSHConfig) error {
return fmt.Errorf("cannot reuse Conn")
}
+ if cfg.RemoteHelpers == nil {
+ return fmt.Errorf("SSHConfig.RemoteHelpers not set")
+ }
+ c.remoteHelpers = cfg.RemoteHelpers
+
remote := cfg.Host
if cfg.User != "" {
remote = cfg.User + "@" + cfg.Host
return err
}
- // Get embedded helper binary
- helper, err := remote.Helpers.ReadFile(
- fmt.Sprintf("helpers/%s-%s", goos, goarch))
+ // Get remote helper binary
+ helper, err := fs.ReadFile(c.remoteHelpers,
+ fmt.Sprintf("%s-%s", goos, goarch))
if err != nil {
return fmt.Errorf("remote not built for GOOS/GOARCH %s/%s",
goos, goarch)