This commit is contained in:
17 cmd.go
17
cmd.go @@ -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 { | ||||
| ||||
@@ -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) | ||||
| ||||
| ||||
@@ -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. | ||||
| ||||
Reference in New Issue
Block a user