Attention,un champ est vide, nous ne pouvons poursuivre la demande. '; die(); } } // on verifie le champ prénom elseif (preg_match('/[\^£$%&*()}{@#~?><>,|=_\\\\\;+¬]/', $prenom)) { echo 'Le champ prénom contient un caractère spécial.';// one or more of the 'special characters' found in $string die(); } elseif (preg_match('~[0-9]~', $prenom)) { echo 'Le champ prénom contient un caractère spécial.'; die(); } // on vérifie le champ nom elseif (preg_match('/[\^£$%&*()}{@#~?><>,|=_\\\\\;+¬]/', $nom)) { echo 'Le champ nom contient un caractère spécial.'; die(); } elseif (preg_match('~[0-9]~', $nom)) { echo 'Le champ nom contient un caractère spécial.'; die(); } // sinon ... else { $unwanted_array = array( 'Š'=>'S', 'š'=>'s', 'Ž'=>'Z', 'ž'=>'z', 'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A', 'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E', 'Ê'=>'E', 'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U', 'Ú'=>'U', 'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'Ss', 'à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'å'=>'a', 'æ'=>'a', 'ç'=>'c', 'è'=>'e', 'é'=>'e', 'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i', 'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o', 'ô'=>'o', 'õ'=>'o', 'ö'=>'o', 'ø'=>'o', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'þ'=>'b', 'ÿ'=>'y' ); // on supprime les espaces du prenom //$prenom = preg_replace('/\s+/', '', $prenom); // si le prenom contient un trait d'union if (strpos($prenom, '-') !== false) { // delimiteur trait d'union $prenom1 = explode("-", $prenom); $prenom1[0] = ucfirst(strtolower($prenom1[0])); $prenom1[1] = ucfirst(strtolower($prenom1[1])); $prenom = $prenom1[0].'-'.$prenom1[1]; //echo 'dans la boucle'; //echo $prenom; } else { $prenom = ucfirst(strtolower($prenom)); } //$prenom = ucfirst(strtolower($prenom)); // Tout en MAJUSCULE en gardant les accents $nom = mb_strtoupper($nom, 'UTF-8'); // On supprime les accents $prenom2 = strtr( $prenom, $unwanted_array ); // on ne garde que les lettres du prenom $prenom2 = preg_replace("/[^a-zA-Z]-/", "", $prenom2); // on recupere le premier caractere du prénom $FirstChar = $prenom2[0]; // on supprime les espaces du nom $nom2 = preg_replace('/\s+/', '', $nom); $nom2 = strtr( $nom2, $unwanted_array ); //$FirstChar = strtr( $FirstChar, $unwanted_array ); // On concatene premiere lettre prenom avec le nom $login = $FirstChar.$nom2; // on met tout en minuscule $login = strtolower($login); // on prend les 20 premiers caracteres $login = substr($login,0,20); // on ne garde que les lettres $login = preg_replace("/[^a-zA-Z]/", "", $login); // on supprime les accents, apostrophe et trait d'union : $prenom_mail = preg_replace("/[^a-zA-Z]-/", "", $prenom2); $prenom_mail = preg_replace('/\s+/', '', $prenom_mail); $prenom_mail = str_replace("'", '', $prenom_mail); $nom2_mail = preg_replace("/[^a-zA-Z]-/", "", $nom2); $nom2_mail = str_replace("'", '', $nom2); //SMTP PINCIPAL $email = $prenom_mail.".".$nom2_mail; $email = substr($email,0,64); //$email = $email."@ensae-paristech.fr"; $email = $email."@ensae.fr"; $email = strtr( $email, $unwanted_array ); $email = strtolower($email); // ALIAS $alias = $prenom_mail.".".$nom2_mail."@ensae.fr"; $alias = strtr( $alias, $unwanted_array ); $alias = strtolower($alias); // ON AFFICHE $password = generateStrongPassword(); $N = count($voie); /* echo "Bonjour ".$prenom." ".$nom ; echo "
"; echo "Votre login est ".$login; echo "
"; $password = generateStrongPassword(); echo "Votre mot de passe est : ".$password; echo "
"; echo "Votre adresse email est ".$email; echo "
"; $N = count($voie); echo("Selection de $N voie(s): "); echo "
"; for($i=0; $i < $N; $i++) { echo($voie[$i] . "
"); } echo "
"; echo '
Imprimer'; foreach($voie as $value) { echo ''; } */ } function generateStrongPassword($length = 12, $add_dashes = false, $available_sets = 'lud') { $sets = array(); if(strpos($available_sets, 'l') !== false) $sets[] = 'abcdefghjkmnpqrstuvwxyz'; if(strpos($available_sets, 'u') !== false) $sets[] = 'ABCDEFGHJKMNPQRSTUVWXYZ'; if(strpos($available_sets, 'd') !== false) $sets[] = '23456789'; if(strpos($available_sets, 's') !== false) $sets[] = '!@#$%&*?'; $all = ''; $password = ''; foreach($sets as $set) { $password .= $set[array_rand(str_split($set))]; $all .= $set; } $all = str_split($all); for($i = 0; $i < $length - count($sets); $i++) $password .= $all[array_rand($all)]; $password = str_shuffle($password); if(!$add_dashes) return $password; $dash_len = floor(sqrt($length)); $dash_str = ''; while(strlen($password) > $dash_len) { $dash_str .= substr($password, 0, $dash_len) . '-'; $password = substr($password, $dash_len); } $dash_str .= $password; return $dash_str; } $filter="(mail=$email)"; $FilterEmailExist="(mail=$EtudiantMail)"; $filter2="(samaccountname=$login)"; // Connexion LDAPs $ldapconn = ldap_connect($ldapserver) or die("Could not connect to LDAP server."); ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3); // ****************************************************** if($ldapconn) { // binding to ldap server $ldapbind = ldap_bind($ldapconn, $ldapuser, $ldappass) or die ("Error trying to bind: ".ldap_error($ldapconn)); // verify binding if ($ldapbind) { // echo "LDAP bind successful...

"; //echo "
".$login; //echo "
".$email; // recherche par rapport a l email $result = ldap_search($ldapconn, $ldapdn, $filter) or die ("Error in search query: ".ldap_error($ldapconn)); // recherche par rapport au login $result2 = ldap_search($ldapconn, $ldapdn, $filter2) or die ("Error in search query: ".ldap_error($ldapconn)); $SearchMailExist = ldap_search($ldapconn, $ldapdn, $FilterEmailExist) or die ("Error in search query: ".ldap_error($ldapconn)); $data = ldap_get_entries($ldapconn, $result); $data2 = ldap_get_entries($ldapconn, $result2); //echo "
".$data2['count']; //echo "
".$data['count']; $ResultMailExist = ldap_get_entries($ldapconn, $SearchMailExist); // SHOW ALL DATA // echo '

Dump all data

';
		//print_r($ResultMailExist);  
		//echo '
'; //echo $data[0]["mail"]; // iterate over array and print data for each entry for ($i=0; $i<$data["count"]; $i++) { //echo "dn is: ". $data[$i]["dn"] ."
"; //echo "User: ". $data[$i]["cn"][0] ."
"; if(isset($data[$i]["mail"][0])) { $mail = $data[$i]["mail"][0]; //echo '

LE COMPTE EXISTE

'; //echo "Le mail ". $mail ." existe.

"; } } for ($j=0; $j<$data2["count"]; $j++) { if(isset($data2[$j]["samaccountname"][0])) { $logon = $data2[$j]["samaccountname"][0]; //echo '

LE COMPTE exsite_email

'; //echo "Le compte ". $logon ." exsite.

"; } } // on compte le nombre d email identique dans l'AD $exsite_email = ldap_count_entries($ldapconn, $result); // on compte le nombre de login identique dans l'AD $exsite_login = ldap_count_entries($ldapconn, $result2); /* UTILE POUR AFFICHER SI UN UTILISATEUR EXISTE echo "
Nombre d email existant".$exsite_email ; echo "
Nombre de login existant".$exsite_login ; */ // On encode le mot de passe pour pouvoir activer le compte (Obligatoire) $newPassword = $password; $newPassw = ""; $newPassword = "\"" . $newPassword . "\""; $len = strlen($newPassword); for ($i = 0; $i < $len; $i++) $newPassw .= "{$newPassword{$i}}\000"; $newPassword = $newPassw; //si pas d homonyme (le compte n exsite_email pas) alors on le crée if ($exsite_email == 0 && $exsite_login == 0 && $EtatCompte == 0) { $cn = $nom." ".$prenom; $basedn = "CN=$cn,$BaseUtilisateur"; //$adduserAD["cn"][0] = //$adduserAD["instancetype"][0] = $adduserAD["samaccountname"][0] = $login; $adduserAD["userprincipalname"][0] = $prenom.".".$nom."@ensae.fr"; $adduserAD["objectclass"][0] = "top"; $adduserAD["objectclass"][1] = "person"; $adduserAD["objectclass"][2] = "organizationalPerson"; $adduserAD["objectclass"][3] = "user"; $adduserAD["displayname"][0] = $nom." ".$prenom; $adduserAD["name"][0] = $nom; $adduserAD["unicodePwd"][0] = $newPassword; $adduserAD["userAccountControl"][0] = 544; $adduserAD["accountExpires"][0] = $DateExpiration; //$adduserAD["scriptPath"][0] = ""; $adduserAD["homeDirectory"][0] = "\\\paradis\\eleves\\".$login ; $adduserAD["homeDrive"][0] = "W:"; $adduserAD["profilepath"][0] = "\\\paradis\profils\\".$login; $adduserAD["givenname"][0] = $prenom; $adduserAD["sn"][0] = $nom; //$adduserAD["company"][0] = ""; //$adduserAD["department"][0] = ""; //$adduserAD["title"][0] = ""; $adduserAD["description"][0] = "Eleve de l'ENSAE"; //$adduserAD["mail"][0] = $email; //$adduserAD["initials"][0] = ""; // on CREE le compte $r = ldap_add($ldapconn, $basedn, $adduserAD); if ($r == true) { $resultatcompte = 0 ; } else { echo "ERREUR DANS LA CREATION DU COMPTE AD
"; //var_dump ($r); $resultatcompte = 1 ; } // ON AJOUTE L UTILISATEUR AUX GROUPES CORRESPONDAND AUX VOIES SELECTIONNEES // on compte combien de groupes sont séléctionnés $N = count($voie); for($i=0; $i < $N; $i++) { $dn = "CN=$voie[$i]$BaseGroupe"; //echo $dn; //echo "
"; $entry["member"] = $basedn; $result_group = @ldap_mod_add($ldapconn, $dn, $entry); if ($result_group == false) { echo "ERREUR RENCONTREE DANS L AJOUT DES GROUPES/VOIES
"; $resultatgroupe = "NOK"; } } // ajout par défaut du groupe ClearPass-ETUDIANT pour acces WIFI, PromotionsENSAE et Mesdossiers_Paradis $entry["member"] = $basedn; $wifiGroupe = @ldap_mod_add($ldapconn, $wifi, $entry); $PromotionsENSAEGroupe = @ldap_mod_add($ldapconn, $PromotionsENSAE, $entry); $MesDossiersGroupe = @ldap_mod_add($ldapconn, $MesDossiers, $entry); //*****************ON CREE LA MESSAGERIE******************************** $cmd = "powershell.exe C:\\wamp64\\www\\administrationAD\\creation-mail.ps1 $login $email $alias 2>&1"; try { set_time_limit(300); $execmail = shell_exec($cmd); $resultatmail = 0 ; //echo $resultatmail; } catch(Exception $e) { echo "Erreur lancement script création mail"; //var_dump($e); $resultatmail = 1 ; exit; } //***************** ON CREE HOMEDIRECTORY + ACL ******************************** $cmd2 = "powershell.exe C:\\wamp64\\www\\administrationAD\\homedirectory.ps1 $login 2>&1"; try { set_time_limit(300); $exechomedir = shell_exec($cmd2); $resultathomedir = 0 ; //echo $resultathomedir; } catch(Exception $ex) { echo "Erreur lancement script creation home directory"; $resultathomedir = 1 ; //var_dump($ex); exit; } // ON AFFICHE LES INFOS COMPLETES echo "
Bonjour ".$prenom." ".$nom ; echo "
"; echo "Votre login est ".$login; echo "
"; echo "Votre mot de passe est : ".$newPassword; echo "
"; echo "Votre adresse email est ".$email; echo "
"; $N = count($voie); echo("Selection de $N voie(s): "); echo "
"; for($i=0; $i < $N; $i++) { echo($voie[$i] . "
"); } //echo '
Imprimer'; } //NOUVEL UTILISATEUR MAIS IL exsite_email UN COMPTE SIMILAIRE DANS L AD elseif ($exsite_email > 0 || $exsite_login > 0) { if ($EtatCompte == 0) { echo "Compte existant, on crée un nouveau compte en ajoutant la deuxieme lettre du prenom dans le login
"; $unwanted_array = array( 'Š'=>'S', 'š'=>'s', 'Ž'=>'Z', 'ž'=>'z', 'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A', 'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E', 'Ê'=>'E', 'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U', 'Ú'=>'U', 'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'Ss', 'à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'å'=>'a', 'æ'=>'a', 'ç'=>'c', 'è'=>'e', 'é'=>'e', 'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i', 'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o', 'ô'=>'o', 'õ'=>'o', 'ö'=>'o', 'ø'=>'o', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'þ'=>'b', 'ÿ'=>'y' ); // le point entre le prenom et le nom sera remplacé par underscore _ $email = $prenom_mail."_".$nom2_mail; $email = substr($email,0,64); //$email = $email."@ensae-paristech.fr"; $email = $email."@ensae.fr"; $email = strtr( $email, $unwanted_array ); $email = strtolower($email); // on crée un nouveau login formé par les 2premieres lettre du prenom puis le nom $prenomFirstLetter = $prenom2[0]; $prenomSecondLetter = $prenom2[1]; $prenom2letter = $prenomFirstLetter.$prenomSecondLetter; $login = $prenom2letter.$nom2; $login = strtolower($login); $login = strtolower($login); // on prend les 20 premiers caracteres $login = substr($login,0,20); // on ne garde que les lettres $login = preg_replace("/[^a-zA-Z]/", "", $login); echo "Le login sera : ".$login."
"; $cn = $nom.".".$prenom; $basedn = "CN=$cn,$BaseUtilisateur"; $adduserAD["samaccountname"][0] = $login; $adduserAD["userprincipalname"][0] = $prenom2letter.".".$nom2."@ensae.fr"; $adduserAD["objectclass"][0] = "top"; $adduserAD["objectclass"][1] = "person"; $adduserAD["objectclass"][2] = "organizationalPerson"; $adduserAD["objectclass"][3] = "user"; $adduserAD["displayname"][0] = $nom." ".$prenom; $adduserAD["name"][0] = $nom; $adduserAD["unicodePwd"][0] = $newPassword; $adduserAD["userAccountControl"][0] = 544; $adduserAD["accountExpires"][0] = $DateExpiration; $adduserAD["homeDirectory"][0] = "\\\paradis\\eleves\\".$login ; $adduserAD["homeDrive"][0] = "W:"; $adduserAD["profilepath"][0] = "\\\paradis\profils\\".$login; $adduserAD["givenname"][0] = $prenom; $adduserAD["sn"][0] = $nom; $adduserAD["description"][0] = "Eleve de l'ENSAE"; // on CREE le compte $re = @ldap_add($ldapconn, $basedn, $adduserAD); if ($re == true) { $resultatcompte = 0 ; } else { echo "ERREUR DANS LA CREATION DU COMPTE AD
"; $resultatcompte = 1 ; } // ON AJOUTE L UTILISATEUR AUX GROUPES CORRESPONDAND AUX VOIES SELECTIONNEES // on compte combien de groupes sont séléctionnés $N = count($voie); for($i=0; $i < $N; $i++) { $dn = "CN=$voie[$i]$BaseGroupe"; //echo $dn; echo "
"; $entry["member"] = $basedn; $result_group = @ldap_mod_add($ldapconn, $dn, $entry); if ($result_group == false) { echo "ERREUR RENCONTREE DANS L AJOUT DES GROUPES/VOIES
"; } } // ajout par défaut du groupe ClearPass-ETUDIANT pour acces WIFI $wifiGroupe = @ldap_mod_add($ldapconn, $wifi, $entry); $PromotionsENSAEGroupe = @ldap_mod_add($ldapconn, $PromotionsENSAE, $entry); $MesDossiersGroupe = @ldap_mod_add($ldapconn, $MesDossiers, $entry); //*****************ON CREE LA MESSAGERIE******************************** $cmd = "powershell.exe C:\\wamp64\\www\\administrationAD\\creation-mail.ps1 $login $email $alias"; try { set_time_limit(300); $execmail = shell_exec($cmd); $resultatmail = 0 ; //echo "
";
												
												//echo($output);
												
											}
												catch(Exception 	$e) 
												{
												echo "Erreur sur la création de la messagerie";
												// var_dump($e);
												$resultatmail = 1 ;
												exit;
												}
												
									//***************** ON CREE HOMEDIRECTORY + ACL ********************************			
												
									$cmd2 = "powershell.exe C:\\wamp64\\www\\administrationAD\\homedirectory.ps1 $login";			
									try { 
												set_time_limit(300);
												$exechomedir = shell_exec($cmd2);
												$resultathomedir = 0 ;
												//echo($resultathomedir);
												
											}
												catch(Exception 	$ex) 
												{
												echo "Erreur lancemeny script Home directory";
												//var_dump($ex);
												$resultathomedir = 1 ;
												exit;
												} 
								
								// ON AFFICHE LES INFOS COMPLETES
									echo "Bonjour ".$prenom." ".$nom ;
									echo "
