Projet

Général

Profil

Paste
Statistiques
| Branche: | Révision:

ryxeo-glpi-git / htdocs / epack / register-tabuledu.php @ 3a4c0c8e

Historique | Voir | Annoter | Télécharger (29,1 ko)

1
<?php
2
//AJAX CODE
3

    
4
$commande = "";
5
$message = "";
6
$debug = "";
7
$log_debug = 1; //flag pour savoir s'il faut ecrire les debug logs dans le fichier de logs
8
$log_file = "/tmp/debug.log";
9
$send_mail = 0; //flag pour savoir s'il faut envoyer un mail (en bref a toute insertion ou update de base)
10

    
11
function make_pdf($pass,$code,$datapost) {
12
  global $message;
13
  global $login_email;
14
  require_once('lib/odf.php');
15
  $odf = new odf("abuledu-base_genere_automatiquement_enregistrement_epack_tabuledu.odp");
16
   
17
  //1ere page
18
  setlocale(LC_TIME, "fr_FR.UTF-8");
19
  //  $odf->setVars('date', strftime("%A %e %B %Y"));
20
  $odf->setVars('date_installation', $datapost['IDATE']);
21
  $odf->setVars('date', date("d/m/Y"));
22

    
23
  //Le epack
24
  $odf->setVars('epack_pass', $pass);
25
  $odf->setVars('epack_code', $code);
26

    
27
  //L'école
28
  $odf->setVars('ecole_nom', $datapost['INAME'], true, 'UTF-8');
29
  $odf->setVars('ecole_adresse', $datapost['IADDRESS0'], true, 'UTF-8');
30
  $odf->setVars('ecole_cp', $datapost['IPOSTALCODE'], true, 'UTF-8');
31
  $odf->setVars('ecole_ville', $datapost['ICITY'], true, 'UTF-8');
32
  $odf->setVars('ecole_pays', $datapost['ICOUNTRY'], true, 'UTF-8');
33
  $odf->setVars('ecole_tel', $datapost['ITEL'], true, 'UTF-8');
34
  $odf->setVars('ecole_email', $datapost['IEMAIL'], true, 'UTF-8');
35

    
36
  //Le tabuledu
37
  $odf->setVars('srv_serial', $datapost['ISERIAL'], true, 'UTF-8');
38
  $odf->setVars('srv_cpu', $datapost['CPU'], true, 'UTF-8');
39
  $odf->setVars('srv_ram', $datapost['RAM'], true, 'UTF-8');
40
  $odf->setVars('srv_hdd0', $datapost['HDD0'], true, 'UTF-8');
41
  $odf->setVars('srv_eth0', $datapost['MAC0'], true, 'UTF-8');
42
  $odf->setVars('srv_eth1', $datapost['MAC1'], true, 'UTF-8');
43

    
44
  //L'admin local
45
  $odf->setVars('adm_prenom', $datapost['ADM_FIRSTNAME'], true, 'UTF-8');
46
  $odf->setVars('adm_nom', $datapost['ADM_LASTNAME'], true, 'UTF-8');
47
  $odf->setVars('adm_email', $datapost['ADM_EMAIL'], true, 'UTF-8');
48

    
49
  //La personne ressource
50
  $odf->setVars('pr_prenom', $datapost['PR_FIRSTNAME'], true, 'UTF-8');
51
  $odf->setVars('pr_nom', $datapost['PR_LASTNAME'], true, 'UTF-8');
52
  $odf->setVars('pr_email', $datapost['PR_EMAIL'], true, 'UTF-8');
53

    
54
  //L'anim TICE
55
  $odf->setVars('atice_prenom', $datapost['ATICE_FIRSTNAME'], true, 'UTF-8');
56
  $odf->setVars('atice_nom', $datapost['ATICE_LASTNAME'], true, 'UTF-8');
57
  $odf->setVars('atice_email', $datapost['ATICE_EMAIL'], true, 'UTF-8');
58

    
59
  //Le revendeur
60
  $odf->setVars('rvd_code', $datapost['RCODE'], true, 'UTF-8');
61
  $odf->setVars('rvd_nom', $datapost['RNAME'], true, 'UTF-8');
62
  $odf->setVars('rvd_tel', $datapost['RTEL'], true, 'UTF-8');
63
  $odf->setVars('rvd_email', $datapost['REMAIL'], true, 'UTF-8');
64
  $odf->setVars('rvd_adresse', $datapost['RADDRESS'], true, 'UTF-8');
65
  $odf->setVars('rvd_cp', $datapost['RCP'], true, 'UTF-8');
66
  $odf->setVars('rvd_ville', $datapost['RVILLE'], true, 'UTF-8');
67
  
68
  //On créé un fichier local pour archive ...
69
  $fichier="archives/" . date("Y-m-d") . "-epack-register-" . $code . ".odp";
70
  $fichier_pdf="archives/" . date("Y-m-d") . "-epack-register-" . $code . ".pdf";
71

    
72
  $odf->saveToDisk($fichier);
73
  $t = exec("unoconv --server localhost --port 2002 -f pdf " . $fichier);
74

    
75
  //Ensuite il faut l'envoyer par email ...
76
  $txtmail = "Bonjour,
77
vous venez d'enregistrer un ePack d'installation AbulÉdu version TAbulÉdu et nous vous en remercions.
78

79
Vous trouverez ci-joint le document récapitulatif de votre enregistrement.
80

81
--
82
RyXéo SARL
83
contact@ryxeo.com
84
Tel: 05 35 54 01 18";
85
  $crlf = "\n";
86
  $hdrs = array(
87
              'From'    => 'contact@ryxeo.com',
88
              'Subject' => mb_encode_mimeheader("[TAbulEdu] Fiche d'installation " . $datapost['INAME']),
89
              'BCC'     => 'contact@ryxeo.com, supportteam@ryxeo.com'
90
                );
91
  $mime = new Mail_mime($crlf);
92
  $mime->setTXTBody($txtmail);
93
  $mime->addAttachment($fichier_pdf, mime_content_type($fichier_pdf));
94
  $mime->addAttachment($fichier, mime_content_type($fichier));
95
  $body = $mime->get(array('text_charset' => 'utf-8'));
96
  $hdrs = $mime->headers($hdrs);
97
  $mail =& Mail::factory('mail');
98
  
99
  if(trim($datapost['REMAIL']) == "") {
100
    if(trim($login_email) != "") {
101
      $mail->send($login_email, $hdrs, $body);
102
    }
103
    else {
104
      //On cherche le mail associe a ce pack ?
105
      $mail->send("contact@ryxeo.com", $hdrs, $body);
106
    }
107
  }
108
  else {
109
    $mail->send($datapost['REMAIL'], $hdrs, $body);
110
  }
111
}
112

    
113
function send_mail_installation($pass,$code,$datapost) {
114
  $mail_content = "
115

116
Bonjour,
117

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

120
Référence du ePack AbulÉdu:
121
 - $pass
122
 - $code
123

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
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"] . "
173

174
--
175
abuledu.net est un service de RyXéo SARL, société éditrice d'AbulÉdu
176

177
";
178

    
179
  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);
