commit e213dd82124dbc7cbb4b08ad13066132841b2f18
Author: root <root@anet>
Date:   Mon Mar 23 19:41:06 2015 +0100

    pas commite depuis trop longtemps, et ajout du debut de support epack pour tabuledu

diff --git a/htdocs/epack/abuledu-base_genere_automatiquement_enregistrement_epack.odp b/htdocs/epack/abuledu-base_genere_automatiquement_enregistrement_epack.odp
index 305d7a6..11eeda0 100644
Binary files a/htdocs/epack/abuledu-base_genere_automatiquement_enregistrement_epack.odp and b/htdocs/epack/abuledu-base_genere_automatiquement_enregistrement_epack.odp differ
diff --git a/htdocs/epack/export/checksum b/htdocs/epack/export/checksum
index 47f6f9f..c098c9c 100644
Binary files a/htdocs/epack/export/checksum and b/htdocs/epack/export/checksum differ
diff --git a/htdocs/epack/export/checksum.md5 b/htdocs/epack/export/checksum.md5
index a0afc48..d940543 100644
--- a/htdocs/epack/export/checksum.md5
+++ b/htdocs/epack/export/checksum.md5
@@ -1 +1 @@
-78310e8f3bb280084faf9f0e1d7810d0  checksum
+6058fe910c89a9aeaacd37969d3716a2  checksum
diff --git a/htdocs/epack/register-tabuledu.php b/htdocs/epack/register-tabuledu.php
new file mode 100644
index 0000000..a8921ec
--- /dev/null
+++ b/htdocs/epack/register-tabuledu.php
@@ -0,0 +1,742 @@
+<?php
+//AJAX CODE
+
+$commande = "";
+$message = "";
+$debug = "";
+$log_debug = 1; //flag pour savoir s'il faut ecrire les debug logs dans le fichier de logs
+$log_file = "/tmp/debug.log";
+$send_mail = 0; //flag pour savoir s'il faut envoyer un mail (en bref a toute insertion ou update de base)
+
+function make_pdf($pass,$code,$datapost) {
+  global $message;
+  global $login_email;
+  require_once('lib/odf.php');
+  $odf = new odf("abuledu-base_genere_automatiquement_enregistrement_epack.odp");
+   
+  //1ere page
+  setlocale(LC_TIME, "fr_FR.UTF-8");
+  //  $odf->setVars('date', strftime("%A %e %B %Y"));
+  $odf->setVars('date_installation', $datapost['IDATE']);
+  $odf->setVars('date', date("d/m/Y"));
+
+  //Le epack
+  $odf->setVars('epack_pass', $pass);
+  $odf->setVars('epack_code', $code);
+
+  //Les mots de passes
+  $odf->setVars('pass_root', $datapost['IROOT']);
+  $odf->setVars('pass_abuladmin', $datapost['IABE']);
+
+  //L'école
+  $odf->setVars('ecole_nom', $datapost['INAME'], true, 'UTF-8');
+  $odf->setVars('ecole_adresse', $datapost['IADDRESS0'], true, 'UTF-8');
+  $odf->setVars('ecole_cp', $datapost['IPOSTALCODE'], true, 'UTF-8');
+  $odf->setVars('ecole_ville', $datapost['ICITY'], true, 'UTF-8');
+  $odf->setVars('ecole_pays', $datapost['ICOUNTRY'], true, 'UTF-8');
+  $odf->setVars('ecole_tel', $datapost['ITEL'], true, 'UTF-8');
+  $odf->setVars('ecole_email', $datapost['IEMAIL'], true, 'UTF-8');
+
+  //Le tabuledu
+  $odf->setVars('srv_srv', $datapost['ISRV'], true, 'UTF-8');
+  $odf->setVars('srv_serial', $datapost['ISERIAL'], true, 'UTF-8');
+  $odf->setVars('srv_cpu', $datapost['CPU'], true, 'UTF-8');
+  $odf->setVars('srv_ram', $datapost['RAM'], true, 'UTF-8');
+  $odf->setVars('srv_hdd0', $datapost['HDD0'], true, 'UTF-8');
+  $odf->setVars('srv_hdd1', $datapost['HDD1'], true, 'UTF-8');
+  $odf->setVars('srv_eth0', $datapost['MAC0'], true, 'UTF-8');
+  $odf->setVars('srv_eth1', $datapost['MAC1'], true, 'UTF-8');
+
+  //L'admin local
+  $odf->setVars('adm_prenom', $datapost['ADM_FIRSTNAME'], true, 'UTF-8');
+  $odf->setVars('adm_nom', $datapost['ADM_LASTNAME'], true, 'UTF-8');
+  $odf->setVars('adm_email', $datapost['ADM_EMAIL'], true, 'UTF-8');
+
+  //La personne ressource
+  $odf->setVars('pr_prenom', $datapost['PR_FIRSTNAME'], true, 'UTF-8');
+  $odf->setVars('pr_nom', $datapost['PR_LASTNAME'], true, 'UTF-8');
+  $odf->setVars('pr_email', $datapost['PR_EMAIL'], true, 'UTF-8');
+
+  //L'anim TICE
+  $odf->setVars('atice_prenom', $datapost['ATICE_FIRSTNAME'], true, 'UTF-8');
+  $odf->setVars('atice_nom', $datapost['ATICE_LASTNAME'], true, 'UTF-8');
+  $odf->setVars('atice_email', $datapost['ATICE_EMAIL'], true, 'UTF-8');
+
+  //Le revendeur
+  $odf->setVars('rvd_code', $datapost['RCODE'], true, 'UTF-8');
+  $odf->setVars('rvd_nom', $datapost['RNAME'], true, 'UTF-8');
+  $odf->setVars('rvd_tel', $datapost['RTEL'], true, 'UTF-8');
+  $odf->setVars('rvd_email', $datapost['REMAIL'], true, 'UTF-8');
+  $odf->setVars('rvd_adresse', $datapost['RADDRESS'], true, 'UTF-8');
+  $odf->setVars('rvd_cp', $datapost['RCP'], true, 'UTF-8');
+  $odf->setVars('rvd_ville', $datapost['RVILLE'], true, 'UTF-8');
+  
+  //On créé un fichier local pour archive ...
+  $fichier="archives/" . date("Y-m-d") . "-epack-register-" . $code . ".odp";
+  $fichier_pdf="archives/" . date("Y-m-d") . "-epack-register-" . $code . ".pdf";
+
+  $odf->saveToDisk($fichier);
+  $t = exec("unoconv --server localhost --port 2002 -f pdf " . $fichier);
+
+  //Ensuite il faut l'envoyer par email ...
+  $txtmail = "Bonjour,
+vous venez d'enregistrer un ePack d'installation AbulÉdu et nous vous en remercions.
+
+Vous trouverez ci-joint le document récapitulatif de votre enregistrement.
+
+--
+RyXéo SARL
+contact@ryxeo.com
+Tel: 05 35 54 01 18";
+  $crlf = "\n";
+  $hdrs = array(
+	      'From'    => 'contact@ryxeo.com',
+              'Subject' => mb_encode_mimeheader("[AbulEdu] Fiche d'installation " . $datapost['INAME']),
+	      'BCC'     => 'contact@ryxeo.com, supportteam@ryxeo.com'
+		);
+  $mime = new Mail_mime($crlf);
+  $mime->setTXTBody($txtmail);
+  $mime->addAttachment($fichier_pdf, mime_content_type($fichier_pdf));
+  $mime->addAttachment($fichier, mime_content_type($fichier));
+  $body = $mime->get(array('text_charset' => 'utf-8'));
+  $hdrs = $mime->headers($hdrs);
+  $mail =& Mail::factory('mail');
+  
+  if(trim($datapost['REMAIL']) == "") {
+    if(trim($login_email) != "") {
+      $mail->send($login_email, $hdrs, $body);
+    }
+    else {
+      //On cherche le mail associe a ce pack ?
+      $mail->send("contact@ryxeo.com", $hdrs, $body);
+    }
+  }
+  else {
+    $mail->send($datapost['REMAIL'], $hdrs, $body);
+  }
+}
+
+function send_mail_installation($pass,$code,$datapost) {
+  $mail_content = "
+
+Bonjour,
+
+un nouveau tabuledu vient d'être inséré dans AbulÉdu.NET:
+
+Référence du ePack AbulÉdu:
+ - $pass
+ - $code
+
+Site de l'installation:
+ - Nom:           " .  addslashes($datapost['INAME']) . "
+ - Adresse:       " .  addslashes($datapost['IADDRESS0'] . " " . $datapost['IADDRESS1'] ) . "
+ - Code postal:   " .  addslashes($datapost['IPOSTALCODE']) . "
+ - Ville:         " .  addslashes($datapost['ICITY']) . "
+ - Pays:          " .  addslashes($datapost['ICOUNTRY']) . "
+ - Téléphone:     " .  addslashes($datapost['ITEL']) . "
+ - Adresse email: " .  addslashes($datapost['IEMAIL']) . "
+
+Tabuledu:
+ - Marque ou modèle:    " . $datapost['ISRV'] . "
+ - Numéro de série:     " . $datapost['ISERIAL'] . "
+ - Processeur:          " . $datapost['CPU'] . "
+ - Mémoire vive:        " . $datapost['RAM'] . "
+ - Disque dur 1:        " . $datapost['HDD0'] . "
+ - Disque dur 2:        " . $datapost['HDD1'] . "
+ - Carte réseau 1:      " . $datapost['MAC0'] . "
+ - Carte réseau 2:      " . $datapost['MAC1'] . "
+ - Date d'installation: " . $datapost['IDATE'] . "
+
+Mots de passe:
+ - root: " . $datapost['IROOT'] . "
+ - abuladmin: " . $datapost['IABE'] . "
+
+Installateur:
+ - Société:   " . $datapost['RCODE'] . "
+ - Adresse:   " . $datapost['RADDRESS'] . "
+ - Ville:     " . $datapost['RCP'] . " " . $datapost['RVILLE'] . "
+ - Nom:       " . $datapost['RNAME'] . "
+ - Téléphone: " . $datapost['RTEL'] . "
+ - Email:     " . $datapost['REMAIL'] . "
+
+Compte utilisateur:
+ - Nom:    " . $datapost['ADM_LASTNAME'] . "
+ - Prénom: " . $datapost['ADM_FIRSTNAME'] . "
+ - Email:  " . $datapost['ADM_EMAIL'] . "
+
+Compte personne ressource:
+ - Nom:    " . $datapost['PR_LASTNAME'] . "
+ - Prénom: " . $datapost['PR_FIRSTNAME'] . "
+ - Email:  " . $datapost['PR_EMAIL'] . "
+
+Compte ATICE:
+ - Nom:    " . $datapost['ATICE_LASTNAME'] . "
+ - Prénom: " . $datapost['ATICE_FIRSTNAME'] . "
+ - Email:  " . $datapost['ATICE_EMAIL'] . "
+
+Commentaires:
+" . $datapost["ICOMMENT"] . "
+
+--
+abuledu.net est un service de RyXéo SARL, société éditrice d'AbulÉdu
+
+";
+
+  if(stripos($code, "-TESTS-")) {
+    ryxeo_mail("anet@ryxeo.com",$mail_content,"contact@ryxeo.com","[epack de test] Nouveau tabuledu dans la base abuledu.net");
+    make_conffiles($datapost['MAC0'],$pass,$code);
+  }
+  else {
+    ryxeo_mail("anet@ryxeo.com",$mail_content,"contact@ryxeo.com","Nouveau tabuledu dans la base abuledu.net");
+  }
+}
+
+//Verifie si les donnees qu'on a en entree sont correctes sinon on saute ... direction webadmin/installation
+function verification_data() {
+  global $datapost;
+  global $message;
+  $error = "";
+  if(trim(strtolower($datapost['MAC0'])) == "") // || trim(strtolower($datapost['MAC1'])) == "" )
+    $error .= "<li>Il manque une carte réseau dans ce tabuledu !</li>";
+  if(trim($datapost['INAME'])        == "")
+    $error .= "<li>Erreur sur le nom de l'installation</li>";
+  if(trim($datapost['IADDRESS0'])    == "")
+    $error .= "<li>Adresse de l'installation incorrecte</li>";
+  if(trim($datapost['IPOSTALCODE'])  == "")
+    $error .= "<li>Code postal incorrect</li>";
+  if(trim($datapost['ICITY'])        == "")
+    $error .= "<li>Nom de ville incorrect</li>";
+  if(trim($datapost['ICOUNTRY'])     == "")
+    $error .= "<li>Nom du pays incorrect</li>";
+  if(trim($datapost['ITEL'])         == "")
+    $error .= "<li>Numéro de téléphone incorect</li>";
+  if(trim($datapost['ADM_LASTNAME']) == "")
+    $error .= "<li>Nom du contact administratif incomplet</li>";
+  if(trim($datapost['ADM_FIRSTNAME'])== "")
+    $error .= "<li>Prénom du contact administratif incomplet</li>";
+  if(strpos($datapost['IEMAIL'],"@")    == FALSE)
+    $error .= "<li>Adresse email de l'école incorrecte</li>";
+  if(strpos($datapost['ADM_EMAIL'],"@") == FALSE)
+    $error .= "<li>Adresse email du responsable administratif incorrecte</li>";
+
+  if($error != "") {
+    $message .= "<ul>";
+    $message .= $error;
+    $message .= "</ul>";
+    return false;
+  }
+  else
+    return true;
+
+}
+
+//création des fichiers de conf sur ce nouve<au tabuledu
+//ou restauration des fichiers de conf (si réinstallation)
+function make_conffiles($login,$pass,$code) {
+  global $commande;
+  $codecrypt = md5($pass);
+
+  //Si c'est un tabuledu de tests on ne cree surtout pas le fichier gdipc pour eviter que apt essaye
+  //de passer en mode authentifie, on demandera donc le login/pass rvd a chaque upgrade
+  if(stripos($code, "-TESTS-")) {
+    $commande .= "";
+  }
+  else {
+    $commande .= "  echo \"" . $login . ";dip.abuledu.net;http://dip.abuledu.net/gnudip/cgi-bin/gdipupdt.cgi;" . $codecrypt . ";/home/abecmd/.GnuDIP2.cache." . $login  . ".dip.abuledu.net;0;2073600\" > ~abecmd/.GnuDIP2
+  chmod 600 ~abecmd/.GnuDIP2
+  chown abecmd:admin ~abecmd/.GnuDIP2
+  su - abecmd gdipc\n";
+  }
+
+  $commande .= "  mkdir ~abecmd/.ssh || true
+  echo \"ssh-dss AAAAB3NzaC1kc3MAAACBAPM3DKuDXuSsQgPeBNO/jBEAd28smHqYVAODRwshfI04/rFvwh/A+7UZ2H/QnZOn6XLS/3R4yPp/QdGKEJ0BCHDd2fLIuS6ZLDHoHdQRBFzEAXP1SE1Yyp9c1pKnWeke6oK6196yKpE2aWBRv9kma+KoPhz7mpt6KHISow+yYV/PAAAAFQDFCotxKtxherzuwzVbeXmiOGQ3EwAAAIEAq+KXzJUt13h5QvM7u0O3mbDGD6YY9avMYqFk8StJ4DoFpSfeiwvNynoDsAE2qLTje7hbs+UO4Ns1lCLhh4R4T9wdLodTRVfizvqjZhmhOGfTHUjX9qi+dTs7c0mtqZz89ZZSqJsnMb9I1Ifj0H++MOswa7qp1cFxzUYtlew128QAAACAXve21Gn+gD7GXhvLIMq7bq6/ECjcjoBQcpLF72Z3tAsd0i0Scv1eydsUiee47pr3o4fJToQAr3iFQX6zWnDaw4htg3cZAMzfuvXxuWBcDoQ2qjYAk1A/FoJM7z5pPZXnWQZ+Vq+HfsW8W7EHztVgoZ/Xj/10webHjcL8CzFGWU4= remoteabecmd@Timide
+ssh-dss AAAAB3NzaC1kc3MAAACBAIyAzv1X8Hy8r8QiJAmhlDs9INd0jCpYNk5OxBDYA1/qdmKVqVMwKACvZg8xigRBg4e5PMsgpGQf9OxHTlhIiqAjwxmi7tHAy1t1fHuqDCZmqpQG5banOPvr4R5w4q47jKAJNqRsofgZACQKo8KkSHxY5VWZNx5bOfZYdEcWcNqpAAAAFQCXElvdvY+/aILI5a1z4fKRybA7GQAAAIB+5v/foiMKyZ+JEocToPIj2fP4mH7o8xnA1T8HKUGOiutxT/TWT4OnUMmquA/XVdzOyJ/tEeznfUDvlJZzKtFoW75ftQ8Or0AJj68jGQQ3wxQW5TXKuOCoo4vdf0ZQ+ASbzY1ECdxiQEB5kWusWbpes/eyTzDzjpUjMfR2JS5+rAAAAIAksQfdasobfpGuqLIvHBpgSFyas9J6EguBQVauNyLy7IE/WmAN1zgbYvBVU7KY3WUr5pgum9GcExCfnGH/qW7zR7M5zbZdOwq2W4AphXibkf+YbB2q1BouigbUzCiA54wa6XArtHsx0PpzyToHjAplnI4O5DhJ1SQNHClLbfA9Gw== erics@hurlevent
+\" > ~abecmd/.ssh/authorized_keys
+  chmod 700 ~abecmd/.ssh -R
+  chown abecmd:admin ~abecmd/.ssh -R
+  adduser abecmd admin || true
+  cd ~abecmd
+  wget apt.ryxeo.com/ryxeo/bashrc -O .bashrc
+  chown abecmd .bashrc
+";
+
+  //Et maintenant on sauvegarde qqpart le code/pass du pack
+  $commande .= "
+echo \"" . $code . ":" . $pass . "\" > /etc/abuledu/epack
+chown aesd:www-data /etc/abuledu/epack || true
+chmod 640 /etc/abuledu/epack || true
+sed -i -e \"/.*EPACK.*/D\" /etc/abuledu/rvd || true
+echo RVD_EPACK_CODE=\\\"$code\\\" >> /etc/abuledu/rvd
+";
+
+  //L'identification du revendeur ... a améliorer
+  $commande .= make_rvd_conffile();
+
+  //Il faudrait egalement faire la base pour OCS-NG et les remontees automatiques ... on utilisera le code du epack 
+}
+
+function make_rvd_conffile() {
+  global $DB;
+  //Securisation de l'identification du revendeur ... a améliorer
+  $commande .= "
+chown aesd /etc/abuledu/rvd
+chmod 400 /etc/abuledu/rvd
+";
+
+}
+
+function add_user_and_update_link($usermail,$identity,$userlastname,$userfirstname,$tag="") {
+  global $DB;
+  global $debug;
+  global $message;
+  global $send_mail;
+
+  if(trim($usermail) == "") {
+    $message .= "<li><font color=\"red\">ERROR ($tag)</font> compte utilisateur sans adresse email ! $userlastname :: $userfirstname</li>\n";
+    return;
+  }
+
+  $query = "SELECT * from glpi_users WHERE email='$usermail'";
+  $result = $DB->query($query);
+  $debug .= "<p>nb ; " . $DB->numrows($result) . " req : $query</p>";
+  if($DB->numrows($result)>0) {
+    $data = $DB->fetch_assoc($result);
+    $iduser = $data['ID'];
+    //existe dejà on fait juste le lien s'il n'existe pas déjà
+    $query2 = "SELECT * FROM glpi_users_profiles WHERE FK_users='$iduser' AND FK_entities='$identity'";
+    //$debug .= "$query2";
+    $result2 = $DB->query($query2);
+    if($DB->numrows($result2)<=0) {
+      //pour eviter qu'un utilisateur se retrouve dans l'entite racine ...
+      if(trim($identity) != 0) {
+	$query3 = "INSERT INTO glpi_users_profiles(FK_users,FK_entities,FK_profiles,recursive,dynamic) VALUES('$iduser','$identity',1,0,1)";
+	$result3 = $DB->query($query3);
+	$send_mail = 1;
+	if($result3)
+	  $message .= "<li>Attribution des droits de l'utilisateur $usermail sur le tabuledu: <font color=\"green\">OK</font></li>\n";
+	else {
+	  $message .= "<li>Attribution des droits de l'utilisateur $usermail sur le tabuledu: <font color=\"red\">ERROR</font></li>\n";
+	}
+      }
+      else {
+	$message .= "<li>Tentative de lien avec l'entité racine($identity) refusée pour $usermail: <font color=\"red\">ERROR</font></li>\n";
+	//$message .= "<li>$query2</li>\n";
+      }
+    }
+    //Sinon c'est que tout est déjà fait !
+  }
+  //Sinon c'est que l'utilisateur n'existe pas encore dans la base
+  else {
+    //Insérer l'utilisateur ... et appel sur la même fonction qui cette fois ci fera le reste :)
+    $query2 = "INSERT INTO glpi_users(name,email,realname,firstname,FK_profiles,FK_entities,auth_method) VALUES(
+'$usermail',
+'$usermail',
+'$userlastname',
+'$userfirstname',
+'0',
+'$identity',
+'1'
+)";
+    $result2 = $DB->query($query2);
+    $send_mail = 1;
+    if($result2) {
+      $message .= "<li>Création du compte utilisateur $usermail : <font color=\"green\">OK</font></li>\n";
+      add_user_and_update_link($usermail,$identity,$userlastname,$userrfirstname,$tag);
+    }
+    else {
+      $message .= "<li>Création du compte utilisateur $usermail : <font color=\"red\">ERROR</font></li>\n";
+    }
+  }
+}
+
+//Vite une session
+session_start();
+if(trim($_GET['reset']) != "") {
+  // Finalement, on détruit la session.
+  session_destroy();
+  header('Location: http://abuledu.net/epack/register/');
+ }
+//print_r($_SESSION);
+//recupration des variables de l'url
+$g_http_request = $_SERVER['REQUEST_URI'];
+
+if($_SESSION['epack_session'] > 1) {
+  $pass    = strtoupper($_SESSION['epack_pass']);
+  $code    = strtoupper($_SESSION['epack_code']);
+  if(isset($_POST['login_email'])) {
+    $login_email = $_POST['login_email'];
+    $login_pass  = $_POST['login_pass'];
+  }
+  if(isset($_SESSION['login_email'])) {
+    $login_email = $_SESSION['login_email'];
+    $login_pass  = $_SESSION['login_pass'];
+  }
+}
+else {
+  $debug .= "Pas de session\n";
+  //Si on est sur un formulaire POST (on casse la limite de la taille de la requete GET)
+  if(isset($_POST["pass"])) {
+    $debug .= "Passage en POST\n";
+
+    $pass = $_POST["pass"];
+    $code = strtoupper($_POST["code"]);
+    $datapost = array();
+
+    $debug .= "<p>Req::" . $_SERVER['REQUEST_URI'] . "</p>\n";
+
+    foreach($_POST as $key=>$value) {
+      $datapost[$key]=$value;
+      $debug .= "<p>" . $key . " -> " . $value . "</p>\n";
+    }
+  }
+  else {
+    ereg(".*pass=(.*).code=(.*).data=(.*)",$_SERVER['REQUEST_URI'],$regs);
+    $pass = addslashes($regs[1]);
+    $code = strtoupper(addslashes($regs[2]));
+    $keyvalue_list=explode("&",base64_decode($regs[3]));
+    $datapost = array();
+
+    $debug .= "<p>Req::" . $_SERVER['REQUEST_URI'] . "</p>\n";
+    foreach($keyvalue_list as $key=>$value) {
+      // Explode each individual key/value into an array
+      $keyvalue=explode("=",$value);
+      // Make sure we have a "key=value" array
+      if(count($keyvalue)==2) {
+	$datapost[$keyvalue[0]]=$keyvalue[1];
+	$debug .= "<p>" . $keyvalue[0] . " -> " . $keyvalue[1] . "</p>\n";
+      }
+      else {
+	$debug .= "<p>XXX:" . $value . "</p>\n";
+      }
+    }
+  }
+
+  //Ou du POST
+  if(trim($pass) == "" || trim($code) == "") {
+    $pass = addslashes($_POST['pass']);
+    $code = addslashes(strtoupper($_POST['code']));
+  }
+}
+
+$_SERVER['REQUEST_URI'] = "";
+$_SERVER['HTTP_REFERER'] = "";
+
+define('GLPI_ROOT', '..');
+include (GLPI_ROOT . "/inc/includes.php");
+
+include ("ryxeo.php");
+include('Mail.php');
+include('Mail/mime.php');
+
+//Si epack ryxeo de tests
+if(stripos($code, "RYXEO-TESTS-")) {
+  if(is_array($datapost)) {
+    $k = array_keys($datapost);
+    for($i = 0; $i < count($k); $i++) {
+      $key = $k[$i];
+      $debug .= $key . "=" . $datapost[$key] . "\n";
+    }
+  }
+ }
+if(isset($datapost["MINIWEBADMIN"]) && stripos($code, "-TESTS-")) {
+  $message .= "<p><h2>Vous pouvez maintenant passer à l'étape suivante: <a href=\"/maj/\">la 1ere mise à jour de votre tabuledu.</a></h2></p>\n";
+  //le flag qui indique a miniwebadmin que le epack est enregistre
+  $commande .= "\n touch /tmp/epack.ok \n";
+ }
+
+/*
+if(trim($debug) != "" ) {
+  $message .= "<pre>
+$debug
+</pre>";
+ }
+*/
+
+$debug .= "<p>Du cote abuledu.net ... $g_http_request</p>\n7";
+
+
+//On ne fait pas tout le bazaaar, on teste / valide la procedure uniquement
+if(stripos($code, "-TESTS-")) {
+  make_pdf($pass,$code,$datapost);
+  send_mail_installation($pass,$code,$datapost);
+ }
+//print_r($_SERVER);
+//On ne fait pas tout le bazaaar, on teste / valide la procedure uniquement
+if(stripos($code, "-TESTS-")) {
+  $object = array();
+  $object['message'] = "<h1>Enregistrement de votre tabuledu avec un ePack</h1>\n";
+  $object['message'] .= $message;
+  $object['command'] = $commande;
+  
+  print serialize($object);
+  return;
+}
+
+//print "<pre>";
+//print_r($datapost);
+//$message .= implode("::",$datapost);
+//print "</pre>";
+//reset ...
+//print_r($_SESSION);
+//unset($_SESSION['epack_session']);
+if(trim($pass) != "" && trim($code) != "") {
+  $query = "SELECT * FROM glpi_plugin_anet_epacks
+LEFT JOIN glpi_entities AS g ON FK_client=g.ID
+WHERE code='$code' AND password='$pass'";
+  $result = $DB->query($query);
+  $debug .= "$query";
+  $mac0 = trim(strtolower($datapost['MAC0']));
+  $mac1 = trim(strtolower($datapost['MAC1']));
+  //$data=$DB->fetch_assoc($result);
+  //$nbresultat = $DB->numrows($result);
+  //print_r($data);
+  //exit;
+  if($DB->numrows($result)>0) {
+    $data=$DB->fetch_assoc($result);
+
+    $debug .= "Eric ... " . $mac0  . ": $code : $mac1";
+    if( ! verification_data() ) {
+      $message .= "<p><font color=\"red\">Erreur, il manque des informations ou certaines informations ne sont pas correctes sur la <a href=\"/installation/\">fiche d'identité du tabuledu</a>. Merci de les corriger tout de suite et de repasser ensuite sur cette page !!!</font></p>\n";
+    }
+    //pack deja attribué à un tabuledu ?
+    else if($data['FK_tabuledu'] > 0) {
+      //      make_conffiles($datapost['MAC0'],$pass,$code);
+      if( strlen($mac0) == 12 && strlen($mac1) == 12) {
+	//Petite vérification, si c'est le même tabuledu qu'on a réinstallé x fois on laisse faire
+	$query2 = "SELECT * FROM glpi_computers WHERE os_license_number LIKE '" . $mac0 . "%' OR os_license_number LIKE '" . $mac1 . "%' ";
+	$result2 = $DB->query($query2);
+	$data2=$DB->fetch_assoc($result2);
+	//Ce pack a été utilisé pour ce tabuledu ... ok
+	if($data2['ID'] == $data['FK_tabuledu']) {
+	  $nbu = $data['nbused'];
+	  make_conffiles($datapost['MAC0'],$pass,$code);
+
+	  $message .= "<p>Ce pack a déjà été utilisé $nbu fois pour ce tabuledu. Si vous avez des difficultés pour utiliser ou configurer AbulÉdu, prennez contact avec la communauté des utilisateurs <a href=\"http://forum.abuledu.org\">sur les forums</a> ou par courriel avec la <a href=\"mailto:contact@ryxeo.com\">société RyXéo</a>, éditrice d'AbulÉdu.</p>\n";
+	  $message .= "<h4>Rappel des informations concernant ce tabuledu: </h4>";
+	  $message .= "<ul>
+  <li>Nom: " . $data2['name'] . "</li>
+  <li>Commentaires: " . $data2['comments'] . "</li>
+</ul>\n";
+	  $message .= "<p>Merci d'avoir enregistré ce tabuledu. Pour toute demande de modification, veuillez utiliser votre compte abuledu.net ou prendre <a href=\"mailto:contact@ryxeo.com\">contact avec RyXéo</a></p>";
+
+	  if(isset($datapost["MINIWEBADMIN"])) {
+	    $message .= "<p>Vous pouvez maintenant passer à l'étape suivante: <a href=\"/maj/\">la 1ere mise à jour de votre tabuledu.</a></p>\n";
+	    //le flag qui indique a miniwebadmin que le epack est enregistre
+	    $commande .= "\n touch /tmp/epack.ok \n";
+	  }
+	  //On incremente le compteur qui permettra de detecter les tabuledu tres souvent reinstalles
+	  $nbu = $data['nbused'] + 1;
+	  $query3 = "UPDATE glpi_plugin_anet_epacks SET nbused='$nbu' WHERE code='$code' AND password='$pass'";
+	  $result3 = $DB->query($query3);
+
+	  //On update les liens etc. (si on a change les comptes utilisateurs par ex.)
+	  //TODO
+	  $query1 = "SELECT * FROM glpi_entities WHERE name='" . addslashes($datapost['INAME']) . "' AND parentID='" . $data['FK_client'] . "'";
+	  $result1 = $DB->query($query1);
+	  if($DB->numrows($result1) > 0) {
+	    //L'entité existe déjà ...
+	    $data1 = $DB->fetch_assoc($result1);
+	    $identityenduser = $data1['ID'];
+	  }
+	  else {
+	    $debug .= "<p>Erreur : $query1</p>";
+	  }
+	  $debug .= "<li>Entity: $query1</li>\n";
+	  add_user_and_update_link($datapost['IEMAIL'], $identityenduser,$datapost['INAME'],$datapost['ICITY'],"Installation");
+	  add_user_and_update_link($datapost['ADM_EMAIL'], $identityenduser,$datapost['ADM_LASTNAME'],$datapost['ADM_FIRSTNAME'],"Directrice ou directeur");
+	  add_user_and_update_link($datapost['PR_EMAIL'], $identityenduser,$datapost['PR_LASTNAME'],$datapost['PR_FIRSTNAME'],"Autre contact");
+	  add_user_and_update_link($datapost['ATICE_EMAIL'], $identityenduser,$datapost['ATICE_LASTNAME'],$datapost['ATICE_FIRSTNAME'],"Animateur TICE");
+	  
+	  make_conffiles($datapost['MAC0'],$pass,$code);
+
+
+	}
+	//Sinon, c'est louche, on informe ryxeo et on avertis l'utilisateur
+	else {
+	  $message .= "<p>Attention, Ce pack a déjà été attribué à un tabuledu !</p>\n";
+	  $message .= "<p>Les packs sont à usage unique, merci d'acheter un nouveau pack pour ce tabuledu ou <a href=\"mailto:contact@ryxeo.com\">contactez-nous</a> si vous pensez qu'il s'agit d'une erreur.</p>\n";
+
+	  $mail_content = "
+Bonjour,
+le pack $pass :: $code vient d'être utilisé pour enregistrer un tabuledu alors que ce pack a déjà
+été utilisé. Merci de vérifier s'il ne s'agit pas d'une tentative de réinstallation multiple ...
+
+Informations brutes récoltées:
+
+";
+	  foreach ($datapost as $key => $value) {
+	    $mail_content .= "$key -> $value\n";
+	  }
+	  
+	  $mail_content .= "
+
+--
+abuledu.net est un service de RyXéo SARL, société éditrice d'AbulÉdu
+
+";
+	  ryxeo_mail("anet@ryxeo.com",$mail_content,"contact@ryxeo.com","Pack déjà activé plusieurs fois !");
+	}
+      }
+    }
+    //pack deja utilise ? si oui c'est qu'il a bien été activé
+    else if($data['FK_activation'] > 0) {
+      $notes = "Données collectées lors de l'enregistrement du tabuledu le " . date("Y-m-d") . "\n\n";
+      foreach ($datapost as $key => $value) {
+	$notes .= "$key = $value\n";
+      }
+      //On créé l'entité de l'école dans l'entité du client qui est elle même dans l'entité du revendeur
+      $query1 = "SELECT * FROM glpi_entities WHERE name='" . addslashes($datapost['INAME']) . "' AND parentID='" . $data['FK_client'] . "'";
+      $result1 = $DB->query($query1);
+      if($DB->numrows($result1) > 0) {
+	//L'entité existe déjà ...
+	$data1 = $DB->fetch_assoc($result1);
+	$identityenduser = $data1['ID'];
+      }
+      else {
+	//L'entité n'existe pas, on l'ajoute
+	$query1 = "INSERT INTO glpi_entities VALUES('','" . addslashes($datapost['INAME']) . "'," . $data['FK_client'] . ",'" . $data['completename'] . " > " . addslashes($datapost['INAME']) . "','',5)";
+	$result1 = $DB->query($query1);
+	$send_mail = 1;
+      }
+      $query1 = "SELECT * from glpi_entities WHERE name='" . addslashes($datapost['INAME']) . "' AND parentID='" . $data['FK_client'] . "';";
+      $result1 = $DB->query($query1);
+      $data1 = $DB->fetch_assoc($result1);
+      //Creation ok
+      $identityenduser = $data1['ID'];
+      if($DB->numrows($result1) > 0) {
+	$query1 = "INSERT INTO glpi_entities_data VALUES('',$identityenduser,'" .
+	  addslashes($datapost['IADDRESS0'] . " " . $datapost['IADDRESS1'] ) . "','" .
+	  addslashes($datapost['IPOSTALCODE']) . "','" .
+	  addslashes($datapost['ICITY']) . "','" .
+	  "','" .
+	  addslashes($datapost['ICOUNTRY']) . "','" .
+	  "','" .
+	  addslashes($datapost['ITEL']) . "','" .
+	  "','" .
+	  addslashes($datapost['IEMAIL']) . "','" .
+	  "','" .
+	  "','" .
+	  "');";
+	$result1 = $DB->query($query1);
+	//print $query1;
+	//print_r($data1);
+	$message .= "<ul>\n";
+	if($result1)
+	  $message .= "<li>Création de l'école: <font color=\"green\">OK</font></li>\n";
+	else {
+	  $message .= "<li>Création de l'école: <font color=\"red\">ERROR</font></li>\n";
+	}
+
+      }
+    
+      //Il faut inserer le tabuledu dans le compte du client final et faire le toutim
+      $query2 = "INSERT INTO glpi_computers(FK_entities,name,date_mod,os_license_number,comments,notes,state)
+VALUES(
+'" . $identityenduser . "',
+'" . addslashes($datapost['INAME']) . "',
+NOW(),
+'" . $mac0 . ".dip.abuledu.net',
+'" . addslashes($datapost['ICOMMENT']) . "',
+'" . addslashes($notes) . "',
+'1'
+)";
+      $result2 = $DB->query($query2);
+      $send_mail = 1;
+
+      $query2 = "SELECT * from glpi_computers WHERE name='" . addslashes($datapost['INAME']) . "' AND os_license_number='" . $mac0 . ".dip.abuledu.net';";
+      //      print "select $query2";
+      $result2 = $DB->query($query2);
+      $data2 = $DB->fetch_assoc($result2);
+      //      print_r($data2);
+      //Creation ok
+      $idserver = $data2['ID'];
+      if($DB->numrows($result2) > 0) {
+	$message .= "<li>Ajout du tabuledu sur AbulÉdu.net: <font color=\"green\">OK</font></li>\n";
+
+	//On attribue le pack au tabuledu
+	$nbu = $data['nbused'] + 1;
+	$query3 = "UPDATE glpi_plugin_anet_epacks SET FK_serveur='" . $idserver  . "', FK_enduser='" . $identityenduser . "', nbused='$nbu' WHERE code='$code' AND password='$pass'";
+	$result3 = $DB->query($query3);
+	
+	
+	$query3 = "INSERT INTO glpi_computer_device(specificity,device_type,FK_device,FK_computers)
+VALUES('" . $datapost['CPU'] . "','2','2','$idserver'),
+('" . $datapost['RAM'] . "','3','2','$idserver'),
+('" . $datapost['HDD0'] . "','4','4','$idserver'),";
+	if(trim($datapost['HDD1']))
+	  $query3 .= "('" . $datapost['HDD1'] . "','4','4','$idserver'),";
+	$query3 .= "('" . $datapost['MAC0'] . "','5','2','$idserver'),
+('" . $datapost['MAC1'] . "','5','2','$idserver');";
+	$result3 = $DB->query($query3);
+	$send_mail = 1;
+	if($result3)
+	  $message .= "<li>Ajout des pièces détachées du tabuledu: <font color=\"green\">OK</font></li>\n";
+	else
+	  $message .= "<li>Ajout des pièces détachées du tabuledu: <font color=\"red\">ERROR</font></li>\n";
+	//Insertion des pièces détachées ok
+
+	//Ajout des contacts liés à ce tabuledu ?
+	add_user_and_update_link($datapost['IEMAIL'], $identityenduser,$datapost['INAME'],$datapost['ICITY'],"Installation");
+	add_user_and_update_link($datapost['ADM_EMAIL'], $identityenduser,$datapost['ADM_LASTNAME'],$datapost['ADM_FIRSTNAME'],"Directrice ou directeur");
+	add_user_and_update_link($datapost['PR_EMAIL'], $identityenduser,$datapost['PR_LASTNAME'],$datapost['PR_FIRSTNAME'],"Autre contact");
+	add_user_and_update_link($datapost['ATICE_EMAIL'], $identityenduser,$datapost['ATICE_LASTNAME'],$datapost['ATICE_FIRSTNAME'],"Animateur TICE");
+
+	//Création des fichiers de conf pour se rattacher a la maintenance (?) ... mais si pas de maintenance ?
+	//On gerera ça sur les paiements des contrats associés
+	make_conffiles($datapost['MAC0'],$pass,$code);
+
+	//Mail d'information a ryxeo + pdf au rvendeur
+	make_pdf($pass,$code,$datapost);
+	send_mail_installation($pass,$code,$datapost);
+	 
+	if(isset($datapost["MINIWEBADMIN"])) {
+	  $message .= "</ul>\n<p>Vous pouvez maintenant passer à l'étape suivante: <a href=\"/maj/\">la 1ere mise à jour de votre tabuledu.</a></p>\n";
+	  //le flag qui indique a miniwebadmin que le epack est enregistre
+	  $commande .= "\n touch /tmp/epack.ok \n";
+	}
+	else {
+	  $message .= "<li><font color=\"green\">Bravo</font> votre tabuledu est maintenant bien enregistré sur abuledu.net. Vous pouvez passer à l'étape de création automatique du <a href=\"recette.php\">cahier de recettes</a></li>\n";
+	  $message .= "</ul>\n";
+	}
+      }
+      else
+	$message .= "<li>Ajout du tabuledu sur anet: <font color=\"red\">ERROR</font></li>\n";
+    }
+    else if ($data['activation_date'] == "0000-00-00") {
+      $message .= "<p><font color=\"red\">Erreur, ce packs n'a pas été activé !!! Vous devez activer votre ePack tout de suite à l'adresse suivante, <a href=\"http://www.abuledu.net/epack/new\" target=\"_blank\">abuledu.net/epack/new</a> comme indiqué sur la fiche ePack.</font></p>\n";
+    }
+    else {
+      $message .= "<p><font color=\"red\">Erreur, ce pack a déjà été utilisé ou n'a pas encore été activé !!!</font></p>\n";
+    }
+  }
+  else {
+    $message .= "<p><font color=\"red\">Erreur de code ou de mot de passe epack !!!</font></p>\n";
+  }
+ }
+ else {
+   $message .= "<p><font color=\"red\">Erreur: code ou mot de passe epack invalide.</font></p>\n";
+ }
+
+$object = array();
+if(trim($message) == "")
+  $message .= "<p><font color=\"red\">Erreur non prévue, merci de contacter RyXéo sans tarder...</font></p>";
+$object['message'] = "<h1>Enregistrement de votre tabuledu avec un ePack</h1>\n";
+$object['message'] .= $message;
+$object['command'] = $commande;
+
+//On touche le fichier pour forcer un update de gnudip et des accreditations ... uniquement si epack valide
+if($send_mail) {
+  @touch("/tmp/update-anet");
+  @chmod("/tmp/update-anet",0666);
+}
+print json_encode($object);
+
+if($log_debug != "") {
+  if($fp = fopen($log_file,"w")) {
+    fwrite($fp, $debug);
+    fclose($fp);
+  }
+}
+
+//print_r($_SERVER);
+?>
diff --git a/htdocs/epack/register.php b/htdocs/epack/register.php
index df5439f..c40307b 100644
--- a/htdocs/epack/register.php
+++ b/htdocs/epack/register.php
@@ -3,6 +3,7 @@
 
 $commande = "";
 $message = "";
