commit 7c12ea403c3a4aa07ac38f88c58ef76e0ed6889e
Author: root <root@anet>
Date:   Wed Jan 27 18:58:31 2016 +0100

    anet fonctionnel au 27.01.2016

diff --git a/htdocs/epack/register-tabuledu.php b/htdocs/epack/register-tabuledu.php
index 3a7d7cb..f3a14af 100644
--- a/htdocs/epack/register-tabuledu.php
+++ b/htdocs/epack/register-tabuledu.php
@@ -8,6 +8,26 @@ $log_debug = 1; //flag pour savoir s'il faut ecrire les debug logs dans le fichi
 $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 get_ip() {
+  //Just get the headers if we can or else use the SERVER global
+  if ( function_exists( 'apache_request_headers' ) ) {
+    $headers = apache_request_headers();
+  } else {
+    $headers = $_SERVER;
+  }
+  
+  //Get the forwarded IP if it exists
+  if ( array_key_exists( 'X-Forwarded-For', $headers ) && filter_var( $headers['X-Forwarded-For'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 ) ) {
+    $the_ip = $headers['X-Forwarded-For'];
+  } elseif ( array_key_exists( 'HTTP_X_FORWARDED_FOR', $headers ) && filter_var( $headers['HTTP_X_FORWARDED_FOR'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 )
+	     ) {
+    $the_ip = $headers['HTTP_X_FORWARDED_FOR'];
+  } else {
+    $the_ip = filter_var( $_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 );
+  }
+  return $the_ip;
+}
+
 function make_pdf($pass,$code,$datapost) {
   global $message;
   global $login_email;
@@ -111,9 +131,27 @@ Tel: 05 35 54 01 18";
 }
 
 function send_mail_installation($pass,$code,$datapost) {
-  $mail_content = "
+  global $DB;
+
+  $ip = get_ip();
+  $install_societe = "";
+  $client_final = "";
+
+  $query1 = "SELECT * FROM glpi_plugin_anet_epacks LEFT JOIN glpi_entities AS g ON FK_clientderyxeo=g.ID WHERE code='$code' AND password='$pass'";
+  $result = $DB->query($query1);
+  if($DB->numrows($result)>0) {
+    $data=$DB->fetch_assoc($result);
+    $install_societe = $data['name'];
+  }
 
-Bonjour,
+  $query2 = "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($query2);
+  if($DB->numrows($result)>0) {
+    $data=$DB->fetch_assoc($result);
+    $client_final = $data['name'];
+  }
+
+  $mail_content = "Bonjour,
 
 une nouvelle tabuledu vient d'être installée
 
@@ -121,67 +159,25 @@ 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"] . "
+ - Société: $install_societe
+
+Client final:
+ - $client_final
+
+Adresse IP utilisée lors de l'installation: $ip
 
 --
 abuledu.net est un service de RyXéo SARL, société éditrice d'AbulÉdu
+script register-tabuledu.php sur www.abuledu.net
 
 ";
 
   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);
+    ryxeo_mail("anet@ryxeo.com",$mail_content,"contact@ryxeo.com","[epack de test] Nouvelle tabuledu dans la base abuledu.net - " . $code);
   }
   else {
-    ryxeo_mail("anet@ryxeo.com",$mail_content,"contact@ryxeo.com","Nouveau tabuledu dans la base abuledu.net");
+    ryxeo_mail("anet@ryxeo.com",$mail_content,"contact@ryxeo.com","Nouvelle tabuledu dans la base abuledu.net - $client_final ($install_societe)" );
   }
 }
 
