/* A Thrift SSL Server Author: Ian Kaplan April, 2013 */ package ssl_test; import java.io.File; import java.net.InetAddress; import java.net.UnknownHostException; import org.apache.thrift.transport.TSSLTransportFactory; import org.apache.thrift.transport.TServerSocket; import org.apache.thrift.transport.TTransport; import org.apache.thrift.transport.TTransportException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class SSLServer extends Thread implements ISSLInterface { private static final Logger LOGGER = LoggerFactory.getLogger(SSLServer.class.getName()); public SSLServer() { File pathToKeystore = new File( keystorePath ); if (pathToKeystore.exists()) { if (! pathToKeystore.canRead()) { System.err.println("Server: cannot read keystore file: " + keystorePath ); } } else { System.err.println("Server: path to keystore does not exist: " + keystorePath ); } } @Override public void run() { System.out.println("SSLServer: entering run()"); TServerSocket serverTransport = null; try { final InetAddress netAddr = InetAddress.getByName(host); TSSLTransportFactory.TSSLTransportParameters params = new TSSLTransportFactory.TSSLTransportParameters(); params.setKeyStore(keystorePath, certPswd); serverTransport = TSSLTransportFactory.getServerSocket(port, clientTimeout, netAddr, params); System.out.println("Server: Created TServerSocket object - now listen()"); serverTransport.listen(); System.out.println("Server: Returned from listen"); TTransport trans = serverTransport.accept(); System.out.println("Server: Accepted SSL socket connection"); if (trans.isOpen()) { System.out.println("Server: Socket is open"); byte buf[] = new byte[1024]; System.out.println("Server: reading socket... bytes = " + buf.length); int bytesRead = trans.read(buf, 0, buf.length); System.out.println("Server: read " + bytesRead + " bytes"); if (bytesRead > 0) { String str = new String(buf); System.out.println("Server: Read: " + str); } } else { System.out.println("Server: socket is not open"); } } catch (UnknownHostException hostEx) { System.out.println("Server: Unknown host exception:" + hostEx.getLocalizedMessage() ); } catch (TTransportException transEx) { System.out.println("Server: Error creating serverTransport:" + transEx.getLocalizedMessage() ); } finally { if (serverTransport != null) { serverTransport.close(); } } System.out.println("Leaving SSLServer run()"); } }