182
  }
183
  else {
184
    ryxeo_mail("anet@ryxeo.com",$mail_content,"contact@ryxeo.com","Nouveau tabuledu dans la base abuledu.net");
185
  }
186
}
187

    
188
//Verifie si les donnees qu'on a en entree sont correctes sinon on saute ... direction webadmin/installation
189
function verification_data() {
190
  global $datapost;
191
  global $message;
192
  $error = "";
193
  if(trim(strtolower($datapost['MAC0'])) == "") // || trim(strtolower($datapost['MAC1'])) == "" )
194
    $error .= "<li>Il manque une carte réseau dans ce tabuledu !</li>";
195
  if(trim($datapost['INAME'])        == "")
196
    $error .= "<li>Erreur sur le nom de l'installation</li>";
197
  if(trim($datapost['IADDRESS0'])    == "")
198
    $error .= "<li>Adresse de l'installation incorrecte</li>";
199
  if(trim($datapost['IPOSTALCODE'])  == "")
200
    $error .= "<li>Code postal incorrect</li>";
201
  if(trim($datapost['ICITY'])        == "")
202
    $error .= "<li>Nom de ville incorrect</li>";
203
  if(trim($datapost['ICOUNTRY'])     == "")
204
    $error .= "<li>Nom du pays incorrect</li>";
205
  if(trim($datapost['ITEL'])         == "")
206
    $error .= "<li>Numéro de téléphone incorect</li>";
207
  if(trim($datapost['ADM_LASTNAME']) == "")
208
    $error .= "<li>Nom du contact administratif incomplet</li>";
209
  if(trim($datapost['ADM_FIRSTNAME'])== "")
210
    $error .= "<li>Prénom du contact administratif incomplet</li>";
211
  if(strpos($datapost['IEMAIL'],"@")    == FALSE)
212
    $error .= "<li>Adresse email de l'école incorrecte</li>";
213
  if(strpos($datapost['ADM_EMAIL'],"@") == FALSE)
214
    $error .= "<li>Adresse email du responsable administratif incorrecte</li>";
215

    
216
  if($error != "") {
217
    $message .= "<ul>";
218
    $message .= $error;
219
    $message .= "</ul>";
220
    return false;
221
  }
222
  else
223
    return true;
224

    
225
}
226

    
227
//création des fichiers de conf sur ce nouve<au tabuledu
228
//ou restauration des fichiers de conf (si réinstallation)
229
function make_conffiles($login,$pass,$code) {
230
  global $commande;
231
  $codecrypt = md5($pass);
232

    
233
  //Si c'est un tabuledu de tests on ne cree surtout pas le fichier gdipc pour eviter que apt essaye
234
  //de passer en mode authentifie, on demandera donc le login/pass rvd a chaque upgrade
235
  if(stripos($code, "-TESTS-")) {
236
    $commande .= "";
237
  }
238
  else {
239
    $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
240
  chmod 600 ~abecmd/.GnuDIP2
241
  chown abecmd:admin ~abecmd/.GnuDIP2
242
  su - abecmd gdipc\n";
243
  }
244

    
245
  $commande .= "  mkdir ~abecmd/.ssh || true
246
  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
247
ssh-dss AAAAB3NzaC1kc3MAAACBAIyAzv1X8Hy8r8QiJAmhlDs9INd0jCpYNk5OxBDYA1/qdmKVqVMwKACvZg8xigRBg4e5PMsgpGQf9OxHTlhIiqAjwxmi7tHAy1t1fHuqDCZmqpQG5banOPvr4R5w4q47jKAJNqRsofgZACQKo8KkSHxY5VWZNx5bOfZYdEcWcNqpAAAAFQCXElvdvY+/aILI5a1z4fKRybA7GQAAAIB+5v/foiMKyZ+JEocToPIj2fP4mH7o8xnA1T8HKUGOiutxT/TWT4OnUMmquA/XVdzOyJ/tEeznfUDvlJZzKtFoW75ftQ8Or0AJj68jGQQ3wxQW5TXKuOCoo4vdf0ZQ+ASbzY1ECdxiQEB5kWusWbpes/eyTzDzjpUjMfR2JS5+rAAAAIAksQfdasobfpGuqLIvHBpgSFyas9J6EguBQVauNyLy7IE/WmAN1zgbYvBVU7KY3WUr5pgum9GcExCfnGH/qW7zR7M5zbZdOwq2W4AphXibkf+YbB2q1BouigbUzCiA54wa6XArtHsx0PpzyToHjAplnI4O5DhJ1SQNHClLbfA9Gw== erics@hurlevent
248
\" > ~abecmd/.ssh/authorized_keys
249
  chmod 700 ~abecmd/.ssh -R
250
  chown abecmd:admin ~abecmd/.ssh -R
251
  adduser abecmd admin || true
252
  cd ~abecmd
253
  wget apt.ryxeo.com/ryxeo/bashrc -O .bashrc
254
  chown abecmd .bashrc
255
";
256

    
257
  //Et maintenant on sauvegarde qqpart le code/pass du pack
258
  $commande .= "
259
echo \"" . $code . ":" . $pass . "\" > /etc/abuledu/epack
260
chown aesd:www-data /etc/abuledu/epack || true
261
chmod 640 /etc/abuledu/epack || true
262
sed -i -e \"/.*EPACK.*/D\" /etc/abuledu/rvd || true
263
echo RVD_EPACK_CODE=\\\"$code\\\" >> /etc/abuledu/rvd
264
";
265

    
266
  //L'identification du revendeur ... a améliorer
267
  $commande .= make_rvd_conffile();
268

    
269
  //Il faudrait egalement faire la base pour OCS-NG et les remontees automatiques ... on utilisera le code du epack 
270
}
271

    
272
function make_rvd_conffile() {
273
  global $DB;
274
  //Securisation de l'identification du revendeur ... a améliorer
275
  $commande .= "
276
chown aesd /etc/abuledu/rvd
277
chmod 400 /etc/abuledu/rvd
278
";
279

    
280
}
281

    
282
function add_user_and_update_link($usermail,$identity,$userlastname,$userfirstname,$tag="") {
283
  global $DB;
284
  global $debug;
285
  global $message;
286
  global $send_mail;
287

    
288
  if(trim($usermail) == "") {
289
    $message .= "<li><font color=\"red\">ERROR ($tag)</font> compte utilisateur sans adresse email ! $userlastname :: $userfirstname</li>\n";
290
    return;
291
  }
292

    
293
  $query = "SELECT * from glpi_users WHERE email='$usermail'";
294
  $result = $DB->query($query);
295
  $debug .= "<p>nb ; " . $DB->numrows($result) . " req : $query</p>";
296
  if($DB->numrows($result)>0) {
297
    $data = $DB->fetch_assoc($result);
298
    $iduser = $data['ID'];
299
    //existe dejà on fait juste le lien s'il n'existe pas déjà
300
    $query2 = "SELECT * FROM glpi_users_profiles WHERE FK_users='$iduser' AND FK_entities='$identity'";
301
    //$debug .= "$query2";
302
    $result2 = $DB->query($query2);
303
    if($DB->numrows($result2)<=0) {
304
      //pour eviter qu'un utilisateur se retrouve dans l'entite racine ...
305
      if(trim($identity) != 0) {
306
        $query3 = "INSERT INTO glpi_users_profiles(FK_users,FK_entities,FK_profiles,recursive,dynamic) VALUES('$iduser','$identity',1,0,1)";
307
        $result3 = $DB->query($query3);
308
        $send_mail = 1;
309
        if($result3)
310
          $message .= "<li>Attribution des droits de l'utilisateur $usermail sur le tabuledu: <font color=\"green\">OK</font></li>\n";
311
        else {
312
          $message .= "<li>Attribution des droits de l'utilisateur $usermail sur le tabuledu: <font color=\"red\">ERROR</font></li>\n";
313
        }
314
      }
315
      else {
316
        $message .= "<li>Tentative de lien avec l'entité racine($identity) refusée pour $usermail: <font color=\"red\">ERROR</font></li>\n";
317
        //$message .= "<li>$query2</li>\n";
318
      }
319
    }
320
    //Sinon c'est que tout est déjà fait !
321
  }
322
  //Sinon c'est que l'utilisateur n'existe pas encore dans la base
323
  else {
324
    //Insérer l'utilisateur ... et appel sur la même fonction qui cette fois ci fera le reste :)
325
    $query2 = "INSERT INTO glpi_users(name,email,realname,firstname,FK_profiles,FK_entities,auth_method) VALUES(
326
'$usermail',
327
'$usermail',
328
'$userlastname',
329
'$userfirstname',
330
'0',
331
'$identity',
332
'1'
333
)";
334
    $result2 = $DB->query($query2);
335
    $send_mail = 1;
336
    if($result2) {
337
      $message .= "<li>Création du compte utilisateur $usermail : <font color=\"green\">OK</font></li>\n";
338
      add_user_and_update_link($usermail,$identity,$userlastname,$userrfirstname,$tag);
339
    }
340
    else {
341
      $message .= "<li>Création du compte utilisateur $usermail : <font color=\"red\">ERROR</font></li>\n";
342
    }
343
  }
