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.service;
21
22 import org.waarp.common.command.ReplyCode;
23 import org.waarp.common.command.exception.CommandAbstractException;
24 import org.waarp.common.command.exception.Reply452Exception;
25 import org.waarp.common.command.exception.Reply501Exception;
26 import org.waarp.common.exception.InvalidArgumentException;
27 import org.waarp.ftp.core.command.AbstractCommand;
28
29
30
31
32 public class ALLO extends AbstractCommand {
33 @Override
34 public final void exec() throws CommandAbstractException {
35
36 if (!hasArg()) {
37 throw new Reply501Exception("Need a size as argument");
38 }
39 final String[] args = getArgs();
40 final int size;
41 try {
42 size = getValue(args[0]);
43 } catch (final InvalidArgumentException e) {
44 throw new Reply501Exception("Need a valid size as argument: " + args[0]);
45 }
46 final long free = getSession().getDir().getFreeSpace();
47 if (free > 0 && free < size) {
48 throw new Reply452Exception("Not enough space left");
49 }
50 if (free == -1) {
51 getSession().setReplyCode(ReplyCode.REPLY_202_COMMAND_NOT_IMPLEMENTED,
52 null);
53 } else {
54 getSession().setReplyCode(ReplyCode.REPLY_200_COMMAND_OKAY,
55 "ALLO OK: " + free + " bytes available");
56 }
57 }
58
59 }