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

接上一篇: http://618119.com/archives/2007/12/06/39.html

为 DefaultIoFilterChainBuilder 增加filter:

 

  1. import org.apache.mina.filter.LoggingFilter;   
  2. import javax.net.ssl.SSLContext;   
  3. import org.apache.mina.filter.SSLFilter;   
  4. import org.apache.mina.common.DefaultIoFilterChainBuilder;   
  5. import org.apache.mina.filter.codec.ProtocolCodecFilter;   
  6. import org.apache.commons.ssl.*;   
  7. import java.io.*;   
  8. import java.security.*;   
  9. import com.lizongbo.ssl.SMPPSSLContextFactory;   
  10. import com.lizongbo.smpp.server.codec.SMPPProtocolCodecFactory;   
  11. public static final int PORT = 5432;   
  12. public static final int CONNECT_TIMEOUT = 3// seconds   
  13. private static final boolean USE_SSL = true;   
  14. private static final boolean USE_LOG = false;   
  15. private static final boolean USE_COMPRESS = false;   
  16. private static final boolean USE_THREADPOOL = false;   
  17. /**  
  18. 添加服务端的ssl支持  
  19. */  
  20. public static void addServerSSLSupport(DefaultIoFilterChainBuilder chain) throws  
  21. Exception {   
  22. if (USE_SSL) {   
  23. SSLContext sslc = SMPPSSLContextFactory.getInstance(true);   
  24. SSLFilter sslFilter = new SSLFilter(sslc);   
  25. sslFilter.setNeedClientAuth(true);//   
  26. //sslFilter.setWantClientAuth(true);   
  27. sslFilter.setEnabledCipherSuites(new String[] {   
  28. “TLS_RSA_WITH_AES_256_CBC_SHA”   
  29. “SSL_RSA_WITH_RC4_128_MD5″//,   
  30. “TLS_RSA_WITH_AES_128_CBC_SHA”,   
  31. “TLS_DHE_RSA_WITH_AES_128_CBC_SHA”,   
  32. “TLS_DHE_DSS_WITH_AES_128_CBC_SHA”,   
  33. “TLS_RSA_WITH_AES_256_CBC_SHA”,   
  34. “TLS_DHE_RSA_WITH_AES_256_CBC_SHA”,   
  35. “SSL_RSA_WITH_RC4_128_SHA”,   
  36. “TLS_DHE_DSS_WITH_AES_256_CBC_SHA”   
  37. });   
  38. chain.addLast(”sslFilter”, sslFilter);   
  39. System.out.println(”Server SSL ON”);   
  40. }   
  41. }   
  42. /**  
  43. 添加客户端的ssl支持  
  44. */  
  45. public static void addCilentSSLSupport(DefaultIoFilterChainBuilder chain) throws  
  46. Exception {   
  47. if (USE_SSL) {   
  48. SSLContext sslc = SMPPSSLContextFactory.getInstance(false);   
  49. SSLFilter sslFilter = new SSLFilter(sslc);   
  50. sslFilter.setUseClientMode(true);   
  51. chain.addLast(”sslFilter”, sslFilter);   
  52. System.out.println(”Client SSL ON”);   
  53. }   
  54. }   
  55. /**  
  56. 添加 logger 过滤器  
  57. */  
  58. public static void addLogger(DefaultIoFilterChainBuilder chain) throws  
  59. Exception {   
  60. if (USE_LOG) {   
  61. chain.addLast(”logger”, new LoggingFilter());   
  62. System.out.println(”Logging ON”);   
  63. }   
  64. }   
  65. /**  
  66. 添加压缩 过滤器  
  67. */  
  68. public static void addCompress(DefaultIoFilterChainBuilder chain) throws  
  69. Exception {   
  70. if (USE_COMPRESS) {   
  71. chain.addLast(”compress”, new org.apache.mina.filter.CompressionFilter());   
  72. System.out.println(”Compress ON”);   
  73. }   
  74. }   
  75. /**  
  76. 添加编码解码过滤器  
  77. */  
  78. public static void addCodec(DefaultIoFilterChainBuilder chain) throws  
  79. Exception {   
  80. chain.addLast(”codec”,   
  81. new ProtocolCodecFilter(new SMPPProtocolCodecFactory()));   
  82. }   
  83. /**  
  84. 添加线程池过滤器  
  85. */  
  86. public static void addThreadPool(DefaultIoFilterChainBuilder chain) throws  
  87. Exception {   
  88. if (USE_THREADPOOL) {   
  89. chain.addLast(”threadpool”,   
  90. new org.apache.mina.filter.executor.ExecutorFilter());   
  91. System.out.println(”Threadpool ON”);   
  92. }   
  93. }   
  94. public static void main(String[] args) throws IOException, Exception {   
  95. IoAcceptor acceptor = new SocketAcceptor();   
  96. IoAcceptorConfig config = new SocketAcceptorConfig();   
  97. DefaultIoFilterChainBuilder chain = config.getFilterChain();   
  98. //Utils.addServerSSLSupport(chain);   
  99. Utils.addThreadPool(chain);   
  100. Utils.addCompress(chain);   
  101. Utils.addCodec(chain);   
  102. Utils.addLogger(chain);   
  103. SMPPServerSessionHandler handlers = new SMPPServerSessionHandler();   
  104. handlers.getHandles().put(Integer.valueOf(0×00000001),   
  105. new com.lizongbo.smpp.server.handlers.   
  106. BindReceiverHandler());   
  107. handlers.getHandles().put(Integer.valueOf(0×00000002),   
  108. new com.lizongbo.smpp.server.handlers.   
  109. BindTransmitterHandler());   
  110. handlers.getHandles().put(Integer.valueOf(0×00000004),   
  111. new com.lizongbo.smpp.server.handlers.   
  112. SubmitSMHandler());   
  113. handlers.getHandles().put(Integer.valueOf(0×00000006),   
  114. new com.lizongbo.smpp.server.handlers.   
  115. UnbindHandler());   
  116. InetSocketAddress serverAddr = new InetSocketAddress(Utils.PORT);   
  117. acceptor.bind(   
  118. serverAddr, handlers,   
  119. config);   
  120. //JMX控制   
  121. IoServiceManager serviceManager = new IoServiceManager(acceptor);   
  122. serviceManager.startCollectingStats(1000);   
  123. MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();   
  124. ObjectName name = new ObjectName(   
  125. “com.lizongbo.smpp.server:type=IoServiceManager”);   
  126. mbs.registerMBean(serviceManager, name);   
  127. System.out.println(”Listening on port ” + Utils.PORT);   
  128. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值