1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.waarp.gateway.ftp.adminssl;
21
22 import io.netty.channel.ChannelInitializer;
23 import io.netty.channel.ChannelPipeline;
24 import io.netty.channel.socket.SocketChannel;
25 import io.netty.handler.codec.http.HttpContentCompressor;
26 import io.netty.handler.codec.http.HttpObjectAggregator;
27 import io.netty.handler.codec.http.HttpServerCodec;
28 import io.netty.handler.ssl.SslHandler;
29 import io.netty.handler.stream.ChunkedWriteHandler;
30 import org.waarp.common.crypto.ssl.WaarpSecureKeyStore;
31 import org.waarp.common.crypto.ssl.WaarpSslContextFactory;
32 import org.waarp.gateway.ftp.config.FileBasedConfiguration;
33
34
35
36
37 public class HttpSslInitializer extends ChannelInitializer<SocketChannel> {
38 public static WaarpSslContextFactory waarpSslContextFactory;
39 public static WaarpSecureKeyStore waarpSecureKeyStore;
40 private final boolean useHttpCompression;
41
42 public HttpSslInitializer(final boolean useHttpCompression) {
43 this.useHttpCompression = useHttpCompression;
44 }
45
46 @Override
47 protected void initChannel(final SocketChannel ch) {
48 final ChannelPipeline pipeline = ch.pipeline();
49
50 final SslHandler sslhandler =
51 waarpSslContextFactory.createHandlerServer(false, ch);
52 pipeline.addLast("ssl", sslhandler);
53
54 pipeline.addLast("codec", new HttpServerCodec());
55 pipeline.addLast("aggregator", new HttpObjectAggregator(
56 FileBasedConfiguration.fileBasedConfiguration.getMaxGlobalMemory()));
57 pipeline.addLast("streamer", new ChunkedWriteHandler());
58 if (useHttpCompression) {
59 pipeline.addLast("deflater", new HttpContentCompressor());
60 }
61 pipeline.addLast(
62 FileBasedConfiguration.fileBasedConfiguration.getHttpPipelineExecutor(),
63 "handler", new HttpSslHandler());
64 }
65 }