diff options
Diffstat (limited to 'weed/ftpd/ftp_server.go')
| -rw-r--r-- | weed/ftpd/ftp_server.go | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/weed/ftpd/ftp_server.go b/weed/ftpd/ftp_server.go index 4a0dca2c3..633a0371c 100644 --- a/weed/ftpd/ftp_server.go +++ b/weed/ftpd/ftp_server.go @@ -4,6 +4,7 @@ import ( "crypto/tls" "errors" "fmt" + "github.com/spf13/afero" "net" ftpserver "github.com/fclairamb/ftpserverlib" @@ -25,16 +26,18 @@ type FtpServerOption struct { type SftpServer struct { option *FtpServerOption ftpListener net.Listener + fs *FtpFileSystem } var _ = ftpserver.MainDriver(&SftpServer{}) // NewServer returns a new FTP server driver func NewFtpServer(ftpListener net.Listener, option *FtpServerOption) (*SftpServer, error) { - var err error + fs, err := NewFtpFileSystem(option) server := &SftpServer{ option: option, ftpListener: ftpListener, + fs: fs, } return server, err } @@ -71,7 +74,9 @@ func (s *SftpServer) ClientDisconnected(cc ftpserver.ClientContext) { // AuthUser authenticates the user and selects an handling driver func (s *SftpServer) AuthUser(cc ftpserver.ClientContext, username, password string) (ftpserver.ClientDriver, error) { - return nil, nil + return &ClientDriver{ + Fs: s.fs, + }, nil } // GetTLSConfig returns a TLS Certificate to use @@ -79,3 +84,7 @@ func (s *SftpServer) AuthUser(cc ftpserver.ClientContext, username, password str func (s *SftpServer) GetTLSConfig() (*tls.Config, error) { return nil, errors.New("no TLS certificate configured") } + +type ClientDriver struct { + afero.Fs +} |
