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.control.ftps;
21
22 import io.netty.channel.Channel;
23 import io.netty.channel.ChannelHandlerContext;
24 import org.waarp.common.crypto.ssl.WaarpSslUtility;
25 import org.waarp.common.logging.WaarpLogger;
26 import org.waarp.common.logging.WaarpLoggerFactory;
27 import org.waarp.ftp.core.control.NetworkHandler;
28 import org.waarp.ftp.core.session.FtpSession;
29
30
31
32
33 public class SslNetworkHandler extends NetworkHandler {
34
35
36
37 private static final WaarpLogger logger =
38 WaarpLoggerFactory.getLogger(SslNetworkHandler.class);
39
40
41
42
43 public SslNetworkHandler(final FtpSession session) {
44 super(session);
45 }
46
47 @Override
48 public void channelRegistered(final ChannelHandlerContext ctx)
49 throws Exception {
50 final Channel channel = ctx.channel();
51 logger.debug("Add channel to ssl {}", channel);
52 WaarpSslUtility.addSslOpenedChannel(channel);
53 getFtpSession().prepareSsl();
54 super.channelRegistered(ctx);
55 }
56
57
58
59
60
61
62
63 @Override
64 protected void callForSnmp(final String error1, final String error2) {
65
66 }
67
68 @Override
69 public void channelActive(final ChannelHandlerContext ctx) throws Exception {
70 if (!WaarpSslUtility.waitForHandshake(ctx.channel())) {
71 callForSnmp("SSL Connection Error", "During Ssl Handshake");
72 getFtpSession().setSsl(false);
73 return;
74 } else {
75 getFtpSession().setSsl(true);
76 }
77 super.channelActive(ctx);
78 }
79
80 }