2023-09-05 09:10:15 +02:00
|
|
|
<?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>
|