From cb7ebcbf7a912ff660f2c2fa8d32c239b88b77d5 Mon Sep 17 00:00:00 2001 From: Abhishek Shroff Date: Tue, 27 May 2025 23:45:38 +0530 Subject: [PATCH] [server] Allow disabling WebDAV --- server/internal/command/config.defaults.yml | 4 +++- server/internal/command/serve/cmd.go | 6 ++++-- server/internal/command/serve/config.go | 21 +++++++++++++-------- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/server/internal/command/config.defaults.yml b/server/internal/command/config.defaults.yml index 33208793..1f595e8c 100644 --- a/server/internal/command/config.defaults.yml +++ b/server/internal/command/config.defaults.yml @@ -15,7 +15,9 @@ server: port: 2448 webappsrc: web publinkpath: /pub - webdavpath: /webdav + webdav: + enabled: true + path: /webdav cors: enabled: false origins: diff --git a/server/internal/command/serve/cmd.go b/server/internal/command/serve/cmd.go index e4cdafb9..01fa24e9 100644 --- a/server/internal/command/serve/cmd.go +++ b/server/internal/command/serve/cmd.go @@ -49,7 +49,9 @@ func SetupCommand() *cobra.Command { } engine := createEngine() - webdav.SetupHandler(engine.Group(Cfg.WebDAVPath)) + if Cfg.WebDAV.Enabled { + webdav.SetupHandler(engine.Group(Cfg.WebDAV.Path)) + } apiv1.Setup(engine.Group("/api/v1")) publink.Setup(engine.Group(Cfg.PublinkPath)) @@ -81,7 +83,7 @@ func setupWebApp(r gin.IRoutes, webAppSrcDir string) { path := c.Request.URL.Path if c.Request.Method == "GET" && !strings.HasPrefix(path, "/api") && - !strings.HasPrefix(path, Cfg.WebDAVPath) && + !strings.HasPrefix(path, Cfg.WebDAV.Path) && !strings.HasPrefix(path, Cfg.PublinkPath) { c.Writer.Header().Set("Cross-Origin-Embedder-Policy", "credentialless") c.Writer.Header().Set("Cross-Origin-Opener-Policy", "same-origin") diff --git a/server/internal/command/serve/config.go b/server/internal/command/serve/config.go index 8dd59e02..e95c980f 100644 --- a/server/internal/command/serve/config.go +++ b/server/internal/command/serve/config.go @@ -1,14 +1,19 @@ package serve type Config struct { - Host string `koanf:"host"` - Port int `koanf:"port"` - WebAppSrc string `koanf:"webappsrc"` - PublinkPath string `koanf:"publinkpath"` - WebDAVPath string `koanf:"webdavpath"` - CORS CORSConfig `koanf:"cors"` - Debug bool `koanf:"debug"` - LogBody bool `koanf:"logbody"` + Host string `koanf:"host"` + Port int `koanf:"port"` + WebAppSrc string `koanf:"webappsrc"` + PublinkPath string `koanf:"publinkpath"` + WebDAV WebDAVConfig `koanf:"webdav"` + CORS CORSConfig `koanf:"cors"` + Debug bool `koanf:"debug"` + LogBody bool `koanf:"logbody"` +} + +type WebDAVConfig struct { + Enabled bool `koanf:"enabled"` + Path string `koanf:"path"` } type CORSConfig struct {