Now it display old messages when we change recipient, messages now have a sort of format, the server is always running and the client is closed whit DISCONNECT.
This commit is contained in:
parent
7a401e784b
commit
d4e5ff6009
@ -239,9 +239,9 @@ public class Database {
|
|||||||
List<Message> messages = new ArrayList<>();
|
List<Message> messages = new ArrayList<>();
|
||||||
while (resultSet.next()) {
|
while (resultSet.next()) {
|
||||||
String message = resultSet.getString(1);
|
String message = resultSet.getString(1);
|
||||||
Date sending_date = resultSet.getDate(2);
|
Date sending_date = resultSet.getDate(3);
|
||||||
Time sending_time = resultSet.getTime(3);
|
Time sending_time = resultSet.getTime(4);
|
||||||
boolean own_pub_key = resultSet.getBoolean(4);
|
boolean own_pub_key = resultSet.getBoolean(5);
|
||||||
messages.add(new Message(message, sending_date, sending_time, own_pub_key));
|
messages.add(new Message(message, sending_date, sending_time, own_pub_key));
|
||||||
}
|
}
|
||||||
return messages;
|
return messages;
|
||||||
|
@ -6,6 +6,7 @@ import java.net.Socket;
|
|||||||
|
|
||||||
public class Server {
|
public class Server {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
while (true) {
|
||||||
try (ServerSocket serverSocket = new ServerSocket(21324)) {
|
try (ServerSocket serverSocket = new ServerSocket(21324)) {
|
||||||
Socket socket = serverSocket.accept();
|
Socket socket = serverSocket.accept();
|
||||||
ServerThread serverThread = new ServerThread(socket);
|
ServerThread serverThread = new ServerThread(socket);
|
||||||
@ -13,6 +14,7 @@ public class Server {
|
|||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ import models.Rsa;
|
|||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@ -124,23 +125,8 @@ public class ServerThread extends Thread {
|
|||||||
|
|
||||||
int convId = Database.getConversationId(clientId, recipientId);
|
int convId = Database.getConversationId(clientId, recipientId);
|
||||||
int convId2 = Database.getConversationId(recipientId, clientId);
|
int convId2 = Database.getConversationId(recipientId, clientId);
|
||||||
List<Message> messaggi = getMessages(convId, true);
|
|
||||||
List<Message> messaggi2 = getMessages(convId2, false);
|
sendMessages(convId,convId2);
|
||||||
messaggi.addAll(messaggi2);
|
|
||||||
Comparator<Message> comparator = Comparator.comparing(Message -> Message.sending_date());
|
|
||||||
comparator = comparator.thenComparing(Comparator.comparing(Message -> Message.sending_time()));
|
|
||||||
messaggi = messaggi.stream().sorted(comparator).collect(Collectors.toList());
|
|
||||||
for (Message i : messaggi) {
|
|
||||||
try {
|
|
||||||
send("MESSAGGIO");
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
System.err.println(String.valueOf(i.own_pub_key()));
|
|
||||||
sendEncrypted(i.message());
|
|
||||||
sendEncrypted(i.sending_date().toString());
|
|
||||||
sendEncrypted(i.sending_time().toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sendEncrypted("(DISCONNECT per uscire, CD per cambiare destinatario)\n");
|
sendEncrypted("(DISCONNECT per uscire, CD per cambiare destinatario)\n");
|
||||||
@ -154,8 +140,7 @@ public class ServerThread extends Thread {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (message == null || "DISCONNECT".equals(rsa.decrypt(message))) break;
|
if (message == null || "DISCONNECT".equals(rsa.decrypt(message))) break;
|
||||||
|
else if ("CD".equals(rsa.decrypt(message))) {
|
||||||
if ("CD".equals(rsa.decrypt(message))) {
|
|
||||||
try {
|
try {
|
||||||
sendEncrypted("Inserisci l'username del nuovo destinatario: ");
|
sendEncrypted("Inserisci l'username del nuovo destinatario: ");
|
||||||
dUsername = rsa.decrypt(fromClient.readLine());
|
dUsername = rsa.decrypt(fromClient.readLine());
|
||||||
@ -173,19 +158,28 @@ public class ServerThread extends Thread {
|
|||||||
}
|
}
|
||||||
sendEncrypted(pk.e().toString());
|
sendEncrypted(pk.e().toString());
|
||||||
sendEncrypted(pk.n().toString());
|
sendEncrypted(pk.n().toString());
|
||||||
|
|
||||||
|
convId = Database.getConversationId(clientId, recipientId);
|
||||||
|
convId2 = Database.getConversationId(recipientId, clientId);
|
||||||
|
|
||||||
|
sendMessages(convId,convId2);
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
|
|
||||||
try {
|
try {
|
||||||
String message2 = fromClient.readLine();
|
String message2 = fromClient.readLine();
|
||||||
MessageForwarder.sendTo(recipientId, message, clientId);
|
//MessageForwarder.sendTo(recipientId, message, clientId);
|
||||||
Database.addMessage(convId, message, false);
|
Database.addMessage(convId, message, false);
|
||||||
Database.addMessage(convId, message2, true);
|
Database.addMessage(convId, message2, true);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendEncrypted(String text) {
|
private void sendEncrypted(String text) {
|
||||||
@ -228,4 +222,26 @@ public class ServerThread extends Thread {
|
|||||||
send(String.valueOf(sender));
|
send(String.valueOf(sender));
|
||||||
send(message);
|
send(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void sendMessages(int convId,int convId2){
|
||||||
|
List<Message> messaggi = new ArrayList<>();
|
||||||
|
List<Message> m1 = getMessages(convId, true);
|
||||||
|
List<Message> m2 = getMessages(convId2, false);
|
||||||
|
if (m1 != null) messaggi.addAll(m1);
|
||||||
|
if (m2 != null) messaggi.addAll(m2);
|
||||||
|
Comparator<Message> comparator = Comparator.comparing(Message -> Message.sending_date());
|
||||||
|
comparator = comparator.thenComparing(Comparator.comparing(Message -> Message.sending_time()));
|
||||||
|
messaggi = messaggi.stream().sorted(comparator).collect(Collectors.toList());
|
||||||
|
for (Message i : messaggi) {
|
||||||
|
try {
|
||||||
|
send("MESSAGGIO");
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
sendEncrypted(String.valueOf(i.own_pub_key()));
|
||||||
|
sendEncrypted(i.message());
|
||||||
|
sendEncrypted(i.sending_date().toString());
|
||||||
|
sendEncrypted(i.sending_time().toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,6 @@ public class ClientReceiveThread extends Thread {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
try {
|
try {
|
||||||
String s = in.readLine();
|
String s = in.readLine();
|
||||||
@ -25,10 +24,14 @@ public class ClientReceiveThread extends Thread {
|
|||||||
BigInteger recipientN = new BigInteger(rsa.decrypt(in.readLine()));
|
BigInteger recipientN = new BigInteger(rsa.decrypt(in.readLine()));
|
||||||
ClientSendThread.setPK(recipientE, recipientN);
|
ClientSendThread.setPK(recipientE, recipientN);
|
||||||
} else if ("MESSAGGIO".equals(s)) {
|
} else if ("MESSAGGIO".equals(s)) {
|
||||||
|
s = in.readLine();
|
||||||
|
boolean verso = Boolean.parseBoolean(rsa.decrypt(s));
|
||||||
|
if(verso) System.out.print("You: ");
|
||||||
|
else System.out.print(ClientSendThread.getDestinatario()+": ");
|
||||||
s = in.readLine();
|
s = in.readLine();
|
||||||
System.out.println(rsa.decrypt(rsa.decrypt(s)));
|
System.out.println(rsa.decrypt(rsa.decrypt(s)));
|
||||||
s = in.readLine();
|
s = in.readLine();
|
||||||
System.out.println(rsa.decrypt(s));
|
System.out.print(rsa.decrypt(s)+" ");
|
||||||
s = in.readLine();
|
s = in.readLine();
|
||||||
System.out.println(rsa.decrypt(s));
|
System.out.println(rsa.decrypt(s));
|
||||||
} else System.out.print(rsa.decrypt(s));
|
} else System.out.print(rsa.decrypt(s));
|
||||||
|
@ -15,6 +15,7 @@ public class ClientSendThread extends Thread {
|
|||||||
private final BufferedReader in;
|
private final BufferedReader in;
|
||||||
|
|
||||||
private static BigInteger recipientE, recipientN;
|
private static BigInteger recipientE, recipientN;
|
||||||
|
private static String destinatario;
|
||||||
|
|
||||||
public ClientSendThread(BufferedReader in, BufferedWriter out, BigInteger se, BigInteger sn, Rsa rsa) {
|
public ClientSendThread(BufferedReader in, BufferedWriter out, BigInteger se, BigInteger sn, Rsa rsa) {
|
||||||
this.in = in;
|
this.in = in;
|
||||||
@ -60,6 +61,7 @@ public class ClientSendThread extends Thread {
|
|||||||
try {
|
try {
|
||||||
System.out.print(rsa.decrypt(in.readLine()));
|
System.out.print(rsa.decrypt(in.readLine()));
|
||||||
s = br.readLine();
|
s = br.readLine();
|
||||||
|
destinatario = s;
|
||||||
send(rsa.encrypt(s, se, sn));
|
send(rsa.encrypt(s, se, sn));
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
Logger.getLogger(ClientSendThread.class.getName()).log(Level.SEVERE, null, ex);
|
Logger.getLogger(ClientSendThread.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
@ -81,10 +83,12 @@ public class ClientSendThread extends Thread {
|
|||||||
s = br.readLine();
|
s = br.readLine();
|
||||||
if ("DISCONNECT".equals(s)) {
|
if ("DISCONNECT".equals(s)) {
|
||||||
send(rsa.encrypt(s, se, sn));
|
send(rsa.encrypt(s, se, sn));
|
||||||
|
System.exit(104);
|
||||||
break;
|
break;
|
||||||
} else if ("CD".equals(s)) {
|
} else if ("CD".equals(s)) {
|
||||||
send(rsa.encrypt(s, se, sn));
|
send(rsa.encrypt(s, se, sn));
|
||||||
s = br.readLine();
|
s = br.readLine();
|
||||||
|
destinatario = s;
|
||||||
send(rsa.encrypt(s, se, sn));
|
send(rsa.encrypt(s, se, sn));
|
||||||
} else {
|
} else {
|
||||||
send(rsa.encrypt(s, recipientE, recipientN));
|
send(rsa.encrypt(s, recipientE, recipientN));
|
||||||
@ -121,4 +125,8 @@ public class ClientSendThread extends Thread {
|
|||||||
recipientN = n;
|
recipientN = n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getDestinatario(){
|
||||||
|
return destinatario;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user