Fix #132
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2020-12-06 16:14:56 +08:00
parent 1509d42222
commit d9646a6e00

17
cmd.go
View File

@@ -1042,15 +1042,24 @@ func (cmd commandRmd) RequireAuth() bool {
}
func (cmd commandRmd) Execute(sess *Session, param string) {
path := sess.buildPath(param)
p := sess.buildPath(param)
var ctx = Context{
Sess: sess,
Cmd: "RMD",
Param: param,
}
sess.server.notifiers.BeforeDeleteDir(&ctx, path)
err := sess.server.Driver.DeleteDir(&ctx, path)
sess.server.notifiers.AfterDirDeleted(&ctx, path, err)
if param == "/" || param == "" {
sess.writeMessage(550, "Directory / cannot be deleted")
}
var needChangeCurDir = strings.HasPrefix(param, sess.curDir)
sess.server.notifiers.BeforeDeleteDir(&ctx, p)
err := sess.server.Driver.DeleteDir(&ctx, p)
if needChangeCurDir {
sess.curDir = path.Dir(param)
}
sess.server.notifiers.AfterDirDeleted(&ctx, p, err)
if err == nil {
sess.writeMessage(250, "Directory deleted")
} else {

View File

@@ -117,6 +117,13 @@ func TestFileDriver(t *testing.T) {
err = f.RemoveDir("/src")
assert.NoError(t, err)
curDir, err = f.CurrentDir()
assert.NoError(t, err)
assert.EqualValues(t, "/", curDir)
assert.NoError(t, f.Stor(" file_name .test", strings.NewReader("tttt")))
assert.NoError(t, f.Delete(" file_name .test"))
err = f.Quit()
assert.NoError(t, err)

View File

@@ -226,7 +226,7 @@ func (sess *Session) parseLine(line string) (string, string) {
if len(params) == 1 {
return params[0], ""
}
return params[0], strings.TrimSpace(params[1])
return params[0], params[1]
}
// writeMessage will send a standard FTP response back to the client.