From 0a87bda0ba8454e83ec852d86357a3b7290a350d Mon Sep 17 00:00:00 2001
From: Hai HoDac <hhodac@student.unimelb.edu.au>
Date: Wed, 23 Oct 2019 19:58:23 +1100
Subject: [PATCH] Merged encryption function

---
 src/client/Client.java            |  8 ++++++--
 src/remote/IClientController.java |  2 +-
 src/server/ClientController.java  |  9 ++++-----
 src/server/Server.java            | 22 +++++++++++++++++++++-
 4 files changed, 32 insertions(+), 9 deletions(-)

diff --git a/src/client/Client.java b/src/client/Client.java
index 800fac6..7397f62 100644
--- a/src/client/Client.java
+++ b/src/client/Client.java
@@ -11,11 +11,14 @@ import remote.IDrawingController;
 import java.rmi.RemoteException;
 import java.rmi.registry.LocateRegistry;
 import java.rmi.registry.Registry;
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
 
 public class Client
 {
     private final String DEFAULT_USERNAME = "Anonymous";
     private final String DEFAULT_SERVER_ADDRESS = "localhost";
+    private final EncryptionUpdate encryptionUpdate;
 
     private String userName;
     private String serverAddress;
@@ -73,7 +76,7 @@ public class Client
     public IDrawingController getDrawingController() { return drawingController; }
 
 
-    public Client(String username) throws RemoteException
+    public Client(String username) throws RemoteException, NoSuchProviderException, NoSuchAlgorithmException
     {
         this.userName = username;
         this.clientUpdate = new ClientUpdate(this);
@@ -81,6 +84,7 @@ public class Client
         this.drawingUpdate = new DrawingUpdate(this);
         this.startScreen = new StartScreen(this);
         this.applicationMain = new ApplicationMain(this);
+        this.encryptionUpdate = new EncryptionUpdate();
     }
 
     public static void main(String[] args)
@@ -143,7 +147,7 @@ public class Client
 
             if( clientController.checkPassword(password) )
             {
-                if( clientController.join(userName, this.chatUpdate, this.clientUpdate, this.drawingUpdate) )
+                if( clientController.join(userName, this.chatUpdate, this.clientUpdate, this.drawingUpdate, this.encryptionUpdate) )
                 {
                     System.out.println("Connected to server");
 
diff --git a/src/remote/IClientController.java b/src/remote/IClientController.java
index 1dcd165..07f8125 100644
--- a/src/remote/IClientController.java
+++ b/src/remote/IClientController.java
@@ -7,7 +7,7 @@ public interface IClientController extends Remote
 {
     enum Action {KICKOUT, ASSIGNADMIN};
 
-    boolean join(String username, IChatUpdate clientChat, IClientUpdate clientUpdate, IDrawingUpdate clientDrawing) throws RemoteException;
+    boolean join(String username, IChatUpdate clientChat, IClientUpdate clientUpdate, IDrawingUpdate clientDrawing, IEncryptionUpdate encryptionUpdate) throws RemoteException;
 
     void quit(String username) throws RemoteException;
 
diff --git a/src/server/ClientController.java b/src/server/ClientController.java
index 4c710bb..2d40ff1 100644
--- a/src/server/ClientController.java
+++ b/src/server/ClientController.java
@@ -1,9 +1,6 @@
 package server;
 
-import remote.IChatUpdate;
-import remote.IClientUpdate;
-import remote.IDrawingUpdate;
-import remote.IClientController;
+import remote.*;
 
 import java.io.Serializable;
 import java.rmi.Remote;
@@ -20,13 +17,15 @@ public class ClientController extends UnicastRemoteObject implements IClientCont
     }
 
     @Override
-    public boolean join(String username, IChatUpdate clientChat, IClientUpdate clientUpdate, IDrawingUpdate clientDrawing) throws RemoteException
+    public boolean join(String username, IChatUpdate clientChat, IClientUpdate clientUpdate, IDrawingUpdate clientDrawing, IEncryptionUpdate encryptionUpdate) throws RemoteException
     {
         if( getUserIndex(username) < 0 )
         {
             // user with same username is not connected
             server.chatController.broadcastMessageUserLogin(username);
 
+            new MySharedKey(encryptionUpdate);
+
             User newUser = new User(username, clientChat, clientUpdate, clientDrawing);
 
             server.users.add(newUser);
diff --git a/src/server/Server.java b/src/server/Server.java
index 0160269..cb1ef67 100644
--- a/src/server/Server.java
+++ b/src/server/Server.java
@@ -4,6 +4,8 @@ import remote.IChatController;
 import remote.IClientController;
 import remote.IDrawingController;
 
+import java.net.InetAddress;
+import java.net.UnknownHostException;
 import java.rmi.RemoteException;
 import java.rmi.registry.LocateRegistry;
 import java.rmi.registry.Registry;
@@ -54,7 +56,6 @@ public class Server
 
     public void run() throws RemoteException
     {
-
         LocateRegistry.createRegistry(1099);
         Registry registry = LocateRegistry.getRegistry();
 
@@ -71,5 +72,24 @@ public class Server
         registry.rebind(drawingControllerName, drawingController);
 
         System.out.println("Server is ready");
+
+        printIP();
+    }
+
+    private void printIP()
+    {
+        InetAddress inetAddress = null;
+
+        try
+        {
+            inetAddress = InetAddress.getLocalHost();
+        }
+        catch (UnknownHostException e)
+        {
+            e.printStackTrace();
+        }
+
+        System.out.println("IP Address:- " + inetAddress.getHostAddress());
+        System.out.println("Host Name:- " + inetAddress.getHostName());
     }
 }
-- 
GitLab