aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2021-01-31 22:16:52 -0800
committerChris Lu <chris.lu@gmail.com>2021-01-31 22:16:52 -0800
commitd67ccb66c0525a60315a90869aee5f858f841371 (patch)
treea931d094784a32efa12677fee319e44e6419c044
parent76430790b996b868dc8e9bdcbd4026b9e0a0c499 (diff)
downloadseaweedfs-d67ccb66c0525a60315a90869aee5f858f841371.tar.xz
seaweedfs-d67ccb66c0525a60315a90869aee5f858f841371.zip
webdav: can start together with "weed server" or "weed filer"
-rw-r--r--weed/command/filer.go27
-rw-r--r--weed/command/server.go22
-rw-r--r--weed/server/webdav_server.go1
3 files changed, 47 insertions, 3 deletions
diff --git a/weed/command/filer.go b/weed/command/filer.go
index 633c25cac..7f665cec8 100644
--- a/weed/command/filer.go
+++ b/weed/command/filer.go
@@ -3,6 +3,7 @@ package command
import (
"fmt"
"net/http"
+ "os"
"strconv"
"strings"
"time"
@@ -19,9 +20,11 @@ import (
)
var (
- f FilerOptions
- filerStartS3 *bool
- filerS3Options S3Options
+ f FilerOptions
+ filerStartS3 *bool
+ filerS3Options S3Options
+ filerStartWebDav *bool
+ filerWebDavOptions WebDavOption
)
type FilerOptions struct {
@@ -75,6 +78,15 @@ func init() {
filerS3Options.tlsCertificate = cmdFiler.Flag.String("s3.cert.file", "", "path to the TLS certificate file")
filerS3Options.config = cmdFiler.Flag.String("s3.config", "", "path to the config file")
filerS3Options.allowEmptyFolder = cmdFiler.Flag.Bool("s3.allowEmptyFolder", false, "allow empty folders")
+
+ // start webdav on filer
+ filerStartWebDav = cmdFiler.Flag.Bool("webdav", false, "whether to start webdav gateway")
+ filerWebDavOptions.port = cmdFiler.Flag.Int("webdav.port", 7333, "webdav server http listen port")
+ filerWebDavOptions.collection = cmdFiler.Flag.String("webdav.collection", "", "collection to create the files")
+ filerWebDavOptions.tlsPrivateKey = cmdFiler.Flag.String("webdav.key.file", "", "path to the TLS private key file")
+ filerWebDavOptions.tlsCertificate = cmdFiler.Flag.String("webdav.cert.file", "", "path to the TLS certificate file")
+ filerWebDavOptions.cacheDir = cmdFiler.Flag.String("webdav.cacheDir", os.TempDir(), "local cache directory for file chunks")
+ filerWebDavOptions.cacheSizeMB = cmdFiler.Flag.Int64("webdav.cacheCapacityMB", 1000, "local cache capacity in MB")
}
var cmdFiler = &Command{
@@ -114,6 +126,15 @@ func runFiler(cmd *Command, args []string) bool {
}()
}
+ if *filerStartWebDav {
+ filerAddress := fmt.Sprintf("%s:%d", *f.ip, *f.port)
+ filerWebDavOptions.filer = &filerAddress
+ go func() {
+ time.Sleep(2 * time.Second)
+ filerWebDavOptions.startWebDav()
+ }()
+ }
+
f.startFiler()
return true
diff --git a/weed/command/server.go b/weed/command/server.go
index 9976db2ea..206de34d1 100644
--- a/weed/command/server.go
+++ b/weed/command/server.go
@@ -24,6 +24,7 @@ var (
masterOptions MasterOptions
filerOptions FilerOptions
s3Options S3Options
+ webdavOptions WebDavOption
msgBrokerOptions MessageBrokerOptions
)
@@ -65,6 +66,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")
+ isStartingWebDav = cmdServer.Flag.Bool("webdav", false, "whether to start WebDAV gateway")
isStartingMsgBroker = cmdServer.Flag.Bool("msgBroker", false, "whether to start message broker")
serverWhiteList []string
@@ -116,6 +118,13 @@ func init() {
s3Options.config = cmdServer.Flag.String("s3.config", "", "path to the config file")
s3Options.allowEmptyFolder = cmdServer.Flag.Bool("s3.allowEmptyFolder", false, "allow empty folders")
+ webdavOptions.port = cmdServer.Flag.Int("webdav.port", 7333, "webdav server http listen port")
+ webdavOptions.collection = cmdServer.Flag.String("webdav.collection", "", "collection to create the files")
+ webdavOptions.tlsPrivateKey = cmdServer.Flag.String("webdav.key.file", "", "path to the TLS private key file")
+ webdavOptions.tlsCertificate = cmdServer.Flag.String("webdav.cert.file", "", "path to the TLS certificate file")
+ webdavOptions.cacheDir = cmdServer.Flag.String("webdav.cacheDir", os.TempDir(), "local cache directory for file chunks")
+ webdavOptions.cacheSizeMB = cmdServer.Flag.Int64("webdav.cacheCapacityMB", 1000, "local cache capacity in MB")
+
msgBrokerOptions.port = cmdServer.Flag.Int("msgBroker.port", 17777, "broker gRPC listen port")
}
@@ -137,6 +146,9 @@ func runServer(cmd *Command, args []string) bool {
if *isStartingS3 {
*isStartingFiler = true
}
+ if *isStartingWebDav {
+ *isStartingFiler = true
+ }
if *isStartingMsgBroker {
*isStartingFiler = true
}
@@ -171,6 +183,7 @@ func runServer(cmd *Command, args []string) bool {
filerAddress := fmt.Sprintf("%s:%d", *serverIp, *filerOptions.port)
s3Options.filer = &filerAddress
+ webdavOptions.filer = &filerAddress
msgBrokerOptions.filer = &filerAddress
runtime.GOMAXPROCS(runtime.NumCPU())
@@ -212,6 +225,15 @@ func runServer(cmd *Command, args []string) bool {
}()
}
+ if *isStartingWebDav {
+ go func() {
+ time.Sleep(2 * time.Second)
+
+ webdavOptions.startWebDav()
+
+ }()
+ }
+
if *isStartingMsgBroker {
go func() {
time.Sleep(2 * time.Second)
diff --git a/weed/server/webdav_server.go b/weed/server/webdav_server.go
index 1afb71aee..ec9798997 100644
--- a/weed/server/webdav_server.go
+++ b/weed/server/webdav_server.go
@@ -108,6 +108,7 @@ func NewWebDavFileSystem(option *WebDavOption) (webdav.FileSystem, error) {
cacheUniqueId := util.Md5String([]byte("webdav" + option.FilerGrpcAddress + util.Version()))[0:8]
cacheDir := path.Join(option.CacheDir, cacheUniqueId)
+ os.MkdirAll(cacheDir, os.FileMode(0755))
chunkCache := chunk_cache.NewTieredChunkCache(256, cacheDir, option.CacheSizeMB, 1024*1024)
return &WebDavFileSystem{
option: option,