Projet

Général

Profil

Révision 7c12ea40 htdocs/epack/register-tabuledu.php

Voir les différences:

htdocs/epack/register-tabuledu.php
8 8
$log_file = "/tmp/debug.log";
9 9
$send_mail = 0; //flag pour savoir s'il faut envoyer un mail (en bref a toute insertion ou update de base)
10 10

  
11
function get_ip() {
12
  //Just get the headers if we can or else use the SERVER global
13
  if ( function_exists( 'apache_request_headers' ) ) {
14
    $headers = apache_request_headers();
15
  } else {
16
    $headers = $_SERVER;
17
  }
18
  
19
  //Get the forwarded IP if it exists
20
  if ( array_key_exists( 'X-Forwarded-For', $headers ) && filter_var( $headers['X-Forwarded-For'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 ) ) {
21
    $the_ip = $headers['X-Forwarded-For'];
22
  } elseif ( array_key_exists( 'HTTP_X_FORWARDED_FOR', $headers ) && filter_var( $headers['HTTP_X_FORWARDED_FOR'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 )
23
	     ) {
24
    $the_ip = $headers['HTTP_X_FORWARDED_FOR'];
25
  } else {
26
    $the_ip = filter_var( $_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 );
27
  }
28
  return $the_ip;
29
}
30

  
11 31
function make_pdf($pass,$code,$datapost) {
12 32
  global $message;
13 33
  global $login_email;
......
111 131
}
112 132

  
113 133
function send_mail_installation($pass,$code,$datapost) {
114
  $mail_content = "
134
  global $DB;
135

  
136
  $ip = get_ip();
137
  $install_societe = "";
138
  $client_final = "";
139

  
140
  $query1 = "SELECT * FROM glpi_plugin_anet_epacks LEFT JOIN glpi_entities AS g ON FK_clientderyxeo=g.ID WHERE code='$code' AND password='$pass'";
141
  $result = $DB->query($query1);
142
  if($DB->numrows($result)>0) {
143
    $data=$DB->fetch_assoc($result);
144
    $install_societe = $data['name'];
145
  }
115 146

  
116
Bonjour,
147
  $query2 = "SELECT * FROM glpi_plugin_anet_epacks LEFT JOIN glpi_entities AS g ON FK_client=g.ID WHERE code='$code' AND password='$pass'";
148
  $result = $DB->query($query2);
149
  if($DB->numrows($result)>0) {
150
    $data=$DB->fetch_assoc($result);
151
    $client_final = $data['name'];
152
  }
153

  
154
  $mail_content = "Bonjour,
117 155

  
118 156
une nouvelle tabuledu vient d'être installée
119 157

  
......
121 159
 - $pass
122 160
 - $code
123 161

  
124
Site de l'installation:
125
 - Nom:           " .  addslashes($datapost['INAME']) . "
126
 - Adresse:       " .  addslashes($datapost['IADDRESS0'] . " " . $datapost['IADDRESS1'] ) . "
127
 - Code postal:   " .  addslashes($datapost['IPOSTALCODE']) . "
128
 - Ville:         " .  addslashes($datapost['ICITY']) . "
129
 - Pays:          " .  addslashes($datapost['ICOUNTRY']) . "
130
 - Téléphone:     " .  addslashes($datapost['ITEL']) . "
131
 - Adresse email: " .  addslashes($datapost['IEMAIL']) . "
132

  
133
Tabuledu:
134
 - Marque ou modèle:    " . $datapost['ISRV'] . "
135
 - Numéro de série:     " . $datapost['ISERIAL'] . "
136
 - Processeur:          " . $datapost['CPU'] . "
137
 - Mémoire vive:        " . $datapost['RAM'] . "
138
 - Disque dur 1:        " . $datapost['HDD0'] . "
139
 - Disque dur 2:        " . $datapost['HDD1'] . "
140
 - Carte réseau 1:      " . $datapost['MAC0'] . "
141
 - Carte réseau 2:      " . $datapost['MAC1'] . "
142
 - Date d'installation: " . $datapost['IDATE'] . "
143

  
144
Mots de passe:
145
 - root: " . $datapost['IROOT'] . "
146
 - abuladmin: " . $datapost['IABE'] . "
147

  
148 162
Installateur:
149
 - Société:   " . $datapost['RCODE'] . "
150
 - Adresse:   " . $datapost['RADDRESS'] . "
151
 - Ville:     " . $datapost['RCP'] . " " . $datapost['RVILLE'] . "
152
 - Nom:       " . $datapost['RNAME'] . "
153
 - Téléphone: " . $datapost['RTEL'] . "
154
 - Email:     " . $datapost['REMAIL'] . "
155

  
156
Compte utilisateur:
157
 - Nom:    " . $datapost['ADM_LASTNAME'] . "
158
 - Prénom: " . $datapost['ADM_FIRSTNAME'] . "
159
 - Email:  " . $datapost['ADM_EMAIL'] . "
160

  
161
Compte personne ressource:
162
 - Nom:    " . $datapost['PR_LASTNAME'] . "
163
 - Prénom: " . $datapost['PR_FIRSTNAME'] . "
164
 - Email:  " . $datapost['PR_EMAIL'] . "
165

  
166
Compte ATICE:
167
 - Nom:    " . $datapost['ATICE_LASTNAME'] . "
168
 - Prénom: " . $datapost['ATICE_FIRSTNAME'] . "
169
 - Email:  " . $datapost['ATICE_EMAIL'] . "
170

  
171
Commentaires:
172
" . $datapost["ICOMMENT"] . "
163
 - Société: $install_societe
164

  
165
Client final:
166
 - $client_final
167

  
168
Adresse IP utilisée lors de l'installation: $ip
173 169

  
174 170
--
175 171
abuledu.net est un service de RyXéo SARL, société éditrice d'AbulÉdu
172
script register-tabuledu.php sur www.abuledu.net
176 173

  
177 174
";
178 175

  
179 176
  if(stripos($code, "-TESTS-")) {
180
    ryxeo_mail("anet@ryxeo.com",$mail_content,"contact@ryxeo.com","[epack de test] Nouveau tabuledu dans la base abuledu.net");
181
    //make_conffiles($datapost['MAC0'],$pass,$code);
177
    ryxeo_mail("anet@ryxeo.com",$mail_content,"contact@ryxeo.com","[epack de test] Nouvelle tabuledu dans la base abuledu.net - " . $code);
182 178
  }
183 179
  else {
184
    ryxeo_mail("anet@ryxeo.com",$mail_content,"contact@ryxeo.com","Nouveau tabuledu dans la base abuledu.net");
180
    ryxeo_mail("anet@ryxeo.com",$mail_content,"contact@ryxeo.com","Nouvelle tabuledu dans la base abuledu.net - $client_final ($install_societe)" );
185 181
  }
186 182
}
187 183

  
......
345 341

  
346 342
//Vite une session
347 343
session_start();
348
if(trim($_GET['reset']) != "") {
344
if(isset($_GET['reset']) && trim($_GET['reset']) != "") {
349 345
  // Finalement, on détruit la session.
350 346
  session_destroy();
351 347
  header('Location: http://abuledu.net/epack/register/');
......
354 350
//recupration des variables de l'url
355 351
$g_http_request = $_SERVER['REQUEST_URI'];
356 352

  
357
if($_SESSION['epack_session'] > 1) {
353
if(isset($_SESSION['epack_session']) && $_SESSION['epack_session'] > 1) {
358 354
  $pass    = strtoupper($_SESSION['epack_pass']);
359 355
  $code    = strtoupper($_SESSION['epack_code']);
360 356
  if(isset($_POST['login_email'])) {
......
384 380
    }
385 381
  }
386 382
  else {
387
    ereg(".*pass=(.*).code=(.*).data=(.*)",$_SERVER['REQUEST_URI'],$regs);
383
    ereg(".*pass=(.*).code=(.*)",$_SERVER['REQUEST_URI'],$regs);
388 384
    $pass = addslashes($regs[1]);
389
    $code = strtoupper(addslashes($regs[2]));
390
    $keyvalue_list=explode("&",base64_decode($regs[3]));
391
    $datapost = array();
392 385

  
393
    $debug .= "<p>Req::" . $_SERVER['REQUEST_URI'] . "</p>\n";
394
    foreach($keyvalue_list as $key=>$value) {
395
      // Explode each individual key/value into an array
396
      $keyvalue=explode("=",$value);
397
      // Make sure we have a "key=value" array
398
      if(count($keyvalue)==2) {
399
	$datapost[$keyvalue[0]]=$keyvalue[1];
400
	$debug .= "<p>" . $keyvalue[0] . " -> " . $keyvalue[1] . "</p>\n";
401
      }
402
      else {
403
	$debug .= "<p>XXX:" . $value . "</p>\n";
386
    //si code=rvd11-01-5799-acip-282/data=none
387
    
388
    $tabcode = explode("/",$regs[2]);
389
    if(is_array($tabcode)) {
390
      //print_r($tabcode);
391
      $code = $tabcode[0];
392
    }
393
    else {
394
      $code = strtoupper(addslashes($regs[2]));
395
    }
396
    
397
    if(count($regs) > 3) {    
398
      $keyvalue_list=explode("&",base64_decode($regs[3]));
399
      $datapost = array();
400
      
401
      $debug .= "<p>Req::" . $_SERVER['REQUEST_URI'] . "</p>\n";
402
      foreach($keyvalue_list as $key=>$value) {
403
	// Explode each individual key/value into an array
404
	$keyvalue=explode("=",$value);
405
	// Make sure we have a "key=value" array
406
	if(count($keyvalue)==2) {
407
	  $datapost[$keyvalue[0]]=$keyvalue[1];
408
	  $debug .= "<p>" . $keyvalue[0] . " -> " . $keyvalue[1] . "</p>\n";
409
	}
410
	else {
411
	  $debug .= "<p>XXX:" . $value . "</p>\n";
412
	}
404 413
      }
405 414
    }
415
    else {
416
      $debug .= "<p>Pas de regs3 ...</p>\n";
417
    }
406 418
  }
407 419

  
408 420
  //Ou du POST
......
437 449
  //le flag qui indique a miniwebadmin que le epack est enregistre
438 450
  $commande .= "\n touch /tmp/epack.ok \n";
439 451
 }
440

  
441 452
/*
442 453
if(trim($debug) != "" ) {
443 454
  $message .= "<pre>
......
450 461

  
451 462

  
452 463
//On ne fait pas tout le bazaaar, on teste / valide la procedure uniquement
464
/*
453 465
if(stripos($code, "-TESTS-")) {
454
  make_pdf($pass,$code,$datapost);
455
  send_mail_installation($pass,$code,$datapost);
456
 }
466
make_pdf($pass,$code,$datapost);
467
send_mail_installation($pass,$code,$datapost);
468
}
469
*/
457 470
//print_r($_SERVER);
458 471
//On ne fait pas tout le bazaaar, on teste / valide la procedure uniquement
459 472
if(stripos($code, "-TESTS-")) {
460
  $object = array();
461
  $object['message'] = "<h1>Enregistrement de votre tabuledu avec un ePack</h1>\n";
462
  $object['message'] .= $message;
463
  $object['command'] = $commande;
464
  
465
  print serialize($object);
473
  //$object = array();
474
  print "<p>L'enregistrement de votre tabuledu avec un ePack AbulÉdu Serveur partenaire n'est pas possible ... </p>\n";
475
  print "<p>Veuillez demander un ePack de tests tabuledu à RyXéo</p>\n";
476
  //$object['message'] .= $message;
477
  //$object['command'] = $commande;
466 478
  return;
467 479
}
468 480

  
......
488 500
  if($DB->numrows($result)>0) {
489 501
    $data=$DB->fetch_assoc($result);
490 502

  
491
    $debug .= "Eric ... " . $mac0  . ": $code : $mac1";
492
    if( ! verification_data() ) {
493
      $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";
494
    }
495
    //pack deja attribué à un tabuledu ?
496
    else if($data['FK_tabuledu'] > 0) {
497
      //      make_conffiles($datapost['MAC0'],$pass,$code);
498
      if( strlen($mac0) == 12 && strlen($mac1) == 12) {
499
	//Petite vérification, si c'est le même tabuledu qu'on a réinstallé x fois on laisse faire
500
	$query2 = "SELECT * FROM glpi_computers WHERE os_license_number LIKE '" . $mac0 . "%' OR os_license_number LIKE '" . $mac1 . "%' ";
501
	$result2 = $DB->query($query2);
502
	$data2=$DB->fetch_assoc($result2);
503
	//Ce pack a été utilisé pour ce tabuledu ... ok
504
	if($data2['ID'] == $data['FK_tabuledu']) {
505
	  $nbu = $data['nbused'];
506
	  make_conffiles($datapost['MAC0'],$pass,$code);
507

  
508
	  $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";
509
	  $message .= "<h4>Rappel des informations concernant ce tabuledu: </h4>";
510
	  $message .= "<ul>
511
  <li>Nom: " . $data2['name'] . "</li>
512
  <li>Commentaires: " . $data2['comments'] . "</li>
513
</ul>\n";
514
	  $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>";
515

  
516
	  if(isset($datapost["MINIWEBADMIN"])) {
517
	    $message .= "<p>Vous pouvez maintenant passer à l'étape suivante: <a href=\"/maj/\">la 1ere mise à jour de votre tabuledu.</a></p>\n";
518
	    //le flag qui indique a miniwebadmin que le epack est enregistre
519
	    $commande .= "\n touch /tmp/epack.ok \n";
520
	  }
521
	  //On incremente le compteur qui permettra de detecter les tabuledu tres souvent reinstalles
522
	  $nbu = $data['nbused'] + 1;
523
	  $query3 = "UPDATE glpi_plugin_anet_epacks SET nbused='$nbu' WHERE code='$code' AND password='$pass'";
524
	  $result3 = $DB->query($query3);
525

  
526
	  //On update les liens etc. (si on a change les comptes utilisateurs par ex.)
527
	  //TODO
528
	  $query1 = "SELECT * FROM glpi_entities WHERE name='" . addslashes($datapost['INAME']) . "' AND parentID='" . $data['FK_client'] . "'";
529
	  $result1 = $DB->query($query1);
530
	  if($DB->numrows($result1) > 0) {
531
	    //L'entité existe déjà ...
532
	    $data1 = $DB->fetch_assoc($result1);
533
	    $identityenduser = $data1['ID'];
534
	  }
535
	  else {
536
	    $debug .= "<p>Erreur : $query1</p>";
537
	  }
538
	  $debug .= "<li>Entity: $query1</li>\n";
539
	  add_user_and_update_link($datapost['IEMAIL'], $identityenduser,$datapost['INAME'],$datapost['ICITY'],"Installation");
540
	  add_user_and_update_link($datapost['ADM_EMAIL'], $identityenduser,$datapost['ADM_LASTNAME'],$datapost['ADM_FIRSTNAME'],"Directrice ou directeur");
541
	  add_user_and_update_link($datapost['PR_EMAIL'], $identityenduser,$datapost['PR_LASTNAME'],$datapost['PR_FIRSTNAME'],"Autre contact");
542
	  add_user_and_update_link($datapost['ATICE_EMAIL'], $identityenduser,$datapost['ATICE_LASTNAME'],$datapost['ATICE_FIRSTNAME'],"Animateur TICE");
543
	  
544
	  make_conffiles($datapost['MAC0'],$pass,$code);
545

  
546

  
547
	}
548
	//Sinon, c'est louche, on informe ryxeo et on avertis l'utilisateur
549
	else {
550
	  $message .= "<p>Attention, Ce pack a déjà été attribué à un tabuledu !</p>\n";
551
	  $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";
552

  
553
	  $mail_content = "
554
Bonjour,
555
le pack $pass :: $code vient d'être utilisé pour enregistrer un tabuledu alors que ce pack a déjà
556
été utilisé. Merci de vérifier s'il ne s'agit pas d'une tentative de réinstallation multiple ...
557

  
558
Informations brutes récoltées:
559

  
560
";
561
	  foreach ($datapost as $key => $value) {
562
	    $mail_content .= "$key -> $value\n";
563
	  }
564
	  
565
	  $mail_content .= "
566

  
567
--
568
abuledu.net est un service de RyXéo SARL, société éditrice d'AbulÉdu
503
    if($data['FK_serveur'] > 0) {
504
      $query2 = "SELECT * FROM glpi_entities_data WHERE FK_entities='" . $data['FK_client'] . "'";
505
      $result2 = $DB->query($query2);
506
      $data2=$DB->fetch_assoc($result2);
569 507

  
570
";
571
	  ryxeo_mail("anet@ryxeo.com",$mail_content,"contact@ryxeo.com","Pack déjà activé plusieurs fois !");
572
	}
573
      }
508
      $message .= "<p>Merci, ePack correctement activé.</p>\n";
509
      $message .= "<h4>Rappel des informations concernant ce client: </h4>";
510
      $message .= "<ul>
511
  <li>Nom: " . $data['name'] . "</li>
512
  <li>Adresse: " . $data2['address'] . " " . $data2['postcode'] . " " . $data2['town'] . "</li>
513
</ul>\n";
514
      $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>";
515
      send_mail_installation($pass,$code,$datapost);
516
      
574 517
    }
575 518
    //pack deja utilise ? si oui c'est qu'il a bien été activé
576 519
    else if($data['FK_activation'] > 0) {
......
587 530
	$identityenduser = $data1['ID'];
588 531
      }
589 532
      else {
590
	//L'entité n'existe pas, on l'ajoute
533
	//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)
591 534
	$query1 = "INSERT INTO glpi_entities VALUES('','" . addslashes($datapost['INAME']) . "'," . $data['FK_client'] . ",'" . $data['completename'] . " > " . addslashes($datapost['INAME']) . "','',5)";
592 535
	$result1 = $DB->query($query1);
593 536
	$send_mail = 1;
......
645 588
      //Creation ok
646 589
      $idserver = $data2['ID'];
647 590
      if($DB->numrows($result2) > 0) {
648
	$message .= "<li>Ajout du tabuledu sur AbulÉdu.net: <font color=\"green\">OK</font></li>\n";
591
	$message .= "<li>Ajout de cette tabuledu sur AbulÉdu.net: <font color=\"green\">OK</font></li>\n";
649 592

  
650 593
	//On attribue le pack au tabuledu
651 594
	$nbu = $data['nbused'] + 1;
......
680 623
	make_conffiles($datapost['MAC0'],$pass,$code);
681 624

  
682 625
	//Mail d'information a ryxeo + pdf au rvendeur
683
	make_pdf($pass,$code,$datapost);
626
	//make_pdf($pass,$code,$datapost);
684 627
	send_mail_installation($pass,$code,$datapost);
685 628
	 
686 629
	if(isset($datapost["MINIWEBADMIN"])) {
......
697 640
	$message .= "<li>Ajout du tabuledu sur anet: <font color=\"red\">ERROR</font></li>\n";
698 641
    }
699 642
    else if ($data['activation_date'] == "0000-00-00") {
700
      $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";
643
      $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";
701 644
    }
702 645
    else {
703
      $message .= "<p><font color=\"red\">Erreur, ce pack a déjà été utilisé ou n'a pas encore été activé !!!</font></p>\n";
646
      $message .= "FORBIDDEN:<p><font color=\"red\">Erreur, ce pack a déjà été utilisé ou n'a pas encore été activé !!!</font></p>\n";
704 647
    }
705 648
  }
706 649
  else {
707
    $message .= "<p><font color=\"red\">Erreur de code ou de mot de passe epack !!!</font></p>\n";
650
    $message .= "FORBIDDEN:<p><font color=\"red\">Erreur de code ($code) ou de mot de passe ($pass) epack !!!</font></p>\n";
708 651
  }
709 652
 }
710 653
 else {
711
   $message .= "<p><font color=\"red\">Erreur: code ou mot de passe epack invalide.</font></p>\n";
654
   $message .= "FORBIDDEN:<p><font color=\"red\">Erreur: code ou mot de passe epack invalide ($code / $pass).</font></p>\n";
712 655
 }
713 656

  
714 657
$object = array();
......
716 659
  $message .= "<p><font color=\"red\">Erreur non prévue, merci de contacter RyXéo sans tarder...</font></p>";
717 660
$object['message'] = "<h1>Enregistrement de votre tabuledu avec un ePack</h1>\n";
718 661
$object['message'] .= $message;
719
$object['command'] = $commande;
720 662

  
721
//On touche le fichier pour forcer un update de gnudip et des accreditations ... uniquement si epack valide
722
if($send_mail) {
723
  @touch("/tmp/update-anet");
724
  @chmod("/tmp/update-anet",0666);
725
}
726
print json_encode($object);
663
//print json_encode($object);
664
print $message;
727 665

  
728 666
if($log_debug != "") {
729
  if($fp = fopen($log_file,"w")) {
667
  if($fp = fopen($log_file,"a")) {
730 668
    fwrite($fp, $debug);
669
    fwrite($fp, "**********************************");
670
    fwrite($fp, $message);
671
    fwrite($fp, "**********************************");
731 672
    fclose($fp);
732 673
  }
733 674
}
734 675

  
676
$ip = get_ip();
677

  
678
$txtmail = "Bonjour,
679
une erreur d'enregistrement ePack ou autre pour TabulEdu vient de se produire
680

  
681
$message
682

  
683
Adresse IP utilisée lors de l'installation: $ip
684

  
685
--
686
RyXéo SARL
687
contact@ryxeo.com
688
Tel: 05 35 54 01 18";
689
$crlf = "\n";
690
$hdrs = array(
691
	      'From'    => 'contact@ryxeo.com',
692
              'Subject' => mb_encode_mimeheader("[TAbulEdu] Fiche d'erreur " . $datapost['INAME']),
693
	      'BCC'     => 'contact@ryxeo.com'
694
	      );
695
$mime = new Mail_mime($crlf);
696
$mime->setTXTBody($txtmail);
697
$mime->addAttachment($fichier_pdf, mime_content_type($fichier_pdf));
698
$mime->addAttachment($fichier, mime_content_type($fichier));
699
$body = $mime->get(array('text_charset' => 'utf-8'));
700
$hdrs = $mime->headers($hdrs);
701
$mail =& Mail::factory('mail');
702
  
703
$mail->send("contact@ryxeo.com", $hdrs, $body);
704

  
705

  
735 706
//print_r($_SERVER);
736 707
?>

Formats disponibles : Unified diff

Redmine Appliance - Powered by TurnKey Linux