"; echo "Votre login est ".$login; echo "
"; echo "Votre mot de passe est : ".$newPassword; echo "
"; echo "Votre adresse email est ".$email; echo "
"; $N = count($voie); echo("Selection de $N voie(s): "); echo "
"; for($i=0; $i < $N; $i++) { echo($voie[$i] . "
"); } //echo '
Imprimer'; } else { echo "Ce n'est pas un nouveau compte"; } } // TRAITEMENT DES PROLONGATIONS DES COMPTES if ($EtatCompte == 1) { // pour afficher la date de valide du compte initial echo "
Date d expiration actuelle : ".$ResultMailExist[0]['accountexpires'][0]."
"; echo $ResultMailExist[0]['distinguishedname'][0]; $dn = $ResultMailExist[0]['distinguishedname'][0]; $entry['accountexpires'][0] = $DateExpiration; $result_dateexpiration = @ldap_mod_replace($ldapconn, $dn, $entry); if ($result_dateexpiration == true) { echo "
Prolongement effectué
"; $resultatprolongation = 0; } else { echo " Erreur rencontré sur le prolongement
"; echo "
debug : mail reçu : ".$EtudiantMail."
"; $resultatprolongation = 1; } // on ajoute les nouveaux groupes à l'utilisateur $N = count($voie); echo "Nombre de groupe selectionné : ".$N."
"; for($i=0; $i < $N; $i++) { $GroupeSelection = "CN=$voie[$i]$BaseGroupe"; $Groupe['member'] = $ResultMailExist[0]['distinguishedname'][0]; $result_group = @ldap_mod_add($ldapconn, $GroupeSelection, $Groupe); if ($result_group == true) { echo "
Ajout du groupe : ".$voie[$i]."
"; } else { echo "L'utilisateur est probablement déjà membre du groupe ".$voie[$i]."
"; } } $promoENSAE['member'] = $ResultMailExist[0]['distinguishedname'][0]; $result_promoENSAE = @ldap_mod_add($ldapconn, $PromotionsENSAE, $promoENSAE); if ($result_promoENSAE == true) { echo "Ajout du groupe : PromotionsENSAE
"; } else { echo "L'utilisateur est probablement déjà membre du groupe PromotionsENSAE
"; } $GroupMember['member'] = $ResultMailExist[0]['distinguishedname'][0]; $result_wifiGroupe = @ldap_mod_add($ldapconn, $wifi, $GroupMember); if ($result_wifiGroupe == true) { echo "Ajout du groupe : ClearPass-ETUDIANT (WIFI)
"; } else { echo "L'utilisateur est probablement déjà membre du groupe Wifi
"; } // if (result_dateexpiration == true) // { // $resultatprolongation = "Succès"; // } else { // $resultat = "Echec"; // } // $email = $EtudiantMail ; } // CREATION DU FICHIER UTILISATEUR $newuser[] = array("$nom", "$prenom", "$password", "$login", "$email", "$resultatcompte", "$resultathomedir", "$resultatmail", "$datetime" ); //print_r($newuser); // Paramétrage de l'écriture du futur fichier CSV $chemin = 'eleves2023.csv'; $delimiteur = ','; // Pour une tabulation, utiliser $delimiteur = "t"; $fichier_csv = fopen($chemin, 'a'); // Si votre fichier a vocation a être importé dans Excel, // vous devez impérativement utiliser la ligne ci-dessous pour corriger // les problèmes d'affichage des caractères internationaux (les accents par exemple) fprintf($fichier_csv, chr(0xEF).chr(0xBB).chr(0xBF)); // chaque ligne en cours de lecture est insérée dans le fichier // les valeurs présentes dans chaque ligne seront séparées par $delimiteur foreach($newuser as $ligne) { fputcsv($fichier_csv, $ligne); } // fermeture du fichier csv fclose($fichier_csv); if ($resultatcompte == 0 && $resultathomedir == 0 && $resultatmail == 0 ) { //$resultat = "Le compte ".$login." a bien été crée, email : ".$email.", mot de passe : ".$password ; $resultat = "Succès"; echo "
L'ajout du compte à été réalisé sans erreur."; } else { $resultat = "Echec"; echo "
Un problème est survenu à la création du compte ou son prolongement."; } // Pas d'erreur rencontrée if ($EtatCompte == 0) { ?>