1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.waarp.ftp.core.command.directory;
21
22 import org.waarp.common.command.ReplyCode;
23 import org.waarp.common.command.exception.CommandAbstractException;
24 import org.waarp.common.command.exception.Reply530Exception;
25 import org.waarp.common.logging.WaarpLogger;
26 import org.waarp.common.logging.WaarpLoggerFactory;
27 import org.waarp.ftp.core.command.AbstractCommand;
28 import org.waarp.ftp.core.file.FtpDir;
29
30
31
32
33 public class CWD extends AbstractCommand {
34
35
36
37 private static final WaarpLogger logger =
38 WaarpLoggerFactory.getLogger(CWD.class);
39
40 @Override
41 public final void exec() throws CommandAbstractException {
42 final FtpDir current = getSession().getDir();
43 if (current == null) {
44 logger.warn("not identidied");
45 throw new Reply530Exception("Not authentificated");
46 }
47 String nextDir = getArg();
48 if (!hasArg()) {
49 nextDir = "/";
50 }
51 if (current.changeDirectory(nextDir)) {
52 getSession().setReplyCode(ReplyCode.REPLY_250_REQUESTED_FILE_ACTION_OKAY,
53 '"' + current.getPwd() +
54 "\" is the new current directory");
55 } else {
56 getSession().setReplyCode(ReplyCode.REPLY_550_REQUESTED_ACTION_NOT_TAKEN,
57 null);
58 }
59 }
60
61 }