+$debug = "";
 $send_mail = 0; //flag pour savoir s'il faut envoyer un mail (en bref a toute insertion ou update de base)
 
 function make_pdf($pass,$code,$datapost) {
@@ -294,13 +295,13 @@ function add_user_and_update_link($usermail,$identity,$userlastname,$userfirstna
 
   $query = "SELECT * from glpi_users WHERE email='$usermail'";
   $result = $DB->query($query);
-  //$message .= "<p>nb ; " . $DB->numrows($result) . " req : $query</p>";
+  $debug .= "<p>nb ; " . $DB->numrows($result) . " req : $query</p>";
   if($DB->numrows($result)>0) {
     $data = $DB->fetch_assoc($result);
     $iduser = $data['ID'];
     //existe dejà on fait juste le lien s'il n'existe pas déjà
     $query2 = "SELECT * FROM glpi_users_profiles WHERE FK_users='$iduser' AND FK_entities='$identity'";
-    //$message .= "$query2";
+    //$debug .= "$query2";
     $result2 = $DB->query($query2);
     if($DB->numrows($result2)<=0) {
       //pour eviter qu'un utilisateur se retrouve dans l'entite racine ...
@@ -355,7 +356,7 @@ if(trim($_GET['reset']) != "") {
 //print_r($_SESSION);
 //recupration des variables de l'url
 $g_http_request = $_SERVER['REQUEST_URI'];
-//$message .= "<p>Du cote abuledu.net ...</p>";
+
 if($_SESSION['epack_session'] > 1) {
   $pass    = strtoupper($_SESSION['epack_pass']);
   $code    = strtoupper($_SESSION['epack_code']);
@@ -369,16 +370,20 @@ if($_SESSION['epack_session'] > 1) {
   }
 }
 else {
+  $debug .= "Pas de session\n";
   //Si on est sur un formulaire POST (on casse la limite de la taille de la requete GET)
   if(isset($_POST["pass"])) {
-    //$message .= "Passage en POST";
+    $debug .= "Passage en POST\n";
+
     $pass = $_POST["pass"];
     $code = strtoupper($_POST["code"]);
     $datapost = array();
-    //$message .= "<p>Req::" . $_SERVER['REQUEST_URI'] . "</p>";
+
+    $debug .= "<p>Req::" . $_SERVER['REQUEST_URI'] . "</p>\n";
+
     foreach($_POST as $key=>$value) {
       $datapost[$key]=$value;
-      //$message .= "<p>" . $key . " -> " . $value . "</p>";
+      $debug .= "<p>" . $key . " -> " . $value . "</p>\n";
     }
   }
   else {
@@ -387,17 +392,18 @@ else {
     $code = strtoupper(addslashes($regs[2]));
     $keyvalue_list=explode("&",base64_decode($regs[3]));
     $datapost = array();
-    //$message .= "<p>Req::" . $_SERVER['REQUEST_URI'] . "</p>";
+
+    $debug .= "<p>Req::" . $_SERVER['REQUEST_URI'] . "</p>\n";
     foreach($keyvalue_list as $key=>$value) {
       // Explode each individual key/value into an array
       $keyvalue=explode("=",$value);
       // Make sure we have a "key=value" array
       if(count($keyvalue)==2) {
 	$datapost[$keyvalue[0]]=$keyvalue[1];
-	//$message .= "<p>" . $keyvalue[0] . " -> " . $keyvalue[1] . "</p>";
+	$debug .= "<p>" . $keyvalue[0] . " -> " . $keyvalue[1] . "</p>\n";
       }
       else {
-	//$message .= "<p>XXX:" . $value . "</p>";
+	$debug .= "<p>XXX:" . $value . "</p>\n";
       }
     }
   }
@@ -408,8 +414,10 @@ else {
     $code = addslashes(strtoupper($_POST['code']));
   }
 }
+
 $_SERVER['REQUEST_URI'] = "";
 $_SERVER['HTTP_REFERER'] = "";
+
 define('GLPI_ROOT', '..');
 include (GLPI_ROOT . "/inc/includes.php");
 
@@ -433,11 +441,15 @@ if(isset($datapost["MINIWEBADMIN"]) && stripos($code, "-TESTS-")) {
   $commande .= "\n touch /tmp/epack.ok \n";
  }
 
-if(trim($debug) != "" ) {
+/*
+  if(trim($debug) != "" ) {
   $message .= "<pre>
-$debug
-</pre>";
- }
+  $debug
+  </pre>";
+  }
+*/
+
+$debug .= "<p>Du cote abuledu.net ... $g_http_request</p>\n7";
 
 //On ne fait pas tout le bazaaar, on teste / valide la procedure uniquement
 if(stripos($code, "-TESTS-")) {
@@ -468,12 +480,13 @@ if(trim($pass) != "" && trim($code) != "") {
 LEFT JOIN glpi_entities AS g ON FK_client=g.ID
 WHERE code='$code' AND password='$pass'";
   $result = $DB->query($query);
+  //$message = "$query";
   $mac0 = trim(strtolower($datapost['MAC0']));
   $mac1 = trim(strtolower($datapost['MAC1']));
   //$data=$DB->fetch_assoc($result);
   //$nbresultat = $DB->numrows($result);
-  //  print_r($data);
-  //  exit;
+  //print_r($data);
+  //exit;
   if($DB->numrows($result)>0) {
     $data=$DB->fetch_assoc($result);
 
diff --git a/htdocs/mac/contract.php b/htdocs/mac/contract.php
index d636ee8..18f7a6b 100644
--- a/htdocs/mac/contract.php
+++ b/htdocs/mac/contract.php
@@ -1,15 +1,22 @@
 <?php
 /*
   gestion des contrats - affichage et rappel
+  http://www.abuledu.net/mac/contract.php/view=toto/mac=08:D8:34:B8:90:CD
 */
 
 $g_http_request = $_SERVER['REQUEST_URI'];
-ereg(".*mac=(.*)",$_SERVER['REQUEST_URI'],$regs);
-$mac = addslashes(strtoupper($regs[1]));
+preg_match("/.*mac=(.*)/",$_SERVER['REQUEST_URI'],$regs);
+$mac  = addslashes(strtoupper($regs[1]));
+
+preg_match("/.*view=(.*)\/mac=/",$_SERVER['REQUEST_URI'],$regs);
+$view = addslashes($regs[1]);
+
+//print "on a $mac et $view";
+
 //Ou du POST
 if(trim($mac) == "") {
   $mac = addslashes(strtoupper($_POST['mac']));
- }
+}
 
 $_SERVER['REQUEST_URI'] = "";
 $_SERVER['HTTP_REFERER'] = "";
@@ -17,22 +24,28 @@ define('GLPI_ROOT', '..');
 include (GLPI_ROOT . "/inc/includes.php");
 
 //On recupere l'id du serveur dont la macaddr correspond
-$query = "SELECT ID FROM glpi_computers WHERE glpi_computers.os_license_number LIKE '" . $mac . ".%'";
+$query = "SELECT FK_computers AS ID FROM glpi_computer_device WHERE specificity ='" . $mac . "'";
 $result = $DB->query($query);
 $data = $DB->fetch_assoc($result);
 //print_r($data);
 
 if($data['ID']) {
   $serverid=$data['ID'];
+  
+  //Quand on a le serverID il faut trouver l'entite dans laquelle il se trouve
+  $queryEntity = "SELECT FK_entities AS EntityID FROM glpi_computers WHERE ID='$serverid'";
+  $resultEntity = $DB->query($queryEntity);
+  $dataEntity = $DB->fetch_assoc($resultEntity);
+  $entityID = $dataEntity['EntityID'];
+  
   //Et ensuite on cherche dans les contrats ce qui correspond
   // -> contrat non supprime
   // -> contrat correspondant a ce serveur
   // -> contrat de type 1 ()
-  $query2 = "SELECT UNIX_TIMESTAMP(c.begin_date + INTERVAL c.duration MONTH) as endcontract,c.* FROM glpi_contract_device, glpi_contracts as c WHERE 
+  $query2 = "SELECT UNIX_TIMESTAMP(c.begin_date + INTERVAL c.duration MONTH) as endcontract,c.* FROM glpi_contracts as c WHERE 
   c.deleted='0' AND
-  glpi_contract_device.FK_device = '" . $serverid . "' AND
-  glpi_contract_device.device_type = '1' AND
-  c.ID=glpi_contract_device.FK_contract";
+  c.FK_entities='$entityID'";
+
   //print $query2;
   $result2 = $DB->query($query2);
   $data2 = $DB->fetch_assoc($result2);
@@ -41,11 +54,23 @@ if($data['ID']) {
   //print mktime() . " -- ";
   $endc = $data2['endcontract'];
   if($endc > mktime()) {
-    print $endc . ":" . "DIRECT:" . $data2['name'] . ":";
+    if($view == "web") {
+      header('Location: http://www.abuledu.net/mac/view/direct.php');
+      exit;
+    }
+    else {
+      print $endc . ":" . "DIRECT:" . $data2['name'] . ":";
+    }
   }
   //Reconduction automatique ...
   else if($endc < mktime() && $data2['recursive']=='1') {
-    print mktime(0,0,0, date("m",$endc)+$data2['periodicity'], date("d",$endc), date("Y",$endc)) . ":" . "DIRECT:" . $data2['name'] . ":" . "Renouvellement automatique";
+    if($view == "web") {
+      header('Location: http://www.abuledu.net/mac/view/direct.php');
+      exit;
+    }
+    else {
+      print mktime(0,0,0, date("m",$endc)+$data2['periodicity'], date("d",$endc), date("Y",$endc)) . ":" . "DIRECT:" . $data2['name'] . ":" . "Renouvellement automatique";
+    }
   }
   else {
     //Le serveur a ete installe par un partenaire qui a un contrat global mais pas encore d'avenant pour ce serveur
@@ -61,16 +86,34 @@ if($data['ID']) {
     */
     $endc = $data3['endcontract'];
     if($endc > mktime()) {
-      print $endc . ":PARTNER" . ":" . $data3['name'] . ":" . "Avenant pour ce serveur manquant";
+      if($view == "web") {
+	header('Location: http://www.abuledu.net/mac/view/partner.php');
+	exit;
+      }
+      else {
+	print $endc . ":PARTNER" . ":" . $data3['name'] . ":" . "Avenant pour ce serveur manquant";
+      }
     }
     else{
       //Le serveur existe dans notre base mais c'est tout
-      print "000:WAITING:000:";
+      if($view == "web") {
+	header('Location: http://www.abuledu.net/mac/view/waiting.php');
+	exit;
+      }
+      else {
+	print "000:WAITING:000:";
+      }
     }
   }
  }
  else {
-   print "000:FORBIDDEN:000:NOT";
+   if($view == "web") {
+     header('Location: http://www.abuledu.net/mac/view/forbidden.php');
+     exit;
+   }
+   else {
+     print "000:FORBIDDEN:000:NOT";
+   }
  }
 
 ?>
diff --git a/scripts/net2dip.sendtohurlevent.php b/scripts/net2dip.sendtohurlevent.php
index 16e975b..a47028f 100755
--- a/scripts/net2dip.sendtohurlevent.php
+++ b/scripts/net2dip.sendtohurlevent.php
@@ -119,6 +119,10 @@ WHERE os_license_number!='' AND e.creation_date>'2009-07-06'";
 //attention on a des serveurs pour lesquels on n'a pas de contrat encore ...
 $query2 .= " AND e.FK_contract>'-1'";
 
+//print $query2;
+//print "\n";
+//exit;
+
 if ( DB::isError($result2 = $dbglpi->query($query2)) ) {
   die ("***\n$query2\n" . DB::errorMessage($result2) . "\n***\n\n");
  }
