2020
2121package cursusdbjava ;
2222
23+ import javax .net .SocketFactory ;
24+ import javax .net .ssl .SSLSocket ;
25+ import javax .net .ssl .SSLSocketFactory ;
2326import java .io .*;
2427import java .net .InetSocketAddress ;
2528import java .net .Socket ;
@@ -41,7 +44,7 @@ static class Client {
4144
4245
4346 private Socket socket ;
44-
47+ private SSLSocket secureSocket ;
4548 // Constructor for CursusDB Client
4649 Client (String hostIn , int portIn , String usernameIn , String passwordIn , boolean tlsIn ) {
4750 host = hostIn ;
@@ -52,33 +55,54 @@ static class Client {
5255 }
5356
5457 void Connect () throws IOException {
55- // Create new socket
56- socket = new Socket ();
5758
58- // Connect to cluster
59- socket .connect (new InetSocketAddress ("0.0.0.0" , port ), 1000 );
59+ if (tls ) {
60+ SocketFactory factory = SSLSocketFactory .getDefault ();
61+ secureSocket = (SSLSocket ) factory .createSocket (host , port );
6062
61- // Setup writer and reader
62- reader = new DataInputStream (socket .getInputStream ());
63- writer = new DataOutputStream (socket .getOutputStream ());
63+ secureSocket .setEnabledCipherSuites (new String [] { "TLS_AES_128_GCM_SHA256" });
64+ secureSocket .setEnabledProtocols (new String [] { "TLSv1.3" });
6465
65- Base64 . Encoder base64Encoder = Base64 . getEncoder ();
66- String userPassEncoded = base64Encoder . encodeToString (( username + " \\ 0" + password ). getBytes () );
66+ // Connect to cluster
67+ secureSocket . connect ( new InetSocketAddress ( "0.0.0.0" , port ), 1000 );
6768
68- writer .writeBytes ("Authentication: " + userPassEncoded + "\r \n " );
69+ // Setup writer and reader
70+ reader = new DataInputStream (secureSocket .getInputStream ());
71+ writer = new DataOutputStream (secureSocket .getOutputStream ());
72+ } else {
73+ // Create new socket
74+ socket = new Socket ();
6975
70- String clusterResponse = reader .readLine ();
71- System .out .println (clusterResponse );
7276
77+ // Connect to cluster
78+ socket .connect (new InetSocketAddress ("0.0.0.0" , port ), 1000 );
79+
80+ // Setup writer and reader
81+ reader = new DataInputStream (socket .getInputStream ());
82+ writer = new DataOutputStream (socket .getOutputStream ());
83+ }
84+
85+ Base64 .Encoder base64Encoder = Base64 .getEncoder ();
86+ String userPassEncoded = base64Encoder .encodeToString ((username + "\\ 0" + password ).getBytes ());
7387
88+ writer .writeBytes ("Authentication: " + userPassEncoded + "\r \n " );
89+
90+ String clusterResponse = reader .readLine ();
91+
92+
93+ System .out .println ("Connected to cluster." );
7494
75- System .out .println ("Connected to cluster." );
7695 }
7796
7897 void Close () throws IOException {
7998 reader .close ();
8099 writer .close ();
81- socket .close ();
100+
101+ if (tls ) {
102+ secureSocket .close ();
103+ } else {
104+ socket .close ();
105+ }
82106 System .out .println ("Cluster connection closed." );
83107 }
84108
0 commit comments