344
}
345

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

    
357
if($_SESSION['epack_session'] > 1) {
358
  $pass    = strtoupper($_SESSION['epack_pass']);
359
  $code    = strtoupper($_SESSION['epack_code']);
360
  if(isset($_POST['login_email'])) {
361
    $login_email = $_POST['login_email'];
362
    $login_pass  = $_POST['login_pass'];
363
  }
364
  if(isset($_SESSION['login_email'])) {
365
    $login_email = $_SESSION['login_email'];
366
    $login_pass  = $_SESSION['login_pass'];
367
  }
368
}
369
else {
370
  $debug .= "Pas de session\n";
371
  //Si on est sur un formulaire POST (on casse la limite de la taille de la requete GET)
372
  if(isset($_POST["pass"])) {
373
    $debug .= "Passage en POST\n";
374

    
375
    $pass = $_POST["pass"];
376
    $code = strtoupper($_POST["code"]);
377
    $datapost = array();
378

    
379
    $debug .= "<p>Req::" . $_SERVER['REQUEST_URI'] . "</p>\n";
380

    
381
    foreach($_POST as $key=>$value) {
382
      $datapost[$key]=$value;
383
      $debug .= "<p>" . $key . " -> " . $value . "</p>\n";
384
    }
385
  }
386
  else {
387
    ereg(".*pass=(.*).code=(.*).data=(.*)",$_SERVER['REQUEST_URI'],$regs);
388
    $pass = addslashes($regs[1]);
389
    $code = strtoupper(addslashes($regs[2]));
390
    $keyvalue_list=explode("&",base64_decode($regs[3]));
391
    $datapost = array();
392

    
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";
404
      }
405
    }
