diff options
Diffstat (limited to 'weed/command/server.go')
| -rw-r--r-- | weed/command/server.go | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/weed/command/server.go b/weed/command/server.go index 797cde0dd..dd3b0c8b4 100644 --- a/weed/command/server.go +++ b/weed/command/server.go @@ -28,6 +28,7 @@ var ( masterOptions MasterOptions filerOptions FilerOptions s3Options S3Options + sftpOptions SftpOptions iamOptions IamOptions webdavOptions WebDavOption mqBrokerOptions MessageQueueBrokerOptions @@ -73,6 +74,7 @@ var ( isStartingVolumeServer = cmdServer.Flag.Bool("volume", true, "whether to start volume server") isStartingFiler = cmdServer.Flag.Bool("filer", false, "whether to start filer") isStartingS3 = cmdServer.Flag.Bool("s3", false, "whether to start S3 gateway") + isStartingSftp = cmdServer.Flag.Bool("sftp", false, "whether to start Sftp server") isStartingIam = cmdServer.Flag.Bool("iam", false, "whether to start IAM service") isStartingWebDav = cmdServer.Flag.Bool("webdav", false, "whether to start WebDAV gateway") isStartingMqBroker = cmdServer.Flag.Bool("mq.broker", false, "whether to start message queue broker") @@ -159,6 +161,17 @@ func init() { s3Options.bindIp = cmdServer.Flag.String("s3.ip.bind", "", "ip address to bind to. If empty, default to same as -ip.bind option.") s3Options.idleTimeout = cmdServer.Flag.Int("s3.idleTimeout", 10, "connection idle seconds") + sftpOptions.port = cmdServer.Flag.Int("sftp.port", 2022, "SFTP server listen port") + sftpOptions.sshPrivateKey = cmdServer.Flag.String("sftp.sshPrivateKey", "", "path to the SSH private key file for host authentication") + sftpOptions.hostKeysFolder = cmdServer.Flag.String("sftp.hostKeysFolder", "", "path to folder containing SSH private key files for host authentication") + sftpOptions.authMethods = cmdServer.Flag.String("sftp.authMethods", "password,publickey", "comma-separated list of allowed auth methods: password, publickey, keyboard-interactive") + sftpOptions.maxAuthTries = cmdServer.Flag.Int("sftp.maxAuthTries", 6, "maximum number of authentication attempts per connection") + sftpOptions.bannerMessage = cmdServer.Flag.String("sftp.bannerMessage", "SeaweedFS SFTP Server - Unauthorized access is prohibited", "message displayed before authentication") + sftpOptions.loginGraceTime = cmdServer.Flag.Duration("sftp.loginGraceTime", 2*time.Minute, "timeout for authentication") + sftpOptions.clientAliveInterval = cmdServer.Flag.Duration("sftp.clientAliveInterval", 5*time.Second, "interval for sending keep-alive messages") + sftpOptions.clientAliveCountMax = cmdServer.Flag.Int("sftp.clientAliveCountMax", 3, "maximum number of missed keep-alive messages before disconnecting") + sftpOptions.userStoreFile = cmdServer.Flag.String("sftp.userStoreFile", "", "path to JSON file containing user credentials and permissions") + sftpOptions.localSocket = cmdServer.Flag.String("sftp.localSocket", "", "default to /tmp/seaweedfs-sftp-<port>.sock") iamOptions.port = cmdServer.Flag.Int("iam.port", 8111, "iam server http listen port") webdavOptions.port = cmdServer.Flag.Int("webdav.port", 7333, "webdav server http listen port") @@ -190,6 +203,9 @@ func runServer(cmd *Command, args []string) bool { if *isStartingS3 { *isStartingFiler = true } + if *isStartingSftp { + *isStartingFiler = true + } if *isStartingIam { *isStartingFiler = true } @@ -223,6 +239,9 @@ func runServer(cmd *Command, args []string) bool { if *s3Options.bindIp == "" { s3Options.bindIp = serverBindIp } + if sftpOptions.bindIp == nil || *sftpOptions.bindIp == "" { + sftpOptions.bindIp = serverBindIp + } iamOptions.ip = serverBindIp iamOptions.masters = masterOptions.peers webdavOptions.ipBind = serverBindIp @@ -246,11 +265,13 @@ func runServer(cmd *Command, args []string) bool { mqBrokerOptions.dataCenter = serverDataCenter mqBrokerOptions.rack = serverRack s3Options.dataCenter = serverDataCenter + sftpOptions.dataCenter = serverDataCenter filerOptions.disableHttp = serverDisableHttp masterOptions.disableHttp = serverDisableHttp filerAddress := string(pb.NewServerAddress(*serverIp, *filerOptions.port, *filerOptions.portGrpc)) s3Options.filer = &filerAddress + sftpOptions.filer = &filerAddress iamOptions.filer = &filerAddress webdavOptions.filer = &filerAddress mqBrokerOptions.filerGroup = filerOptions.filerGroup @@ -291,6 +312,14 @@ func runServer(cmd *Command, args []string) bool { }() } + if *isStartingSftp { + go func() { + time.Sleep(2 * time.Second) + sftpOptions.localSocket = filerOptions.localSocket + sftpOptions.startSftpServer() + }() + } + if *isStartingIam { go func() { time.Sleep(2 * time.Second) |
