1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package goldengate.ftp.simpleimpl.control;
22
23 import goldengate.common.command.exception.CommandAbstractException;
24 import goldengate.common.command.exception.Reply502Exception;
25 import goldengate.common.logging.GgInternalLogger;
26 import goldengate.common.logging.GgInternalLoggerFactory;
27 import goldengate.ftp.core.command.AbstractCommand;
28 import goldengate.ftp.core.command.FtpCommandCode;
29 import goldengate.ftp.core.command.service.MKD;
30 import goldengate.ftp.core.control.BusinessHandler;
31 import goldengate.ftp.core.data.FtpTransfer;
32 import goldengate.ftp.core.session.FtpSession;
33 import goldengate.ftp.filesystembased.FilesystemBasedFtpRestart;
34 import goldengate.ftp.simpleimpl.file.FileBasedAuth;
35 import goldengate.ftp.simpleimpl.file.FileBasedDir;
36
37 import org.jboss.netty.channel.Channel;
38 import org.jboss.netty.channel.ExceptionEvent;
39
40
41
42
43
44
45
46
47 public class SimpleBusinessHandler extends BusinessHandler {
48
49
50
51 private static final GgInternalLogger logger = GgInternalLoggerFactory
52 .getLogger(SimpleBusinessHandler.class);
53
54 @Override
55 public void afterRunCommandKo(CommandAbstractException e) {
56
57 if (getFtpSession().getCurrentCommand() instanceof MKD) {
58
59 } else {
60 logger.warn("GBBH: AFTKO: {} {}", getFtpSession(), e.getMessage());
61 }
62 }
63
64 @Override
65 public void afterRunCommandOk() throws CommandAbstractException {
66
67
68 }
69
70 @Override
71 public void beforeRunCommand() throws CommandAbstractException {
72
73
74 }
75
76 @Override
77 protected void cleanSession() {
78
79
80 }
81
82 @Override
83 public void exceptionLocalCaught(ExceptionEvent e) {
84
85 logger.warn("GBBH: EXCEP: {} {}", getFtpSession(), e.getCause()
86 .getMessage());
87 }
88
89 @Override
90 public void executeChannelClosed() {
91
92
93
94 }
95
96 @Override
97 public void executeChannelConnected(Channel channel) {
98
99
100 }
101
102 @Override
103 public FileBasedAuth getBusinessNewAuth() {
104 return new FileBasedAuth(getFtpSession());
105 }
106
107 @Override
108 public FileBasedDir getBusinessNewDir() {
109 return new FileBasedDir(getFtpSession());
110 }
111
112 @Override
113 public FilesystemBasedFtpRestart getBusinessNewRestart() {
114 return new FilesystemBasedFtpRestart(getFtpSession());
115 }
116
117 @Override
118 public String getHelpMessage(String arg) {
119 return "This FTP server is only intend as a Gateway.\n"
120 + "This FTP server refers to RFC 959, 775, 2389, 2428, 3659 and supports XCRC, XMD5 and XSHA1 commands.\n"
121 + "XCRC, XMD5 and XSHA1 take a simple filename as argument and return \"250 digest-value is the digest of filename\".";
122 }
123
124 @Override
125 public String getFeatMessage() {
126 StringBuilder builder = new StringBuilder("Extensions supported:");
127 builder.append('\n');
128 builder.append(getDefaultFeatMessage());
129 builder.append("\nEnd");
130 return builder.toString();
131 }
132
133 @Override
134 public String getOptsMessage(String[] args) throws CommandAbstractException {
135 if (args.length > 0) {
136 if (args[0].equalsIgnoreCase(FtpCommandCode.MLST.name()) ||
137 args[0].equalsIgnoreCase(FtpCommandCode.MLSD.name())) {
138 return getMLSxOptsMessage(args);
139 }
140 throw new Reply502Exception("OPTS not implemented for " + args[0]);
141 }
142 throw new Reply502Exception("OPTS not implemented");
143 }
144
145
146
147
148 @Override
149 public AbstractCommand getSpecializedSiteCommand(FtpSession session,
150 String line) {
151 return null;
152 }
153
154
155
156
157 @Override
158 public void afterTransferDoneBeforeAnswer(FtpTransfer transfer)
159 throws CommandAbstractException {
160 if (transfer.getCommand() == FtpCommandCode.APPE) {
161 logger.info("GBBH: Transfer: {} " + transfer.getStatus() + " {}",
162 transfer.getCommand(), transfer.getPath());
163 } else if (transfer.getCommand() == FtpCommandCode.RETR) {
164 logger.info("GBBH: Transfer: {} " + transfer.getStatus() + " {}",
165 transfer.getCommand(), transfer.getPath());
166 } else if (transfer.getCommand() == FtpCommandCode.STOR) {
167 logger.info("GBBH: Transfer: {} " + transfer.getStatus() + " {}",
168 transfer.getCommand(), transfer.getPath());
169 } else if (transfer.getCommand() == FtpCommandCode.STOU) {
170 logger.info("GBBH: Transfer: {} " + transfer.getStatus() + " {}",
171 transfer.getCommand(), transfer.getPath());
172 } else {
173 logger.warn("GBBH: Transfer unknown: {} " + transfer.getStatus() +
174 " {}", transfer.getCommand(), transfer.getPath());
175
176 }
177 }
178 }