406
  }
407

    
408
  //Ou du POST
409
  if(trim($pass) == "" || trim($code) == "") {
410
    $pass = addslashes($_POST['pass']);
411
    $code = addslashes(strtoupper($_POST['code']));
412
  }
413
}
414

    
415
$_SERVER['REQUEST_URI'] = "";
416
$_SERVER['HTTP_REFERER'] = "";
417

    
418
define('GLPI_ROOT', '..');
419
include (GLPI_ROOT . "/inc/includes.php");
420

    
421
include ("ryxeo.php");
422
include('Mail.php');
423
include('Mail/mime.php');
424

    
425
//Si epack ryxeo de tests
426
if(stripos($code, "RYXEO-TESTS-")) {
427
  if(is_array($datapost)) {
428
    $k = array_keys($datapost);
429
    for($i = 0; $i < count($k); $i++) {
430
      $key = $k[$i];
431
      $debug .= $key . "=" . $datapost[$key] . "\n";
432
    }
433
  }
434
 }
435
if(isset($datapost["MINIWEBADMIN"]) && stripos($code, "-TESTS-")) {
436
  $message .= "<p><h2>Vous pouvez maintenant passer à l'étape suivante: <a href=\"/maj/\">la 1ere mise à jour de votre tabuledu.</a></h2></p>\n";
437
  //le flag qui indique a miniwebadmin que le epack est enregistre
438
  $commande .= "\n touch /tmp/epack.ok \n";
439
 }
