Skip to content

Commit

Permalink
fix: 'modify:false' is respected
Browse files Browse the repository at this point in the history
  • Loading branch information
hormones authored Jan 18, 2022
1 parent 1a610b1 commit 436a3b0
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 11 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ tls: false
cert: cert.pem
key: key.pem
prefix: /
debug: false

# Default user settings (will be merged)
scope: .
Expand Down
1 change: 1 addition & 0 deletions cmd/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@ func readConfig(flags *pflag.FlagSet) *lib.Config {
LockSystem: webdav.NewMemLS(),
},
},
Debug: getOptB(flags, "debug"),
Auth: getOptB(flags, "auth"),
NoSniff: getOptB(flags, "nosniff"),
Cors: lib.CorsCfg{
Expand Down
3 changes: 3 additions & 0 deletions cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,9 @@ set WD_CERT.`,
}
loggerConfig := zap.NewProductionConfig()
loggerConfig.DisableCaller = true
if cfg.Debug {
loggerConfig.Level = zap.NewAtomicLevelAt(zap.DebugLevel)
}
loggerConfig.EncoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
loggerConfig.Encoding = cfg.LogFormat
logger, err := loggerConfig.Build()
Expand Down
20 changes: 9 additions & 11 deletions lib/webdav.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ type CorsCfg struct {
type Config struct {
*User
Auth bool
Debug bool
NoSniff bool
Cors CorsCfg
Users map[string]*User
Expand Down Expand Up @@ -107,17 +108,14 @@ func (c *Config) ServeHTTP(w http.ResponseWriter, r *http.Request) {
}

// Checks for user permissions relatively to this PATH.
noModification := r.Method == "GET" ||
r.Method == "HEAD" ||
r.Method == "OPTIONS" ||
r.Method == "PROPFIND" ||
r.Method == "PUT" ||
r.Method == "LOCK" ||
r.Method == "UNLOCK" ||
r.Method == "MOVE" ||
r.Method == "DELETE"

if !u.Allowed(r.URL.Path, noModification) {
noModification := r.Method == "GET" || r.Method == "HEAD" ||
r.Method == "OPTIONS" || r.Method == "PROPFIND"

allowed := u.Allowed(r.URL.Path, noModification)

zap.L().Debug("allowed & method & path", zap.Bool("allowed", allowed), zap.String("method", r.Method), zap.String("path", r.URL.Path))

if !allowed {
w.WriteHeader(http.StatusForbidden)
return
}
Expand Down

0 comments on commit 436a3b0

Please sign in to comment.