wanmin444 发表于 2017-1-13 09:31:21

Spring,smppapi,apache mina, ssl快速实现安全的smpp(5)

  接上一篇: http://618119.com/archives/2007/12/06/39.html
  为 DefaultIoFilterChainBuilder 增加filter:
view plaincopy to clipboardprint?


[*]import org.apache.mina.filter.LoggingFilter;   
[*]import javax.net.ssl.SSLContext;   
[*]import org.apache.mina.filter.SSLFilter;   
[*]import org.apache.mina.common.DefaultIoFilterChainBuilder;   
[*]import org.apache.mina.filter.codec.ProtocolCodecFilter;   
[*]import org.apache.commons.ssl.*;   
[*]import java.io.*;   
[*]import java.security.*;   
[*]import com.lizongbo.ssl.SMPPSSLContextFactory;   
[*]import com.lizongbo.smpp.server.codec.SMPPProtocolCodecFactory;   
[*]public static final int PORT = 5432;   
[*]public static final int CONNECT_TIMEOUT = 3; // seconds   
[*]private static final boolean USE_SSL = true;   
[*]private static final boolean USE_LOG = false;   
[*]private static final boolean USE_COMPRESS = false;   
[*]private static final boolean USE_THREADPOOL = false;   
[*]/**  
[*]添加服务端的ssl支持  
[*]*/  
[*]public static void addServerSSLSupport(DefaultIoFilterChainBuilder chain) throws  
[*]Exception {   
[*]if (USE_SSL) {   
[*]SSLContext sslc = SMPPSSLContextFactory.getInstance(true);   
[*]SSLFilter sslFilter = new SSLFilter(sslc);   
[*]sslFilter.setNeedClientAuth(true);//   
[*]//sslFilter.setWantClientAuth(true);   
[*]sslFilter.setEnabledCipherSuites(new String[] {   
[*]“TLS_RSA_WITH_AES_256_CBC_SHA”   
[*]“SSL_RSA_WITH_RC4_128_MD5″//,   
[*]“TLS_RSA_WITH_AES_128_CBC_SHA”,   
[*]“TLS_DHE_RSA_WITH_AES_128_CBC_SHA”,   
[*]“TLS_DHE_DSS_WITH_AES_128_CBC_SHA”,   
[*]“TLS_RSA_WITH_AES_256_CBC_SHA”,   
[*]“TLS_DHE_RSA_WITH_AES_256_CBC_SHA”,   
[*]“SSL_RSA_WITH_RC4_128_SHA”,   
[*]“TLS_DHE_DSS_WITH_AES_256_CBC_SHA”   
[*]});   
[*]chain.addLast(”sslFilter”, sslFilter);   
[*]System.out.println(”Server SSL ON”);   
[*]}   
[*]}   
[*]/**  
[*]添加客户端的ssl支持  
[*]*/  
[*]public static void addCilentSSLSupport(DefaultIoFilterChainBuilder chain) throws  
[*]Exception {   
[*]if (USE_SSL) {   
[*]SSLContext sslc = SMPPSSLContextFactory.getInstance(false);   
[*]SSLFilter sslFilter = new SSLFilter(sslc);   
[*]sslFilter.setUseClientMode(true);   
[*]chain.addLast(”sslFilter”, sslFilter);   
[*]System.out.println(”Client SSL ON”);   
[*]}   
[*]}   
[*]/**  
[*]添加 logger 过滤器  
[*]*/  
[*]public static void addLogger(DefaultIoFilterChainBuilder chain) throws  
[*]Exception {   
[*]if (USE_LOG) {   
[*]chain.addLast(”logger”, new LoggingFilter());   
[*]System.out.println(”Logging ON”);   
[*]}   
[*]}   
[*]/**  
[*]添加压缩 过滤器  
[*]*/  
[*]public static void addCompress(DefaultIoFilterChainBuilder chain) throws  
[*]Exception {   
[*]if (USE_COMPRESS) {   
[*]chain.addLast(”compress”, new org.apache.mina.filter.CompressionFilter());   
[*]System.out.println(”Compress ON”);   
[*]}   
[*]}   
[*]/**  
[*]添加编码解码过滤器  
[*]*/  
[*]public static void addCodec(DefaultIoFilterChainBuilder chain) throws  
[*]Exception {   
[*]chain.addLast(”codec”,   
[*]new ProtocolCodecFilter(new SMPPProtocolCodecFactory()));   
[*]}   
[*]/**  
[*]添加线程池过滤器  
[*]*/  
[*]public static void addThreadPool(DefaultIoFilterChainBuilder chain) throws  
[*]Exception {   
[*]if (USE_THREADPOOL) {   
[*]chain.addLast(”threadpool”,   
[*]new org.apache.mina.filter.executor.ExecutorFilter());   
[*]System.out.println(”Threadpool ON”);   
[*]}   
[*]}   
[*]public static void main(String[] args) throws IOException, Exception {   
[*]IoAcceptor acceptor = new SocketAcceptor();   
[*]IoAcceptorConfig config = new SocketAcceptorConfig();   
[*]DefaultIoFilterChainBuilder chain = config.getFilterChain();   
[*]//Utils.addServerSSLSupport(chain);   
[*]Utils.addThreadPool(chain);   
[*]Utils.addCompress(chain);   
[*]Utils.addCodec(chain);   
[*]Utils.addLogger(chain);   
[*]SMPPServerSessionHandler handlers = new SMPPServerSessionHandler();   
[*]handlers.getHandles().put(Integer.valueOf(0×00000001),   
[*]new com.lizongbo.smpp.server.handlers.   
[*]BindReceiverHandler());   
[*]handlers.getHandles().put(Integer.valueOf(0×00000002),   
[*]new com.lizongbo.smpp.server.handlers.   
[*]BindTransmitterHandler());   
[*]handlers.getHandles().put(Integer.valueOf(0×00000004),   
[*]new com.lizongbo.smpp.server.handlers.   
[*]SubmitSMHandler());   
[*]handlers.getHandles().put(Integer.valueOf(0×00000006),   
[*]new com.lizongbo.smpp.server.handlers.   
[*]UnbindHandler());   
[*]InetSocketAddress serverAddr = new InetSocketAddress(Utils.PORT);   
[*]acceptor.bind(   
[*]serverAddr, handlers,   
[*]config);   
[*]//JMX控制   
[*]IoServiceManager serviceManager = new IoServiceManager(acceptor);   
[*]serviceManager.startCollectingStats(1000);   
[*]MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();   
[*]ObjectName name = new ObjectName(   
[*]“com.lizongbo.smpp.server:type=IoServiceManager”);   
[*]mbs.registerMBean(serviceManager, name);   
[*]System.out.println(”Listening on port ” + Utils.PORT);   
[*]}  
页: [1]
查看完整版本: Spring,smppapi,apache mina, ssl快速实现安全的smpp(5)