You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							77 lines
						
					
					
						
							1.6 KiB
						
					
					
				
			
		
		
	
	
							77 lines
						
					
					
						
							1.6 KiB
						
					
					
				| package ssh
 | |
| 
 | |
| import (
 | |
| 	"io/ioutil"
 | |
| 
 | |
| 	gossh "golang.org/x/crypto/ssh"
 | |
| )
 | |
| 
 | |
| // PasswordAuth returns a functional option that sets PasswordHandler on the server.
 | |
| func PasswordAuth(fn PasswordHandler) Option {
 | |
| 	return func(srv *Server) error {
 | |
| 		srv.PasswordHandler = fn
 | |
| 		return nil
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // PublicKeyAuth returns a functional option that sets PublicKeyHandler on the server.
 | |
| func PublicKeyAuth(fn PublicKeyHandler) Option {
 | |
| 	return func(srv *Server) error {
 | |
| 		srv.PublicKeyHandler = fn
 | |
| 		return nil
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // HostKeyFile returns a functional option that adds HostSigners to the server
 | |
| // from a PEM file at filepath.
 | |
| func HostKeyFile(filepath string) Option {
 | |
| 	return func(srv *Server) error {
 | |
| 		pemBytes, err := ioutil.ReadFile(filepath)
 | |
| 		if err != nil {
 | |
| 			return err
 | |
| 		}
 | |
| 
 | |
| 		signer, err := gossh.ParsePrivateKey(pemBytes)
 | |
| 		if err != nil {
 | |
| 			return err
 | |
| 		}
 | |
| 
 | |
| 		srv.AddHostKey(signer)
 | |
| 
 | |
| 		return nil
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // HostKeyPEM returns a functional option that adds HostSigners to the server
 | |
| // from a PEM file as bytes.
 | |
| func HostKeyPEM(bytes []byte) Option {
 | |
| 	return func(srv *Server) error {
 | |
| 		signer, err := gossh.ParsePrivateKey(bytes)
 | |
| 		if err != nil {
 | |
| 			return err
 | |
| 		}
 | |
| 
 | |
| 		srv.AddHostKey(signer)
 | |
| 
 | |
| 		return nil
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // NoPty returns a functional option that sets PtyCallback to return false,
 | |
| // denying PTY requests.
 | |
| func NoPty() Option {
 | |
| 	return func(srv *Server) error {
 | |
| 		srv.PtyCallback = func(ctx Context, pty Pty) bool {
 | |
| 			return false
 | |
| 		}
 | |
| 		return nil
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // WrapConn returns a functional option that sets ConnCallback on the server.
 | |
| func WrapConn(fn ConnCallback) Option {
 | |
| 	return func(srv *Server) error {
 | |
| 		srv.ConnCallback = fn
 | |
| 		return nil
 | |
| 	}
 | |
| }
 | |
| 
 |