mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-11-27 12:49:41 +08:00
stop renaming worm files (#6154)
* stop renaming worm file Signed-off-by: lou <alex1988@outlook.com> * update after review Signed-off-by: lou <alex1988@outlook.com> * Update weed/server/filer_server_handlers_write.go --------- Signed-off-by: lou <alex1988@outlook.com> Co-authored-by: Chris Lu <chrislusf@users.noreply.github.com>
This commit is contained in:
parent
970059d4ce
commit
9369a88c5c
@ -3,15 +3,16 @@ package mount
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
"strings"
|
||||
"syscall"
|
||||
|
||||
"github.com/hanwen/go-fuse/v2/fs"
|
||||
"github.com/hanwen/go-fuse/v2/fuse"
|
||||
"github.com/seaweedfs/seaweedfs/weed/filer"
|
||||
"github.com/seaweedfs/seaweedfs/weed/glog"
|
||||
"github.com/seaweedfs/seaweedfs/weed/pb/filer_pb"
|
||||
"github.com/seaweedfs/seaweedfs/weed/util"
|
||||
"io"
|
||||
"strings"
|
||||
"syscall"
|
||||
)
|
||||
|
||||
/** Rename a file
|
||||
@ -160,6 +161,13 @@ func (wfs *WFS) Rename(cancel <-chan struct{}, in *fuse.RenameIn, oldName string
|
||||
}
|
||||
newPath := newDir.Child(newName)
|
||||
|
||||
if wfs.FilerConf != nil {
|
||||
rule := wfs.FilerConf.MatchStorageRule(string(oldPath))
|
||||
if rule.Worm {
|
||||
return fuse.EPERM
|
||||
}
|
||||
}
|
||||
|
||||
glog.V(4).Infof("dir Rename %s => %s", oldPath, newPath)
|
||||
|
||||
// update remote filer
|
||||
|
@ -160,6 +160,14 @@ func (fs *FilerServer) move(ctx context.Context, w http.ResponseWriter, r *http.
|
||||
return
|
||||
}
|
||||
|
||||
rule := fs.filer.FilerConf.MatchStorageRule(src)
|
||||
if rule.Worm {
|
||||
// you cannot move a worm file or directory
|
||||
err = fmt.Errorf("cannot move write-once entry from '%s' to '%s': operation not permitted", src, dst)
|
||||
writeJsonError(w, r, http.StatusForbidden, err)
|
||||
return
|
||||
}
|
||||
|
||||
oldDir, oldName := srcPath.DirAndName()
|
||||
newDir, newName := dstPath.DirAndName()
|
||||
newName = util.Nvl(newName, oldName)
|
||||
|
Loading…
Reference in New Issue
Block a user