/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Servlet;
import Bean.BeanCaddy;
import Bean.BeanChambre;
import Bean.BeanMagasin;
import Bean.BeanReservation;
import Bean.BeanUser;
import Bean.Jdbc_MySQL;
import Helpers.EasyFile;
import Protocole.NetworkClient;
import Protocole.PacketCom;
import Protocole.RMP;
import Securite.KeyExchange;
import Securite.MyCertificate;
import Securite.MyKeys;
import Securite.SignatureWithCertificate;
import Thread.TimeOutReservations;
import Utils.Cryptage;
import java.awt.Color;
import java.beans.Beans;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.PrivateKey;
import java.security.Signature;
import java.security.SignatureException;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
import java.security.cert.CertificateExpiredException;
import java.security.cert.CertificateNotYetValidException;
import java.security.cert.X509Certificate;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.crypto.SecretKey;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.swing.JOptionPane;
/**
*
* @author Greenlamp
*/
@WebServlet(name = "Servlet_Controle", urlPatterns = {"/Servlet_Controle"})
public class Servlet_Controle extends HttpServlet {
public int numeroChance = 0;
TimeOutReservations timeOutReservations = new TimeOutReservations();
Boolean started = startThread(timeOutReservations);
/**
* Processes requests for both HTTP
* <code>GET</code> and
* <code>POST</code> methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
ServletContext sc = getServletContext();
String action = null;
action = request.getParameter("action");
BeanUser beanUser = (BeanUser)getVariableSession(request, "beanUser");
if(beanUser == null || beanUser.getNom() == null){
rediriger(request, response, sc, "/error.jsp");
}else if(action == null){
String message = request.getParameter("message");
rediriger(request, response, sc, "/accueil.jsp?message=" + message);
}else if(action.equals("error")){
rediriger(request, response, sc, "/magasin.jsp");
}else if(action.equals("magasin")){
creerMagasin(request, response, sc);
rediriger(request, response, sc, "/magasin.jsp");
}else if(action.equals("caddy")){
creerMagasin(request, response, sc);
rediriger(request, response, sc, "/caddy.jsp");
}else if(action.equals("ajoutCaddy")){
actionAjoutCaddy(request, response, sc, beanUser.getId());
creerMagasin(request, response, sc);
rediriger(request, response, sc, "/magasin.jsp");
}else if(action.equals("retraitCaddy")){
actionRetraitCaddy(request, response, sc, beanUser.getId());
creerMagasin(request, response, sc);
rediriger(request, response, sc, "/caddy.jsp");
}else if(action.equals("payement")){
rediriger(request, response, sc, "/payement.jsp");
}else if(action.equals("motelVillage")){
if(initKeyExchange(request, response, sc)){
rediriger(request, response, sc, "/motelVillage.jsp");
}else{
rediriger(request, response, sc, "/error.jsp?message=\"Erreur lors de l'échange de clé\"");
}
}else if(action.equals("broom")){
rediriger(request, response, sc, "/broom.jsp");
}else if(action.equals("proom")){
rediriger(request, response, sc, "/proom.jsp");
}else if(action.equals("croom")){
rediriger(request, response, sc, "/croom.jsp");
}else if(action.equals("broom_infos")){
actionBroomInfos(request, response, sc);
rediriger(request, response, sc, "/motelVillage.jsp");
}else if(action.equals("proom_infos")){
actionProomInfos(request, response, sc);
rediriger(request, response, sc, "/motelVillage.jsp");
}else if(action.equals("croom_infos")){
actionCroomInfos(request, response, sc);
rediriger(request, response, sc, "/motelVillage.jsp");
}else if(action.equals("payer")){
actionPayer(request, response, sc, beanUser.getId());
rediriger(request, response, sc, "/accueil.jsp");
}
else{
rediriger(request, response, sc, "/accueil.jsp");
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP
* <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP
* <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
/***********************************************************************************************/
/*UTILITAIRES*/
/***********************************************************************************************/
private Object getVariableSession(HttpServletRequest request, String key){
HttpSession session = request.getSession(true);
Object object = session.getAttribute(key);
return object;
}
private void addVariableSession(HttpServletRequest request, String key, Object value) {
HttpSession session = request.getSession(true);
session.setAttribute(key, value);
}
private void delVariableSession(HttpServletRequest request, String key){
HttpSession session = request.getSession(true);
session.removeAttribute(key);
}
private void rediriger(HttpServletRequest request, HttpServletResponse response, ServletContext sc, String lien) {
try {
RequestDispatcher rd = sc.getRequestDispatcher(lien);
rd.forward(request, response);
} catch (ServletException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
}
}
/***********************************************************************************************/
/*ACTIONS*/
/***********************************************************************************************/
private void actionAjoutCaddy(HttpServletRequest request, HttpServletResponse response, ServletContext sc, int id) {
int numeroChambre = Integer.parseInt(request.getParameter("numeroChambre"));
if(!dejaReserver(numeroChambre)){
String idReservation = genererIdReservation(numeroChambre, id);
String date = getDateNow();
String heure = getHeureNow();
creerReservation(idReservation, numeroChambre, id, date, heure);
BeanCaddy beanCaddy = (BeanCaddy) getVariableSession(request, "beanCaddy");
if(beanCaddy == null){
beanCaddy = new BeanCaddy();
}
BeanMagasin beanMagasin = (BeanMagasin)getVariableSession(request, "beanMagasin");
beanCaddy.addReservation(idReservation, numeroChambre, beanMagasin.getPrix(numeroChambre), date, heure);
addVariableSession(request, "beanCaddy", beanCaddy);
}
}
private void actionRetraitCaddy(HttpServletRequest request, HttpServletResponse response, ServletContext sc, int id) {
String idReservation = request.getParameter("idReservation");
supprimerReservation(idReservation, id);
BeanCaddy beanCaddy = (BeanCaddy) getVariableSession(request, "beanCaddy");
beanCaddy.removeReservation(idReservation);
addVariableSession(request, "beanCaddy", beanCaddy);
}
private BeanMagasin recupererMagasin() {
BeanMagasin beanMagasin = null;
try {
Jdbc_MySQL dbsql = (Jdbc_MySQL) Beans.instantiate(null, "Bean.Jdbc_MySQL");
dbsql.init();
int count = dbsql.count("chambres");
if(count != 0){
String request = "SELECT * FROM chambres WHERE numero NOT IN (SELECT chambre FROM reservations)";
Object tuples = dbsql.select(request);
beanMagasin = new BeanMagasin();
for(int i=1; i<count+1; i++){
int numero = Integer.parseInt(dbsql.extract(tuples, i, "numero"));
int nbOccupant = Integer.parseInt(dbsql.extract(tuples, i, "nb_occupants"));
int prixHtva = Integer.parseInt(dbsql.extract(tuples, i, "prix_htva"));
int douche = Integer.parseInt(dbsql.extract(tuples, i, "douche"));
int baignoire = Integer.parseInt(dbsql.extract(tuples, i, "baignoire"));
int cuvette = Integer.parseInt(dbsql.extract(tuples, i, "cuvette"));
BeanChambre beanChambre = new BeanChambre(numero, nbOccupant, douche, baignoire, cuvette, prixHtva);
beanMagasin.addChambre(beanChambre);
}
dbsql.endExtract();
dbsql.Disconnect();
}
} catch (Exception ex) {
Logger.getLogger(Servlet_Login.class.getName()).log(Level.SEVERE, null, ex);
}
return beanMagasin;
}
private void actionPayer(HttpServletRequest request, HttpServletResponse response, ServletContext sc, int id) {
String numCarte = request.getParameter("numCarte");
int total = Integer.parseInt(request.getParameter("total"));
if(numCarte == null || numCarte.isEmpty()){
rediriger(request, response, sc, "/error.jsp?message=\"Numéro de carte de crédit invalide.\"");
}
payerChambres(request);
}
/***********************************************************************************************/
/*ACCES DB*/
/***********************************************************************************************/
private boolean dejaReserver(int numeroChambre) {
boolean retour = false;
try {
Jdbc_MySQL dbsql = (Jdbc_MySQL) Beans.instantiate(null, "Bean.Jdbc_MySQL");
dbsql.init();
String request = "SELECT id FROM reservations WHERE chambre = '"+numeroChambre+"'";
Object tuples = dbsql.select(request);
String id = dbsql.extract(tuples, 1, "id");
if(id != null){
retour = true;
}
dbsql.endExtract();
dbsql.Disconnect();
} catch (Exception ex) {
Logger.getLogger(Servlet_Login.class.getName()).log(Level.SEVERE, null, ex);
}
return retour;
}
private void creerReservation(String idReservation, int numeroChambre, int id, String date, String heure) {
try {
Jdbc_MySQL dbsql = (Jdbc_MySQL) Beans.instantiate(null, "Bean.Jdbc_MySQL");
dbsql.init();
String request = "INSERT INTO reservations(id, chambre, payé, titulaire, date_reservation, heure_reservation) VALUES('"+idReservation+"', '"+numeroChambre+"', '0', '"+id+"', '"+date+"', '"+heure+"')";
dbsql.update(request);
dbsql.Disconnect();
} catch (Exception ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
}
}
private String getIdLastReservation() {
String retour = null;
try {
Jdbc_MySQL dbsql = (Jdbc_MySQL) Beans.instantiate(null, "Bean.Jdbc_MySQL");
dbsql.init();
String request = "SELECT id FROM reservations";
int count = dbsql.count("reservations");
Object tuples = dbsql.select(request);
for(int i=1; i<count+1; i++){
retour = dbsql.extract(tuples, i, "id");
}
dbsql.endExtract();
dbsql.Disconnect();
} catch (Exception ex) {
Logger.getLogger(Servlet_Login.class.getName()).log(Level.SEVERE, null, ex);
}
return retour;
}
private void supprimerReservation(String idReservation, int id) {
try {
Jdbc_MySQL dbsql = (Jdbc_MySQL) Beans.instantiate(null, "Bean.Jdbc_MySQL");
dbsql.init();
String request = "DELETE FROM reservations WHERE id = '"+idReservation+"' AND titulaire = '"+id+"'";
dbsql.update(request);
dbsql.Disconnect();
} catch (Exception ex) {
Logger.getLogger(Servlet_Login.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void payerChambre(String idReservation) {
try {
Jdbc_MySQL dbsql = (Jdbc_MySQL) Beans.instantiate(null, "Bean.Jdbc_MySQL");
dbsql.init();
String request = "update reservations set payé='1' where id='"+idReservation+"';";
dbsql.update(request);
dbsql.Disconnect();
} catch (Exception ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
}
}
/***********************************************************************************************/
/*METIER*/
/***********************************************************************************************/
private String genererIdReservation(int numeroChambre, int id) {
String idLastReservation = getIdLastReservation();
if(idLastReservation != null){
int num = recupNumId(idLastReservation);
num += 1;
String numId = null;
if(num < 10){
numId = "0" + num;
}else{
numId = String.valueOf(num);
}
Date now = new Date();
DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
String date = dateFormat.format(now);
String idReservation = date + "-RES" + numId;
return idReservation;
}else{
String numId = "01";
Date now = new Date();
DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
String date = dateFormat.format(now);
String idReservation = date + "-RES" + numId;
return idReservation;
}
}
private int recupNumId(String idLastReservation) {
String[] split = idLastReservation.split("-RES");
String partieDroite = split[1];
int numId = Integer.parseInt(partieDroite);
return numId;
}
private void creerMagasin(HttpServletRequest request, HttpServletResponse response, ServletContext sc) {
BeanMagasin beanMagasin = recupererMagasin();
this.addVariableSession(request, "beanMagasin", beanMagasin);
}
private String getDateNow() {
Date now = new Date();
DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
String date = dateFormat.format(now);
return date;
}
private String getHeureNow() {
Date now = new Date();
DateFormat dateFormat = new SimpleDateFormat("HH:mm");
String heure = dateFormat.format(now);
return heure;
}
private void payerChambres(HttpServletRequest request) {
BeanCaddy beanCaddy = (BeanCaddy) getVariableSession(request, "beanCaddy");
for(BeanReservation beanReservation: beanCaddy.getListeReservation()){
payerChambre(beanReservation.getIdReservation());
}
beanCaddy.viderCaddy();
addVariableSession(request, "beanCaddy", beanCaddy);
}
private Boolean startThread(TimeOutReservations timeOutReservations) {
Thread threadTimeOut = new Thread(timeOutReservations);
threadTimeOut.start();
return true;
}
private boolean initKeyExchange(HttpServletRequest request, HttpServletResponse response, ServletContext sc) {
NetworkClient socketClient = (NetworkClient) getVariableSession(request, "socketClient");
if(socketClient != null){
return true;
}
/***************************/
//Récupération du keystore
/***************************/
String path = EasyFile.getConfig("Configs_Serveur_Reservations", "ADRESSE_KS_NOSSL");
File fichierKeyStore = new File(path);
KeyStore ks = null;
try {
ks = KeyStore.getInstance("PKCS12", "BC");
String passKs = "lolilol";
ks.load(new FileInputStream(fichierKeyStore), passKs.toCharArray());
} catch (KeyStoreException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
} catch (NoSuchProviderException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
} catch (NoSuchAlgorithmException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
} catch (CertificateException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
}
/***************************/
//Récupération du certificat
/***************************/
MyCertificate myCertificate = new MyCertificate();
try {
myCertificate.setCertificate((X509Certificate) ks.getCertificate("client"));
myCertificate.getCertificate().checkValidity();
String passKs = "lolilol";
myCertificate.setPrivateKey((PrivateKey) ks.getKey("client", passKs.toCharArray()));
} catch (KeyStoreException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
} catch (NoSuchAlgorithmException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
} catch (UnrecoverableKeyException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
} catch (CertificateExpiredException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
} catch (CertificateNotYetValidException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
}
String host = EasyFile.getConfig("Configs_Serveur_Reservations", "HOST");
int port = Integer.parseInt(EasyFile.getConfig("Configs_Serveur_Reservations", "PORT_VOYAGEURS"));
socketClient = new NetworkClient(host, port, myCertificate);
addVariableSession(request, "socketClient", socketClient);
SignatureWithCertificate swc = new SignatureWithCertificate();
try {
Signature signature = Signature.getInstance("SHA1withRSA", "BC");
swc.setCertificate(myCertificate.getCertificate());
signature.initSign(myCertificate.getPrivateKey());
swc.setSignature(signature.sign());
socketClient.send(new PacketCom(RMP.KEY_EXCHANGE, (Object) swc));
PacketCom packetRetour;
try {
packetRetour = socketClient.receive();
return traitementPacket(request, response, sc, myCertificate, packetRetour);
} catch (Exception ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
}
} catch (NoSuchAlgorithmException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
} catch (NoSuchProviderException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
} catch (InvalidKeyException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
} catch (SignatureException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
}
return false;
}
private boolean traitementPacket(HttpServletRequest request, HttpServletResponse response, ServletContext sc, MyCertificate myCertificate, PacketCom packetReponse) {
String type = packetReponse.getType();
Object contenu = packetReponse.getObjet();
if(type.equalsIgnoreCase(RMP.SESSION_KEY)){
Cryptage cryptage = new Cryptage();
SecretKey cleSession = null;
KeyExchange keyExchange = (KeyExchange) contenu;
byte[] cleSessionCrypted = keyExchange.getCleSession();
byte[] cleSessionDecrypted = cryptage.decrypt(Cryptage.RSA, cleSessionCrypted, myCertificate.getPrivateKey());
cleSession = cryptage.byteToCleSession(cleSessionDecrypted);
MyKeys myKeys = new MyKeys(myCertificate.getPrivateKey(), myCertificate.getCertificate().getPublicKey(), cleSession, myCertificate.getCertificate());
addVariableSession(request, "myKeys", myKeys);
return true;
}else if(type.equalsIgnoreCase(RMP.BROOM_OUI)){
Object[] infos = (Object[]) contenu;
int numeroChambre = (Integer) infos[0];
int prix = (Integer) infos[1];
String msgConfirmation = "Chambre n°" + numeroChambre + " au prix de " + prix;
addVariableSession(request, "msgConfirmation", msgConfirmation);
return true;
}else if(type.equalsIgnoreCase(RMP.BROOM_NON)){
String msgConfirmation = (String) contenu;
addVariableSession(request, "msgConfirmation", msgConfirmation);
return true;
}else if(type.equalsIgnoreCase(RMP.PROOM_OUI)){
String msgConfirmation = "Le payement de la chambre a été éffectué.";
addVariableSession(request, "msgConfirmation", msgConfirmation);
return true;
}else if(type.equalsIgnoreCase(RMP.PROOM_NON)){
String msgConfirmation = (String) contenu;
addVariableSession(request, "msgConfirmation", msgConfirmation);
return true;
}else if(type.equalsIgnoreCase(RMP.CROOM_OUI)){
String msgConfirmation = "Suppression de la réservation éffectuée.";
addVariableSession(request, "msgConfirmation", msgConfirmation);
return true;
}else if(type.equalsIgnoreCase(RMP.CROOM_NON)){
String msgConfirmation = (String) contenu;
addVariableSession(request, "msgConfirmation", msgConfirmation);
return true;
}else{
return false;
}
}
private boolean actionBroomInfos(HttpServletRequest request, HttpServletResponse response, ServletContext sc) {
String categorie = request.getParameter("categorie");
String type = request.getParameter("type");
String nbNuit = request.getParameter("nbNuit");
String date = request.getParameter("date");
NetworkClient socketClient = (NetworkClient) getVariableSession(request, "socketClient");
MyKeys myKeys = (MyKeys) getVariableSession(request, "myKeys");
BeanUser beanUser = (BeanUser) getVariableSession(request, "beanUser");
Cryptage cryptage = new Cryptage();
String nomClient = beanUser.getNom();
byte[] categorieCrypted =cryptage.crypt(Cryptage.DES, categorie.getBytes(), myKeys.getCleSession());
byte[] typeCrypted =cryptage.crypt(Cryptage.DES, type.getBytes(), myKeys.getCleSession());
byte[] nbNuitCrypted =cryptage.crypt(Cryptage.DES, nbNuit.getBytes(), myKeys.getCleSession());
byte[] dateCrypted =cryptage.crypt(Cryptage.DES, date.getBytes(), myKeys.getCleSession());
byte[] nomClientCrypted = cryptage.crypt(Cryptage.DES, nomClient.getBytes(), myKeys.getCleSession());
Signature signature;
byte[] signatureResponsable = null;
try {
signature = Signature.getInstance("SHA1withRSA", "BC");
signature.initSign(myKeys.getClePrivee());
signatureResponsable = signature.sign();
} catch (NoSuchAlgorithmException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
} catch (NoSuchProviderException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
} catch (InvalidKeyException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
} catch (SignatureException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
}
MessageDigest md;
byte[] digest = null;
try {
md = MessageDigest.getInstance("SHA1");
md.update(categorieCrypted);
md.update(typeCrypted);
md.update(dateCrypted);
md.update(nbNuitCrypted);
md.update(nomClientCrypted);
md.update(signatureResponsable);
digest = md.digest();
} catch (NoSuchAlgorithmException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
}
Object[] infos = {categorieCrypted, typeCrypted, dateCrypted, nbNuitCrypted, nomClientCrypted, signatureResponsable, digest};
socketClient.send(new PacketCom(RMP.BROOM, (Object)infos));
PacketCom packetRetour;
try {
packetRetour = socketClient.receive();
MyCertificate myCertificate = new MyCertificate();
myCertificate.setCertificate(myKeys.getCertificate());
myCertificate.setPrivateKey(myKeys.getClePrivee());
return traitementPacket(request, response, sc, myCertificate, packetRetour);
} catch (Exception ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
}
return false;
}
private boolean actionProomInfos(HttpServletRequest request, HttpServletResponse response, ServletContext sc) {
String numChambre = request.getParameter("numChambre");
String carteCredit = request.getParameter("carteCredit");
String date = request.getParameter("date");
NetworkClient socketClient = (NetworkClient) getVariableSession(request, "socketClient");
MyKeys myKeys = (MyKeys) getVariableSession(request, "myKeys");
BeanUser beanUser = (BeanUser) getVariableSession(request, "beanUser");
Cryptage cryptage = new Cryptage();
String nomClient = beanUser.getNom();
byte[] numChambreCrypted =cryptage.crypt(Cryptage.DES, numChambre.getBytes(), myKeys.getCleSession());
byte[] carteCreditCrypted =cryptage.crypt(Cryptage.DES, carteCredit.getBytes(), myKeys.getCleSession());
byte[] dateCrypted =cryptage.crypt(Cryptage.DES, date.getBytes(), myKeys.getCleSession());
byte[] nomClientCrypted = cryptage.crypt(Cryptage.DES, nomClient.getBytes(), myKeys.getCleSession());
Signature signature;
byte[] signatureResponsable = null;
try {
signature = Signature.getInstance("SHA1withRSA", "BC");
signature.initSign(myKeys.getClePrivee());
signatureResponsable = signature.sign();
} catch (NoSuchAlgorithmException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
} catch (NoSuchProviderException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
} catch (InvalidKeyException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
} catch (SignatureException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
}
MessageDigest md;
byte[] digest = null;
try {
md = MessageDigest.getInstance("SHA1");
md.update(numChambreCrypted);
md.update(nomClientCrypted);
md.update(carteCreditCrypted);
md.update(dateCrypted);
md.update(signatureResponsable);
digest = md.digest();
} catch (NoSuchAlgorithmException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
}
Object[] infos = {numChambreCrypted, nomClientCrypted, carteCreditCrypted, dateCrypted, signatureResponsable, digest};
socketClient.send(new PacketCom(RMP.PROOM, (Object)infos));
PacketCom packetRetour;
try {
packetRetour = socketClient.receive();
MyCertificate myCertificate = new MyCertificate();
myCertificate.setCertificate(myKeys.getCertificate());
myCertificate.setPrivateKey(myKeys.getClePrivee());
return traitementPacket(request, response, sc, myCertificate, packetRetour);
} catch (Exception ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
}
return false;
}
private boolean actionCroomInfos(HttpServletRequest request, HttpServletResponse response, ServletContext sc) {
String numChambre = request.getParameter("numChambre");
String date = request.getParameter("date");
NetworkClient socketClient = (NetworkClient) getVariableSession(request, "socketClient");
MyKeys myKeys = (MyKeys) getVariableSession(request, "myKeys");
BeanUser beanUser = (BeanUser) getVariableSession(request, "beanUser");
Cryptage cryptage = new Cryptage();
String nomClient = beanUser.getNom();
Signature signature;
byte[] signatureResponsable = null;
try {
signature = Signature.getInstance("SHA1withRSA", "BC");
signature.initSign(myKeys.getClePrivee());
signatureResponsable = signature.sign();
} catch (NoSuchAlgorithmException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
} catch (NoSuchProviderException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
} catch (InvalidKeyException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
} catch (SignatureException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
}
MessageDigest md;
byte[] digest = null;
try {
md = MessageDigest.getInstance("SHA1");
md.update(numChambre.getBytes());
md.update(nomClient.getBytes());
md.update(date.getBytes());
md.update(signatureResponsable);
digest = md.digest();
} catch (NoSuchAlgorithmException ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
}
Object[] infos = {numChambre, nomClient, date, signatureResponsable, digest};
socketClient.send(new PacketCom(RMP.CROOM, (Object)infos));
PacketCom packetRetour;
try {
packetRetour = socketClient.receive();
MyCertificate myCertificate = new MyCertificate();
myCertificate.setCertificate(myKeys.getCertificate());
myCertificate.setPrivateKey(myKeys.getClePrivee());
return traitementPacket(request, response, sc, myCertificate, packetRetour);
} catch (Exception ex) {
Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex);
}
return false;
}
}