Skip to content

Commit

Permalink
Merge pull request #263 from Code0x58/ssh-external-tidy
Browse files Browse the repository at this point in the history
Stop quietly ignoring `--ssh-external` on Windows
  • Loading branch information
kotakanbe authored Nov 16, 2016
2 parents ef21376 + f648b5a commit 171d6d6
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 8 deletions.
4 changes: 4 additions & 0 deletions commands/prepare.go
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,10 @@ func (p *PrepareCmd) Execute(_ context.Context, f *flag.FlagSet, _ ...interface{
c.Conf.SSHExternal = p.sshExternal
c.Conf.AssumeYes = p.assumeYes

logrus.Info("Validating Config...")
if !c.Conf.Validate() {
return subcommands.ExitUsageError
}
// Set up custom logger
logger := util.NewCustomLogger(c.ServerInfo{})

Expand Down
5 changes: 5 additions & 0 deletions config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ package config

import (
"fmt"
"runtime"
"strings"

log "github.com/Sirupsen/logrus"
Expand Down Expand Up @@ -71,6 +72,10 @@ type Config struct {
func (c Config) Validate() bool {
errs := []error{}

if runtime.GOOS == "windows" && c.SSHExternal {
errs = append(errs, fmt.Errorf("-ssh-external cannot be used on windows"))
}

if len(c.ResultsDir) != 0 {
if ok, _ := valid.IsFilePath(c.ResultsDir); !ok {
errs = append(errs, fmt.Errorf(
Expand Down
11 changes: 3 additions & 8 deletions scan/sshutil.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import (
"net"
"os"
"os/exec"
"runtime"
"strings"
"syscall"
"time"
Expand Down Expand Up @@ -150,21 +149,17 @@ func parallelSSHExec(fn func(osTypeInterface) error, timeoutSec ...int) (errs []
}

func sshExec(c conf.ServerInfo, cmd string, sudo bool, log ...*logrus.Entry) (result sshResult) {
if isSSHExecNative() {
result = sshExecNative(c, cmd, sudo)
} else {
if conf.Conf.SSHExternal {
result = sshExecExternal(c, cmd, sudo)
} else {
result = sshExecNative(c, cmd, sudo)
}

logger := getSSHLogger(log...)
logger.Debug(result)
return
}

func isSSHExecNative() bool {
return runtime.GOOS == "windows" || !conf.Conf.SSHExternal
}

func sshExecNative(c conf.ServerInfo, cmd string, sudo bool) (result sshResult) {
result.Servername = c.ServerName
result.Host = c.Host
Expand Down

0 comments on commit 171d6d6

Please sign in to comment.