| 110 | } |
| 111 | |
| 112 | func createSFTPHandler() ssh.SubsystemHandler { |
| 113 | return func(s ssh.Session) { |
| 114 | server, err := sftp.NewServer(s) |
| 115 | if err != nil { |
| 116 | log.Printf("Sftp server init error: %s\n", err) |
| 117 | return |
| 118 | } |
| 119 | |
| 120 | log.Printf("New sftp connection from %s", s.RemoteAddr().String()) |
| 121 | if err := server.Serve(); err == io.EOF { |
| 122 | server.Close() |
| 123 | log.Println("Sftp connection closed by client") |
| 124 | } else if err != nil { |
| 125 | log.Println("Sftp server exited with error:", err) |
| 126 | } |
| 127 | } |
| 128 | } |
| 129 | |
| 130 | func dialHomeAndListen(username string, address string, homeBindPort uint, askForPassword bool) (net.Listener, error) { |
| 131 | var ( |