440

    
441
/*
442
if(trim($debug) != "" ) {
443
  $message .= "<pre>
444
$debug
445
</pre>";
446
 }
447
*/
448

    
449
$debug .= "<p>Du cote abuledu.net ... $g_http_request</p>\n7";
450

    
451

    
452
//On ne fait pas tout le bazaaar, on teste / valide la procedure uniquement
453
if(stripos($code, "-TESTS-")) {
454
  make_pdf($pass,$code,$datapost);
455
  send_mail_installation($pass,$code,$datapost);
456
 }
457
//print_r($_SERVER);
458
//On ne fait pas tout le bazaaar, on teste / valide la procedure uniquement
459
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);
466
  return;
467
}
468

    
469
//print "<pre>";
470
//print_r($datapost);
471
//$message .= implode("::",$datapost);
472
//print "</pre>";
473
//reset ...
474
//print_r($_SESSION);
475
//unset($_SESSION['epack_session']);
476
if(trim($pass) != "" && trim($code) != "") {
477
  $query = "SELECT * FROM glpi_plugin_anet_epacks
478
LEFT JOIN glpi_entities AS g ON FK_client=g.ID
479
WHERE code='$code' AND password='$pass'";
480
  $result = $DB->query($query);
481
  $debug .= "$query";
482
  $mac0 = trim(strtolower($datapost['MAC0']));
483
  $mac1 = trim(strtolower($datapost['MAC1']));
484
  //$data=$DB->fetch_assoc($result);
485
  //$nbresultat = $DB->numrows($result);
486
  //print_r($data);
487
  //exit;
488
  if($DB->numrows($result)>0) {
489
    $data=$DB->fetch_assoc($result);
490

    
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
569

570
";
571
          ryxeo_mail("anet@ryxeo.com",$mail_content,"contact@ryxeo.com","Pack déjà activé plusieurs fois !");
572
        }
573
      }