@@ -345,7 +341,7 @@ function add_user_and_update_link($usermail,$identity,$userlastname,$userfirstna
 
 //Vite une session
 session_start();
-if(trim($_GET['reset']) != "") {
+if(isset($_GET['reset']) && trim($_GET['reset']) != "") {
   // Finalement, on détruit la session.
   session_destroy();
   header('Location: http://abuledu.net/epack/register/');
@@ -354,7 +350,7 @@ if(trim($_GET['reset']) != "") {
 //recupration des variables de l'url
 $g_http_request = $_SERVER['REQUEST_URI'];
 
-if($_SESSION['epack_session'] > 1) {
+if(isset($_SESSION['epack_session']) && $_SESSION['epack_session'] > 1) {
   $pass    = strtoupper($_SESSION['epack_pass']);
   $code    = strtoupper($_SESSION['epack_code']);
   if(isset($_POST['login_email'])) {
@@ -384,25 +380,41 @@ else {
     }
   }
   else {
-    ereg(".*pass=(.*).code=(.*).data=(.*)",$_SERVER['REQUEST_URI'],$regs);
+    ereg(".*pass=(.*).code=(.*)",$_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";
+    //si code=rvd11-01-5799-acip-282/data=none
+    
+    $tabcode = explode("/",$regs[2]);
+    if(is_array($tabcode)) {
+      //print_r($tabcode);
+      $code = $tabcode[0];
+    }
+    else {
+      $code = strtoupper(addslashes($regs[2]));
+    }
+    
+    if(count($regs) > 3) {    
+      $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";
+	}
       }
     }
+    else {
+      $debug .= "<p>Pas de regs3 ...</p>\n";
+    }
   }
 
   //Ou du POST
@@ -437,7 +449,6 @@ if(isset($datapost["MINIWEBADMIN"]) && stripos($code, "-TESTS-")) {
   //le flag qui indique a miniwebadmin que le epack est enregistre
   $commande .= "\n touch /tmp/epack.ok \n";
  }
-
 /*
 if(trim($debug) != "" ) {
   $message .= "<pre>
@@ -450,19 +461,20 @@ $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);
- }
+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);
+  //$object = array();
+  print "<p>L'enregistrement de votre tabuledu avec un ePack AbulÉdu Serveur partenaire n'est pas possible ... </p>\n";
+  print "<p>Veuillez demander un ePack de tests tabuledu à RyXéo</p>\n";
+  //$object['message'] .= $message;
+  //$object['command'] = $commande;
   return;
 }
 
@@ -488,89 +500,20 @@ WHERE code='$code' AND password='$pass'";
   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
+    if($data['FK_serveur'] > 0) {
+      $query2 = "SELECT * FROM glpi_entities_data WHERE FK_entities='" . $data['FK_client'] . "'";
+      $result2 = $DB->query($query2);
+      $data2=$DB->fetch_assoc($result2);
 
-";
-	  ryxeo_mail("anet@ryxeo.com",$mail_content,"contact@ryxeo.com","Pack déjà activé plusieurs fois !");
-	}
-      }
+      $message .= "<p>Merci, ePack correctement activé.</p>\n";
+      $message .= "<h4>Rappel des informations concernant ce client: </h4>";
+      $message .= "<ul>
+  <li>Nom: " . $data['name'] . "</li>
+  <li>Adresse: " . $data2['address'] . " " . $data2['postcode'] . " " . $data2['town'] . "</li>
+</ul>\n";
+      $message .= "<p>Merci d'avoir enregistré cette 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>";
+      send_mail_installation($pass,$code,$datapost);
+      
     }
     //pack deja utilise ? si oui c'est qu'il a bien été activé
     else if($data['FK_activation'] > 0) {
@@ -587,7 +530,7 @@ abuledu.net est un service de RyXéo SARL, société éditrice d'AbulÉdu
 	$identityenduser = $data1['ID'];
       }
       else {
-	//L'entité n'existe pas, on l'ajoute
+	//L'entité n'existe pas, on l'ajoute : là c'est un peu nul on utilise le code epack a defaut de connaitre le nom de l'école (formulaire léger sur tabuledu)
 	$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;
@@ -645,7 +588,7 @@ NOW(),
       //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";
+	$message .= "<li>Ajout de cette tabuledu sur AbulÉdu.net: <font color=\"green\">OK</font></li>\n";
 
 	//On attribue le pack au tabuledu
 	$nbu = $data['nbused'] + 1;
@@ -680,7 +623,7 @@ VALUES('" . $datapost['CPU'] . "','2','2','$idserver'),
 	make_conffiles($datapost['MAC0'],$pass,$code);
 
 	//Mail d'information a ryxeo + pdf au rvendeur
-	make_pdf($pass,$code,$datapost);
+	//make_pdf($pass,$code,$datapost);
 	send_mail_installation($pass,$code,$datapost);
 	 
 	if(isset($datapost["MINIWEBADMIN"])) {
@@ -697,18 +640,18 @@ VALUES('" . $datapost['CPU'] . "','2','2','$idserver'),
 	$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";
+      $message .= "FORBIDDEN:<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";
+      $message .= "FORBIDDEN:<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";
+    $message .= "FORBIDDEN:<p><font color=\"red\">Erreur de code ($code) ou de mot de passe ($pass) epack !!!</font></p>\n";
   }
  }
  else {
-   $message .= "<p><font color=\"red\">Erreur: code ou mot de passe epack invalide.</font></p>\n";
+   $message .= "FORBIDDEN:<p><font color=\"red\">Erreur: code ou mot de passe epack invalide ($code / $pass).</font></p>\n";
  }
 
 $object = array();
@@ -716,21 +659,49 @@ 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);
+//print json_encode($object);
+print $message;
 
 if($log_debug != "") {
-  if($fp = fopen($log_file,"w")) {
+  if($fp = fopen($log_file,"a")) {
     fwrite($fp, $debug);
+    fwrite($fp, "**********************************");
+    fwrite($fp, $message);
+    fwrite($fp, "**********************************");
     fclose($fp);
   }
 }
 
+$ip = get_ip();
+
+$txtmail = "Bonjour,
+une erreur d'enregistrement ePack ou autre pour TabulEdu vient de se produire
+
+$message
+
+Adresse IP utilisée lors de l'installation: $ip
+
+--
+RyXéo SARL
+contact@ryxeo.com
+Tel: 05 35 54 01 18";
+$crlf = "\n";
+$hdrs = array(
+	      'From'    => 'contact@ryxeo.com',
+              'Subject' => mb_encode_mimeheader("[TAbulEdu] Fiche d'erreur " . $datapost['INAME']),
+	      'BCC'     => 'contact@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');
+  
+$mail->send("contact@ryxeo.com", $hdrs, $body);
+
+
 //print_r($_SERVER);
 ?>
