aboutsummaryrefslogtreecommitdiff
path: root/weed/ftpd/ftp_server.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/ftpd/ftp_server.go')
-rw-r--r--weed/ftpd/ftp_server.go13
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
+}