mirror of
				https://github.com/appleboy/drone-ssh.git
				synced 2025-10-29 00:51:15 +08:00 
			
		
		
		
	Revert "feat: upgrade easyssh-proxy and update flag of timeout field (#127)"
This reverts commit eb33537e3f.
			
			
This commit is contained in:
		
							parent
							
								
									eb33537e3f
								
							
						
					
					
						commit
						9f6ad32898
					
				
							
								
								
									
										4
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								main.go
									
									
									
									
									
								
							| @ -81,7 +81,7 @@ func main() { | ||||
| 			Usage:  "connection timeout", | ||||
| 			EnvVar: "PLUGIN_TIMEOUT,SSH_TIMEOUT", | ||||
| 		}, | ||||
| 		cli.DurationFlag{ | ||||
| 		cli.IntFlag{ | ||||
| 			Name:   "command.timeout,T", | ||||
| 			Usage:  "command timeout", | ||||
| 			EnvVar: "PLUGIN_COMMAND_TIMEOUT,SSH_COMMAND_TIMEOUT", | ||||
| @ -200,7 +200,7 @@ func run(c *cli.Context) error { | ||||
| 			Host:           c.StringSlice("host"), | ||||
| 			Port:           c.Int("port"), | ||||
| 			Timeout:        c.Duration("timeout"), | ||||
| 			CommandTimeout: c.Duration("command.timeout"), | ||||
| 			CommandTimeout: c.Int("command.timeout"), | ||||
| 			Script:         c.StringSlice("script"), | ||||
| 			ScriptStop:     c.Bool("script.stop"), | ||||
| 			Secrets:        c.StringSlice("secrets"), | ||||
|  | ||||
| @ -29,7 +29,7 @@ type ( | ||||
| 		Host           []string | ||||
| 		Port           int | ||||
| 		Timeout        time.Duration | ||||
| 		CommandTimeout time.Duration | ||||
| 		CommandTimeout int | ||||
| 		Script         []string | ||||
| 		ScriptStop     bool | ||||
| 		Secrets        []string | ||||
|  | ||||
							
								
								
									
										8
									
								
								vendor/github.com/appleboy/easyssh-proxy/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								vendor/github.com/appleboy/easyssh-proxy/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -57,13 +57,7 @@ func main() { | ||||
| 		Server: "example.com", | ||||
| 		// Optional key or Password without either we try to contact your agent SOCKET | ||||
| 		//Password: "password", | ||||
| 		// Paste your source content of private key | ||||
| 		// Key: `-----BEGIN RSA PRIVATE KEY----- | ||||
| 		// MIIEpAIBAAKCAQEA4e2D/qPN08pzTac+a8ZmlP1ziJOXk45CynMPtva0rtK/RB26 | ||||
| 		// 7XC9wlRna4b3Ln8ew3q1ZcBjXwD4ppbTlmwAfQIaZTGJUgQbdsO9YA== | ||||
| 		// -----END RSA PRIVATE KEY----- | ||||
| 		// `, | ||||
| 		KeyPath: "/Users/username/.ssh/id_rsa", | ||||
| 		Key:     "/.ssh/id_rsa", | ||||
| 		Port:    "22", | ||||
| 		Timeout: 60 * time.Second, | ||||
| 	} | ||||
|  | ||||
							
								
								
									
										74
									
								
								vendor/github.com/appleboy/easyssh-proxy/easyssh.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										74
									
								
								vendor/github.com/appleboy/easyssh-proxy/easyssh.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -9,11 +9,9 @@ import ( | ||||
| 	"fmt" | ||||
| 	"io" | ||||
| 	"io/ioutil" | ||||
| 	"log" | ||||
| 	"net" | ||||
| 	"os" | ||||
| 	"path/filepath" | ||||
| 	"sync" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"golang.org/x/crypto/ssh" | ||||
| @ -67,12 +65,7 @@ func getKeyFile(keypath string) (ssh.Signer, error) { | ||||
| 	return pubkey, nil | ||||
| } | ||||
| 
 | ||||
| // returns *ssh.ClientConfig and io.Closer.
 | ||||
| // if io.Closer is not nil, io.Closer.Close() should be called when
 | ||||
| // *ssh.ClientConfig is no longer used.
 | ||||
| func getSSHConfig(config DefaultConfig) (*ssh.ClientConfig, io.Closer) { | ||||
| 	var sshAgent io.Closer | ||||
| 
 | ||||
| func getSSHConfig(config DefaultConfig) *ssh.ClientConfig { | ||||
| 	// auths holds the detected ssh auth methods
 | ||||
| 	auths := []ssh.AuthMethod{} | ||||
| 
 | ||||
| @ -80,62 +73,54 @@ func getSSHConfig(config DefaultConfig) (*ssh.ClientConfig, io.Closer) { | ||||
| 	if config.Password != "" { | ||||
| 		auths = append(auths, ssh.Password(config.Password)) | ||||
| 	} | ||||
| 
 | ||||
| 	if sshAgent, err := net.Dial("unix", os.Getenv("SSH_AUTH_SOCK")); err == nil { | ||||
| 		auths = append(auths, ssh.PublicKeysCallback(agent.NewClient(sshAgent).Signers)) | ||||
| 		defer sshAgent.Close() | ||||
| 	} | ||||
| 
 | ||||
| 	if config.KeyPath != "" { | ||||
| 		if pubkey, err := getKeyFile(config.KeyPath); err != nil { | ||||
| 			log.Printf("getKeyFile: %v\n", err) | ||||
| 		} else { | ||||
| 		if pubkey, err := getKeyFile(config.KeyPath); err == nil { | ||||
| 			auths = append(auths, ssh.PublicKeys(pubkey)) | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	if config.Key != "" { | ||||
| 		if signer, err := ssh.ParsePrivateKey([]byte(config.Key)); err != nil { | ||||
| 			log.Printf("ssh.ParsePrivateKey: %v\n", err) | ||||
| 		} else { | ||||
| 		if signer, err := ssh.ParsePrivateKey([]byte(config.Key)); err == nil { | ||||
| 			auths = append(auths, ssh.PublicKeys(signer)) | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	if sshAgent, err := net.Dial("unix", os.Getenv("SSH_AUTH_SOCK")); err == nil { | ||||
| 		auths = append(auths, ssh.PublicKeysCallback(agent.NewClient(sshAgent).Signers)) | ||||
| 	} | ||||
| 
 | ||||
| 	return &ssh.ClientConfig{ | ||||
| 		Timeout:         config.Timeout, | ||||
| 		User:            config.User, | ||||
| 		Auth:            auths, | ||||
| 		HostKeyCallback: ssh.InsecureIgnoreHostKey(), | ||||
| 	}, sshAgent | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| // Connect to remote server using MakeConfig struct and returns *ssh.Session
 | ||||
| func (ssh_conf *MakeConfig) Connect() (*ssh.Session, error) { | ||||
| // connect to remote server using MakeConfig struct and returns *ssh.Session
 | ||||
| func (ssh_conf *MakeConfig) connect() (*ssh.Session, error) { | ||||
| 	var client *ssh.Client | ||||
| 	var err error | ||||
| 
 | ||||
| 	targetConfig, closer := getSSHConfig(DefaultConfig{ | ||||
| 	targetConfig := getSSHConfig(DefaultConfig{ | ||||
| 		User:     ssh_conf.User, | ||||
| 		Key:      ssh_conf.Key, | ||||
| 		KeyPath:  ssh_conf.KeyPath, | ||||
| 		Password: ssh_conf.Password, | ||||
| 		Timeout:  ssh_conf.Timeout, | ||||
| 	}) | ||||
| 	if closer != nil { | ||||
| 		defer closer.Close() | ||||
| 	} | ||||
| 
 | ||||
| 	// Enable proxy command
 | ||||
| 	if ssh_conf.Proxy.Server != "" { | ||||
| 		proxyConfig, closer := getSSHConfig(DefaultConfig{ | ||||
| 		proxyConfig := getSSHConfig(DefaultConfig{ | ||||
| 			User:     ssh_conf.Proxy.User, | ||||
| 			Key:      ssh_conf.Proxy.Key, | ||||
| 			KeyPath:  ssh_conf.Proxy.KeyPath, | ||||
| 			Password: ssh_conf.Proxy.Password, | ||||
| 			Timeout:  ssh_conf.Proxy.Timeout, | ||||
| 		}) | ||||
| 		if closer != nil { | ||||
| 			defer closer.Close() | ||||
| 		} | ||||
| 
 | ||||
| 		proxyClient, err := ssh.Dial("tcp", net.JoinHostPort(ssh_conf.Proxy.Server, ssh_conf.Proxy.Port), proxyConfig) | ||||
| 		if err != nil { | ||||
| @ -171,7 +156,7 @@ func (ssh_conf *MakeConfig) Connect() (*ssh.Session, error) { | ||||
| // Stream returns one channel that combines the stdout and stderr of the command
 | ||||
| // as it is run on the remote machine, and another that sends true when the
 | ||||
| // command is done. The sessions and channels will then be closed.
 | ||||
| func (ssh_conf *MakeConfig) Stream(command string, timeout time.Duration) (<-chan string, <-chan string, <-chan bool, <-chan error, error) { | ||||
| func (ssh_conf *MakeConfig) Stream(command string, timeout int) (<-chan string, <-chan string, <-chan bool, <-chan error, error) { | ||||
| 	// continuously send the command's output over the channel
 | ||||
| 	stdoutChan := make(chan string) | ||||
| 	stderrChan := make(chan string) | ||||
| @ -179,7 +164,7 @@ func (ssh_conf *MakeConfig) Stream(command string, timeout time.Duration) (<-cha | ||||
| 	errChan := make(chan error) | ||||
| 
 | ||||
| 	// connect to remote host
 | ||||
| 	session, err := ssh_conf.Connect() | ||||
| 	session, err := ssh_conf.connect() | ||||
| 	if err != nil { | ||||
| 		return stdoutChan, stderrChan, doneChan, errChan, err | ||||
| 	} | ||||
| @ -211,29 +196,18 @@ func (ssh_conf *MakeConfig) Stream(command string, timeout time.Duration) (<-cha | ||||
| 		defer close(errChan) | ||||
| 		defer session.Close() | ||||
| 
 | ||||
| 		timeoutChan := time.After(timeout * time.Second) | ||||
| 		res := make(chan struct{}, 1) | ||||
| 		var resWg sync.WaitGroup | ||||
| 		resWg.Add(2) | ||||
| 		timeoutChan := time.After(time.Duration(timeout) * time.Second) | ||||
| 		res := make(chan bool, 1) | ||||
| 
 | ||||
| 		go func() { | ||||
| 			for stdoutScanner.Scan() { | ||||
| 				stdoutChan <- stdoutScanner.Text() | ||||
| 			} | ||||
| 			resWg.Done() | ||||
| 		}() | ||||
| 
 | ||||
| 		go func() { | ||||
| 			for stderrScanner.Scan() { | ||||
| 				stderrChan <- stderrScanner.Text() | ||||
| 			} | ||||
| 			resWg.Done() | ||||
| 		}() | ||||
| 
 | ||||
| 		go func() { | ||||
| 			resWg.Wait() | ||||
| 			// close all of our open resources
 | ||||
| 			res <- struct{}{} | ||||
| 			res <- true | ||||
| 		}() | ||||
| 
 | ||||
| 		select { | ||||
| @ -251,7 +225,7 @@ func (ssh_conf *MakeConfig) Stream(command string, timeout time.Duration) (<-cha | ||||
| } | ||||
| 
 | ||||
| // Run command on remote machine and returns its stdout as a string
 | ||||
| func (ssh_conf *MakeConfig) Run(command string, timeout time.Duration) (outStr string, errStr string, isTimeout bool, err error) { | ||||
| func (ssh_conf *MakeConfig) Run(command string, timeout int) (outStr string, errStr string, isTimeout bool, err error) { | ||||
| 	stdoutChan, stderrChan, doneChan, errChan, err := ssh_conf.Stream(command, timeout) | ||||
| 	if err != nil { | ||||
| 		return outStr, errStr, isTimeout, err | ||||
| @ -279,7 +253,7 @@ loop: | ||||
| 
 | ||||
| // Scp uploads sourceFile to remote machine like native scp console app.
 | ||||
| func (ssh_conf *MakeConfig) Scp(sourceFile string, etargetFile string) error { | ||||
| 	session, err := ssh_conf.Connect() | ||||
| 	session, err := ssh_conf.connect() | ||||
| 
 | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| @ -318,5 +292,9 @@ func (ssh_conf *MakeConfig) Scp(sourceFile string, etargetFile string) error { | ||||
| 		} | ||||
| 	}() | ||||
| 
 | ||||
| 	return session.Run(fmt.Sprintf("scp -tr %s", etargetFile)) | ||||
| 	if err := session.Run(fmt.Sprintf("scp -tr %s", etargetFile)); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 
 | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
							
								
								
									
										10
									
								
								vendor/vendor.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								vendor/vendor.json
									
									
									
									
										vendored
									
									
								
							| @ -3,12 +3,12 @@ | ||||
| 	"ignore": "test", | ||||
| 	"package": [ | ||||
| 		{ | ||||
| 			"checksumSHA1": "s2s4GT8UfsxkawhCzjkKWi/XWLI=", | ||||
| 			"checksumSHA1": "EcF7T9tPEMMJfuRdPBB3NdRUg4c=", | ||||
| 			"path": "github.com/appleboy/easyssh-proxy", | ||||
| 			"revision": "9b6972862812dafd568ffb2cfc7b49510af7d502", | ||||
| 			"revisionTime": "2018-10-17T14:39:14Z", | ||||
| 			"version": "master", | ||||
| 			"versionExact": "master" | ||||
| 			"revision": "33d87eae3a018c3312e32cc4eb4578d5a563aabd", | ||||
| 			"revisionTime": "2017-05-16T07:22:25Z", | ||||
| 			"version": "1.1.6", | ||||
| 			"versionExact": "1.1.6" | ||||
| 		}, | ||||
| 		{ | ||||
| 			"checksumSHA1": "dvabztWVQX8f6oMLRyv4dLH+TGY=", | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Bo-Yi Wu
						Bo-Yi Wu