serveur
This commit is contained in:
@@ -1,6 +1,21 @@
|
||||
package fr.istic.chiffrement;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStream;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.net.ServerSocket;
|
||||
import java.security.KeyStore;
|
||||
import java.util.Arrays;
|
||||
|
||||
import javax.net.ssl.KeyManagerFactory;
|
||||
import javax.net.ssl.SSLContext;
|
||||
import javax.net.ssl.SSLServerSocket;
|
||||
import javax.net.ssl.SSLServerSocketFactory;
|
||||
import javax.net.ssl.SSLSocket;
|
||||
|
||||
public class Serveur {
|
||||
static int PORT = 9999;
|
||||
@@ -17,7 +32,7 @@ public class Serveur {
|
||||
|
||||
public static ServerSocket creerSocketClassique() throws Exception {
|
||||
// TODO : retourner une socket classique qui écoute sur le port 9999
|
||||
return null;
|
||||
return new ServerSocket(9999);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -34,12 +49,46 @@ public class Serveur {
|
||||
// + mot de passe store et clef : variable PASSWORD plus haut.
|
||||
// + keystore, serveurstore.keys
|
||||
|
||||
return null; // Retourner la socket correctement configurée
|
||||
SSLContext context = SSLContext.getInstance("TLS");
|
||||
KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
|
||||
KeyStore ks = KeyStore.getInstance("JKS");
|
||||
|
||||
ks.load(new FileInputStream("monstore.keys"), PASSWORD);
|
||||
kmf.init(ks, PASSWORD);
|
||||
context.init(kmf.getKeyManagers(), null, null);
|
||||
Arrays.fill(PASSWORD, '0');
|
||||
SSLServerSocketFactory factory = context.getServerSocketFactory();
|
||||
SSLServerSocket server = (SSLServerSocket) factory.createServerSocket(9999);
|
||||
server.setEnabledCipherSuites(new String[] { "TLS_ECDH_anon_WITH_AES_128_CBC_SHA" });
|
||||
|
||||
|
||||
|
||||
return server; // Retourner la socket correctement configurée
|
||||
}
|
||||
|
||||
public static void readPingSendPong(ServerSocket server) throws Exception {
|
||||
// accepter une connexion
|
||||
// lire PING
|
||||
// écrire PONG vers le client
|
||||
boolean active = true;
|
||||
while (active) {
|
||||
// accepter une connexion
|
||||
SSLSocket sslsocket = (SSLSocket) server.accept();
|
||||
InputStream in = sslsocket.getInputStream();
|
||||
OutputStream out = sslsocket.getOutputStream();
|
||||
|
||||
// lire PING
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
|
||||
String message = reader.readLine();
|
||||
int id = -1;
|
||||
if(message.startsWith("ping")){
|
||||
String num = message.replaceFirst("^" + "ping", "");
|
||||
try {
|
||||
id = Integer.parseInt(num);
|
||||
} catch (NumberFormatException e) {
|
||||
}
|
||||
}
|
||||
|
||||
// écrire PONG vers le client
|
||||
out.write(("pong"+id).getBytes());
|
||||
in.close();out.close();sslsocket.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user