574
    }
575
    //pack deja utilise ? si oui c'est qu'il a bien été activé
576
    else if($data['FK_activation'] > 0) {
577
      $notes = "Données collectées lors de l'enregistrement du tabuledu le " . date("Y-m-d") . "\n\n";
578
      foreach ($datapost as $key => $value) {
579
        $notes .= "$key = $value\n";
580
      }
581
      //On créé l'entité de l'école dans l'entité du client qui est elle même dans l'entité du revendeur
582
      $query1 = "SELECT * FROM glpi_entities WHERE name='" . addslashes($datapost['INAME']) . "' AND parentID='" . $data['FK_client'] . "'";
583
      $result1 = $DB->query($query1);
584
      if($DB->numrows($result1) > 0) {
585
        //L'entité existe déjà ...
586
        $data1 = $DB->fetch_assoc($result1);
587
        $identityenduser = $data1['ID'];
588
      }
589
      else {
590
        //L'entité n'existe pas, on l'ajoute
591
        $query1 = "INSERT INTO glpi_entities VALUES('','" . addslashes($datapost['INAME']) . "'," . $data['FK_client'] . ",'" . $data['completename'] . " > " . addslashes($datapost['INAME']) . "','',5)";
592
        $result1 = $DB->query($query1);
593
        $send_mail = 1;
594
      }
595
      $query1 = "SELECT * from glpi_entities WHERE name='" . addslashes($datapost['INAME']) . "' AND parentID='" . $data['FK_client'] . "';";
596
      $result1 = $DB->query($query1);
597
      $data1 = $DB->fetch_assoc($result1);
598
      //Creation ok
599
      $identityenduser = $data1['ID'];
600
      if($DB->numrows($result1) > 0) {
601
        $query1 = "INSERT INTO glpi_entities_data VALUES('',$identityenduser,'" .
602
          addslashes($datapost['IADDRESS0'] . " " . $datapost['IADDRESS1'] ) . "','" .
603
          addslashes($datapost['IPOSTALCODE']) . "','" .
604
          addslashes($datapost['ICITY']) . "','" .
605
          "','" .
606
          addslashes($datapost['ICOUNTRY']) . "','" .
607
          "','" .
608
          addslashes($datapost['ITEL']) . "','" .
609
          "','" .
610
          addslashes($datapost['IEMAIL']) . "','" .
611
          "','" .
612
          "','" .
613
          "');";
614
        $result1 = $DB->query($query1);
615
        //print $query1;
616
        //print_r($data1);
617
        $message .= "<ul>\n";
618
        if($result1)
619
          $message .= "<li>Création de l'école: <font color=\"green\">OK</font></li>\n";
620
        else {
621
          $message .= "<li>Création de l'école: <font color=\"red\">ERROR</font></li>\n";
622
        }
623

    
624
      }
625
    
626
      //Il faut inserer le tabuledu dans le compte du client final et faire le toutim
627
      $query2 = "INSERT INTO glpi_computers(FK_entities,name,date_mod,os_license_number,comments,notes,state)
628
VALUES(
629
'" . $identityenduser . "',
630
'" . addslashes($datapost['INAME']) . "',
631
NOW(),
632
'" . $mac0 . ".dip.abuledu.net',
633
'" . addslashes($datapost['ICOMMENT']) . "',
634
'" . addslashes($notes) . "',
635
'1'
636
)";
637
      $result2 = $DB->query($query2);
638
      $send_mail = 1;
639

    
640
      $query2 = "SELECT * from glpi_computers WHERE name='" . addslashes($datapost['INAME']) . "' AND os_license_number='" . $mac0 . ".dip.abuledu.net';";
641
      //      print "select $query2";
642
      $result2 = $DB->query($query2);
643
      $data2 = $DB->fetch_assoc($result2);
644
      //      print_r($data2);
645
      //Creation ok
646
      $idserver = $data2['ID'];
647
      if($DB->numrows($result2) > 0) {
648
        $message .= "<li>Ajout du tabuledu sur AbulÉdu.net: <font color=\"green\">OK</font></li>\n";
649

    
650
        //On attribue le pack au tabuledu
651
        $nbu = $data['nbused'] + 1;
652
        $query3 = "UPDATE glpi_plugin_anet_epacks SET FK_serveur='" . $idserver  . "', FK_enduser='" . $identityenduser . "', nbused='$nbu' WHERE code='$code' AND password='$pass'";
653
        $result3 = $DB->query($query3);
654
        
655
        
656
        $query3 = "INSERT INTO glpi_computer_device(specificity,device_type,FK_device,FK_computers)
657
VALUES('" . $datapost['CPU'] . "','2','2','$idserver'),
658
('" . $datapost['RAM'] . "','3','2','$idserver'),
659
('" . $datapost['HDD0'] . "','4','4','$idserver'),";
660
        if(trim($datapost['HDD1']))
661
          $query3 .= "('" . $datapost['HDD1'] . "','4','4','$idserver'),";
662
        $query3 .= "('" . $datapost['MAC0'] . "','5','2','$idserver'),
663
('" . $datapost['MAC1'] . "','5','2','$idserver');";
664
        $result3 = $DB->query($query3);
665
        $send_mail = 1;
666
        if($result3)
667
          $message .= "<li>Ajout des pièces détachées du tabuledu: <font color=\"green\">OK</font></li>\n";
668
        else
669
          $message .= "<li>Ajout des pièces détachées du tabuledu: <font color=\"red\">ERROR</font></li>\n";
670
        //Insertion des pièces détachées ok
671

    
672
        //Ajout des contacts liés à ce tabuledu ?
673
        add_user_and_update_link($datapost['IEMAIL'], $identityenduser,$datapost['INAME'],$datapost['ICITY'],"Installation");
674
        add_user_and_update_link($datapost['ADM_EMAIL'], $identityenduser,$datapost['ADM_LASTNAME'],$datapost['ADM_FIRSTNAME'],"Directrice ou directeur");
675
        add_user_and_update_link($datapost['PR_EMAIL'], $identityenduser,$datapost['PR_LASTNAME'],$datapost['PR_FIRSTNAME'],"Autre contact");
676
        add_user_and_update_link($datapost['ATICE_EMAIL'], $identityenduser,$datapost['ATICE_LASTNAME'],$datapost['ATICE_FIRSTNAME'],"Animateur TICE");
677

    
678
        //Création des fichiers de conf pour se rattacher a la maintenance (?) ... mais si pas de maintenance ?
679
        //On gerera ça sur les paiements des contrats associés
680
        make_conffiles($datapost['MAC0'],$pass,$code);
681

    
682
        //Mail d'information a ryxeo + pdf au rvendeur
683
        make_pdf($pass,$code,$datapost);
684
        send_mail_installation($pass,$code,$datapost);
685
         
686
        if(isset($datapost["MINIWEBADMIN"])) {
687
          $message .= "</ul>\n<p>Vous pouvez maintenant passer à l'étape suivante: <a href=\"/maj/\">la 1ere mise à jour de votre tabuledu.</a></p>\n";
688
          //le flag qui indique a miniwebadmin que le epack est enregistre
689
          $commande .= "\n touch /tmp/epack.ok \n";
690
        }
691
        else {
692
          $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";
693
          $message .= "</ul>\n";
694
        }
695
      }
696
      else
697
        $message .= "<li>Ajout du tabuledu sur anet: <font color=\"red\">ERROR</font></li>\n";
698
    }
699
    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";
701
    }
702
    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";
704
    }
705
  }
706
  else {
707
    $message .= "<p><font color=\"red\">Erreur de code ou de mot de passe epack !!!</font></p>\n";
708
  }
709
 }
710
 else {
711
   $message .= "<p><font color=\"red\">Erreur: code ou mot de passe epack invalide.</font></p>\n";
712
 }
713

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

    
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);
727

    
728
if($log_debug != "") {
729
  if($fp = fopen($log_file,"w")) {
730
    fwrite($fp, $debug);
731
    fclose($fp);
732
  }
733
}
734

    
735
//print_r($_SERVER);
736
?>
Redmine Appliance - Powered by TurnKey Linux