<?php
// pour faire des tests à la main : https://administration-annuaire.ensae.fr/

error_reporting(E_ERROR | E_WARNING | E_PARSE);
header('Content-Type: text/html; charset=utf-8');
$valid_users = array(
	'ensae\\tmouhtadi',
	'ensae\\clagarde',
	'ensae\\fhocde',
	'ensae\\jmerat',
	'ensae\\credentialsensae'
);
$current_user = strtolower( $_SERVER['REMOTE_USER'] );
if( !in_array($current_user, $valid_users) ) {
    header("HTTP/1.1 401 Unauthorized");
	exit("Vous n'êtes pas autorisé. Veuillez contacter le service Informatique.");
}
?>
<!DOCTYPE HTML>
<html>
<head>
<style>
.error {color: #FF0000;}
</style>
</head>
<body> 
<?php

//##############constante############### 
$id = $_POST['id']; // l id est recupere du site inscription en ligne celui ci est retourné sans être touché
//il faut simuler la date d'expiration dans l'AD et récupérer la valeur générée dans l'attribut (AccountExpires). 
// le 30 juin 2024 pour une rentrée en 2022
// 30/06/2025
$DateExpiration = "133957944000000000";
$wifi = "CN=ClearPass-ETUDIANT,OU=Comptes de service,OU=Genes,DC=ensae,DC=fr";
$PromotionsENSAE = "CN=PromotionsENSAE,OU=Groupes,OU=Eleves,OU=ENSAE,OU=Genes,DC=ensae,DC=fr";
$MesDossiers = "CN=MesDossiers_Paradis,OU=Comptes et groupes systèmes,OU=Genes,DC=ensae,DC=fr";
// Les groupes doivent etre tous dans la meme OU et utiliser ce chemin :
$BaseGroupe = ",OU=Groupes,OU=Eleves,OU=ENSAE,OU=Genes,DC=ensae,DC=fr";
//changer simplement l année
$BaseUtilisateur = "OU=2023,OU=Utilisateurs,OU=Eleves,OU=ENSAE,OU=Genes,DC=ensae,DC=fr";
$datetime = date("d-m-Y H:i:s");

//#######################################
$EtudiantMail=$_POST['EtudiantMail'];

//alias email si on souhaite rajouter une adresse supplementaire
$alias=$_POST['alias'];
// ###################################################
//EtatCompte est utilise pour savoir si c est un nouveau compte ou un prolongement de compte 0 = Nouveau et 1 = Prolongement
if(empty($_POST['EtatCompte'])) {
$EtatCompte = 0;	
} else {
$EtatCompte=$_POST['EtatCompte'];
}


// Variables pour connexion LDAPs
$ldapserver = "ldaps://172.16.110.10";
$ldapuser      = "ensae\administrationannuai";
$ldappass     = "************";
$ldapdn = "OU=Genes,DC=ensae,DC=fr";



if(isset($_POST['voie']))
$voie=$_POST['voie'];

if(isset($_POST['nom']))
	$nom=$_POST['nom'];
else $nom="";

if(isset($_POST['prenom']))
	$prenom=$_POST['prenom'];
else $prenom="";

// Si on souhaite ajouter la condition de l'appartenance a un groupe : if(empty($nom) OR empty($prenom) OR empty($voie))
if(empty($nom) OR empty($prenom)) 
    {
			if($EtatCompte == 0){
    echo '<font color="red">Attention,un champ est vide, nous ne pouvons poursuivre la demande. </font>'; 
	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 "</br>";
			echo "Votre login est ".$login;	
			echo "</br>";
			$password = generateStrongPassword();
			echo "Votre mot de passe est : ".$password;
			echo "</br>";
			echo "Votre adresse email est ".$email;
			echo "</br>";			
			$N = count($voie);
			echo("Selection de $N voie(s): ");
			echo "</br>";
			for($i=0; $i < $N; $i++)
			{
			  echo($voie[$i] . "<br>");
			}
			echo "</br>";
			echo '</br><a href="#" OnClick="javascript:window.print()">Imprimer</a>';
			
			
			 foreach($voie as $value)
				{
				  echo '<input type="hidden" name="voie[]" value="'. $value. '">';
				}  */
			

		}
		
		
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...<br /><br />";
 //echo "</br>".$login;       
//echo "</br>".$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 "</br>".$data2['count'];
		//echo "</br>".$data['count'];
		$ResultMailExist = ldap_get_entries($ldapconn, $SearchMailExist);
		
		// SHOW ALL DATA
       // echo '<h1>Dump all data</h1><pre>';
		//print_r($ResultMailExist);  
		//echo '</pre>';
		//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"] ."<br />";
				//echo "User: ". $data[$i]["cn"][0] ."<br />";
				if(isset($data[$i]["mail"][0]))
				{
					$mail = $data[$i]["mail"][0];
					//echo '<h1>LE COMPTE EXISTE</h1>';
					//echo "Le mail ". $mail ." existe. <br /><br />";
				}
			}
			
		for ($j=0; $j<$data2["count"]; $j++) 
			{
				if(isset($data2[$j]["samaccountname"][0]))
				{
					$logon = $data2[$j]["samaccountname"][0];
					//echo '<h1>LE COMPTE exsite_email</h1>';
					//echo "Le compte ". $logon ." exsite. <br /><br />";					
				}
			}
					// 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 "</br>Nombre d email existant".$exsite_email ;
					echo "</br>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</br>";
										//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 "</br>";
							$entry["member"] = $basedn;
							$result_group = @ldap_mod_add($ldapconn, $dn, $entry);
								if ($result_group == false) { 
								echo "ERREUR RENCONTREE DANS L AJOUT DES GROUPES/VOIES</br>";
								$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 "</br>Bonjour ".$prenom." ".$nom ;
					echo "</br>";
					echo "Votre login est ".$login;	
					echo "</br>";
					echo "Votre mot de passe est : ".$newPassword;
					echo "</br>";
					echo "Votre adresse email est ".$email;
					echo "</br>";			
					$N = count($voie);
					echo("Selection de $N voie(s): ");
					echo "</br>";
					
					for($i=0; $i < $N; $i++)
					{
					  echo($voie[$i] . "<br>");
					}
					
					//echo '</br><a href="#" OnClick="javascript:window.print()">Imprimer</a>';
				
				
				
				} 
				//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 </br>";
									$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."</br>";
									
									$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</br>";
										$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 "</br>";
											$entry["member"] = $basedn;
											$result_group = @ldap_mod_add($ldapconn, $dn, $entry);
												if ($result_group == false) { 
												echo "ERREUR RENCONTREE DANS L AJOUT DES GROUPES/VOIES</br>";
												 
											}
										}
										// 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 "<pre>";
												
												//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 "</br>";
									echo "Votre login est ".$login;	
									echo "</br>";
									echo "Votre mot de passe est : ".$newPassword;
									echo "</br>";
									echo "Votre adresse email est ".$email;
									echo "</br>";			
									$N = count($voie);
									echo("Selection de $N voie(s): ");
									echo "</br>";
									for($i=0; $i < $N; $i++)
									{
									  echo($voie[$i] . "<br>");
									}
									//echo '</br><a href="#" OnClick="javascript:window.print()">Imprimer</a>';	
								}
								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 "</br>Date d expiration actuelle : ".$ResultMailExist[0]['accountexpires'][0]."</br>";
									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 "</br>Prolongement effectué</br>";
													$resultatprolongation = 0;
													
												} else {
													echo "<b><span style='color:red;'> Erreur rencontré sur le prolongement</span></b></br>";
													echo "</br>debug : mail reçu : ".$EtudiantMail."</br>";
													
													$resultatprolongation = 1;
												}
									
									
									// on ajoute les nouveaux groupes à l'utilisateur
									$N = count($voie);
									
									echo "Nombre de groupe selectionné : ".$N."</br>";
										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 "</br>Ajout du groupe : ".$voie[$i]."</br>";
													 
												} else {  echo "L'utilisateur est probablement déjà membre du groupe ".$voie[$i]."</br>"; } 
												
											
											}
											
											$promoENSAE['member'] = $ResultMailExist[0]['distinguishedname'][0];
											
											$result_promoENSAE = @ldap_mod_add($ldapconn, $PromotionsENSAE, $promoENSAE);
											
											if ($result_promoENSAE == true) { 
													echo "Ajout du groupe : PromotionsENSAE</br>";
													 
												} else { echo "L'utilisateur est probablement déjà membre du groupe PromotionsENSAE </br>"; } 
											$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)</br>";
													 
												} else { echo "L'utilisateur est probablement déjà membre du groupe Wifi </br>"; } 
								
									// 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 "</br>L'ajout du compte à été réalisé sans erreur.";		
				
		} else {
			$resultat = "Echec";
			echo "</br>Un problème est survenu à la création du compte ou son prolongement.";
		}
		
