diff --git a/pkg/cmdrunner/cmdrunner.go b/pkg/cmdrunner/cmdrunner.go index 0f9f9ab6..b4405b68 100644 --- a/pkg/cmdrunner/cmdrunner.go +++ b/pkg/cmdrunner/cmdrunner.go @@ -473,6 +473,7 @@ func RemoteNewCommand(ctx context.Context, pk *scpacket.FeCommandPacketType) (ss if !sstore.IsValidConnectMode(connectMode) { return nil, fmt.Errorf("/remote:new invalid connectmode %q: valid modes are %s", connectMode, formatStrs([]string{sstore.ConnectModeStartup, sstore.ConnectModeAuto, sstore.ConnectModeManual}, "or", false)) } + autoInstall := resolveBool(pk.Kwargs["autoinstall"], true) var isSudo bool if sudoStr != "" { isSudo = true @@ -522,6 +523,7 @@ func RemoteNewCommand(ctx context.Context, pk *scpacket.FeCommandPacketType) (ss RemoteUser: remoteUser, RemoteHost: remoteHost, ConnectMode: connectMode, + AutoInstall: autoInstall, SSHOpts: sshOpts, RemoteOpts: remoteOpts, } diff --git a/pkg/remote/remote.go b/pkg/remote/remote.go index bb328d84..dbc3b513 100644 --- a/pkg/remote/remote.go +++ b/pkg/remote/remote.go @@ -678,7 +678,7 @@ func (msh *MShellProc) Launch() { if err == context.Canceled { err = fmt.Errorf("forced disconnection") } - if semver.MajorMinor(mshellVersion) != semver.MajorMinor(MShellVersion) { + if err == nil && semver.MajorMinor(mshellVersion) != semver.MajorMinor(MShellVersion) { err = fmt.Errorf("mshell version is not compatible current=%s remote=%s", MShellVersion, mshellVersion) } if err != nil { diff --git a/pkg/sstore/dbops.go b/pkg/sstore/dbops.go index 20555ce2..55762a3f 100644 --- a/pkg/sstore/dbops.go +++ b/pkg/sstore/dbops.go @@ -127,8 +127,8 @@ func UpsertRemote(ctx context.Context, r *RemoteType) error { maxRemoteIdx := tx.GetInt(query) r.RemoteIdx = int64(maxRemoteIdx + 1) query = `INSERT INTO remote - ( remoteid, physicalid, remotetype, remotealias, remotecanonicalname, remotesudo, remoteuser, remotehost, connectmode, initpk, sshopts, remoteopts, lastconnectts, archived, remoteidx) VALUES - (:remoteid,:physicalid,:remotetype,:remotealias,:remotecanonicalname,:remotesudo,:remoteuser,:remotehost,:connectmode,:initpk,:sshopts,:remoteopts,:lastconnectts,:archived,:remoteidx)` + ( remoteid, physicalid, remotetype, remotealias, remotecanonicalname, remotesudo, remoteuser, remotehost, connectmode, autoinstall, initpk, sshopts, remoteopts, lastconnectts, archived, remoteidx) VALUES + (:remoteid,:physicalid,:remotetype,:remotealias,:remotecanonicalname,:remotesudo,:remoteuser,:remotehost,:connectmode,:autoinstall,:initpk,:sshopts,:remoteopts,:lastconnectts,:archived,:remoteidx)` tx.NamedExecWrap(query, r.ToMap()) return nil }) diff --git a/pkg/sstore/sstore.go b/pkg/sstore/sstore.go index 143286c8..e6d39f68 100644 --- a/pkg/sstore/sstore.go +++ b/pkg/sstore/sstore.go @@ -681,6 +681,7 @@ func EnsureLocalRemote(ctx context.Context) error { RemoteUser: user.Username, RemoteHost: hostName, ConnectMode: ConnectModeStartup, + AutoInstall: true, SSHOpts: &SSHOpts{Local: true}, } err = UpsertRemote(ctx, localRemote) @@ -714,6 +715,7 @@ func AddTest01Remote(ctx context.Context) error { SSHIdentity: "/Users/mike/aws/mfmt.pem", }, ConnectMode: ConnectModeStartup, + AutoInstall: true, } err = UpsertRemote(ctx, testRemote) if err != nil { @@ -745,6 +747,7 @@ func AddTest02Remote(ctx context.Context) error { SSHUser: "test2", }, ConnectMode: ConnectModeStartup, + AutoInstall: true, } err = UpsertRemote(ctx, testRemote) if err != nil {