// Pas d'erreur rencontrée
if ($EtatCompte == 0) { 		
?>
<form action="https://inscription.ensae.fr/index.php/comptead/retour" id="formAD" name="formAD" method="post" accept-charset="utf-8" enctype="multipart/form-data">

<input type="hidden" name="resultat" value="<?php echo $resultat; ?>" />
<input type="hidden" name="id" value="<?php echo $id; ?>" />
<input type="hidden" name="login" value="<?php echo $login; ?>" />
<input type="hidden" name="email" value="<?php echo $email; ?>" />
<input type="hidden" name="password" value="<?php echo $password; ?>" />
<input type="submit"/>
</form>
<!--script>formAD.submit();</script-->				
	<?php			
}
// si erreur rencontrée
if ($EtatCompte == 1) {
?>

<form action="https://inscription.ensae.fr/index.php/comptead/retour" id="formAD" name="formAD" method="post" accept-charset="utf-8" enctype="multipart/form-data">
<input type="hidden" name="resultat" value="<?php echo $resultat; ?>" />
<input type="hidden" name="id" value="<?php echo $id; ?>" />
<input type="hidden" name="email" value="<?php echo $email; ?>" />
<input type="submit"/>
</form>
<?php
}
	
	} else {
				echo "LDAP bind failed...";
			}

}
 
// all done clean up
ldap_close($ldapconn);
?>
</body>
</html>