Created
September 27, 2022 15:30
-
-
Save farestakorabt/5580540be7140f8d4f702af6bff54b3e to your computer and use it in GitHub Desktop.
algo php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// inclusion des fichier | |
require('./functions/functions.php'); | |
include('./src/identifiants.php'); | |
// lecture du fichier de redirections | |
$forwardingFile = file_get_contents('comptes_avec_redirections.txt'); | |
// formatage de notre rendu (la liste des comptes qui ont une redirection) | |
$formattedFileWithoutIntroduction = ''; | |
// suppression de l'introduction | |
if (true === strstr($forwardingFile, 'comptes retournés :')) { | |
$stringToDelete = stristr($forwardingFile, 'comptes retournés :', true) . 'comptes retournés :'; | |
$formattedFileWithoutIntroduction = str_replace($stringToDelete, '' , $forwardingFile); | |
} else { | |
$formattedFileWithoutIntroduction = str_replace('1 compte retourné :', '', $forwardingFile); | |
} | |
// suppression des espaces et des ':' | |
$formattedFile = preg_replace('/\s+/', ' ', str_replace(':', '', trim($formattedFileWithoutIntroduction))); | |
// separation de la string en tableau à partir du mot 'compte' | |
$formattedArrayWithEmptyValues = explode('Compte', $formattedFile); | |
// recuperer toutes les valeurs qui ne sont pas vides | |
$formattedArray = array_filter($formattedArrayWithEmptyValues, function($value) { | |
return !empty($value); | |
}); | |
$formattedArrayWithSplitValues = []; | |
foreach($formattedArray as $value) { | |
$formattedArrayWithSplitValues[] = explode(' ', trim($value)); | |
} | |
if ($ldapconn) { | |
// Connexion au serveur LDAP | |
$ldapBind = ldap_bind($ldapconn, $ldaprdn, $ldappass); | |
// Vérification de l'authentification | |
if ($ldapBind) { | |
echo 'Connexion LDAP réussie...'; | |
} else { | |
echo 'Connexion LDAP échouée...'; | |
} | |
$attributes[0] = 'supannEntiteAffectationPrincipale'; // => ADSI04SX00, AHP, CHE, DOC, MAS, OIP, PSO004SX00, ECO, JAP, HEB, HEI | |
$attributes[1] = 'eduPersonPrimaryAffiliation'; // => poste (ex: staff, student, ) | |
$attributes[2] = 'supannMailPerso'; // => email personnel | |
$ldap_domain = 'ou=people,dc=inalco,dc=fr'; | |
$forwardingAccounts = []; | |
$inalcoAddress = []; | |
$forwardingAddress = []; | |
foreach ($formattedArrayWithSplitValues as $key => $account) { | |
$adr_redirections = handleForwardingAddresses($account); | |
$forwardingAccounts[$account[0]] = $adr_redirections; | |
$filter = "(mail=$account[0])"; | |
$result = ldap_bind($ldapconn, $ldaprdn, $ldappass); | |
$search = ldap_search($ldapconn, $ldap_domain, $filter, $attributes); | |
$results = ldap_get_entries($ldapconn, $search); | |
// Cas où il n'y a pas de résultat retourné par le LDAP = c'est une adresse générique | |
if (count($results) == 0) { | |
// supannmailperso => email personnel | |
// edupersonprimaryaffiliation => profession (staff, etudiant) | |
// $adr_redirections => adresse de redirection dans LDAP | |
// $compte => compte generé du LDAP | |
// $account => compte nommé dans le fichier des redirections | |
// Compare l'adresse perso et la redirection | |
// recuperer toutes les redirections dont les adresses mails | |
// qui ne sont pas les mêmes que celles du dossier | |
// sans prendre en consideration la casse. | |
} else { | |
foreach($results as $compte) { | |
// on verifie toutes les redirections dont l'adresse fournie est différente | |
if (isset($compte['supannmailperso'][0]) { | |
if ($compte['edupersonprimaryaffiliation'][0] == 'staff' && strtolower($compte['supannmailperso'][0]) != $adr_redirections[0]) { | |
echo "Pour le compte ". $account[0]. ", qui fait partie du personnel INALCO, l'adresse de redirection " | |
.$adr_redirections[0]. " est différente de celle du dossier " . $compte['supannmailperso'][0]."\n"; | |
} | |
} | |
&& !strcasecmp($compte['supannmailperso'][0], $adr_redirections[0])) { | |
echo "Pour le compte ".$account[0].", l'adresse de redirection " | |
.$adr_redirections[0]." est différente de celle du dossier ".$compte['supannmailperso'][0]."\n"; | |
// on affiche les redirections de tout le staff INALCO | |
} elseif (isset($compte['supannmailperso'][0]) && ($compte['edupersonprimaryaffiliation'][0] == 'staff')) { | |
echo "Pour le compte ".$account[0]." qui fait partie du personnel INALCO, a comme adresse de redirection : " | |
.$adr_redirections[0]. " . Et, son adresse personnelle est : ".$compte['supannmailperso'][0]."\n"; | |
// recuperer les adresses mails des etudiants en master qui ont une redirection | |
} elseif (isset($compte['supannmailperso'][0]) && (isset($compte['supannentiteaffectationprincipale'])) | |
&& $compte['supannentiteaffectationprincipale'] == 'MAS') { | |
echo "Pour le compte ".$account[0]." qui fait partie des etudiants en master, a comme adresse de redirection : " | |
.$adr_redirections[0]. " . Et, elle son adresse personnelle est : ".$compte['supannmailperso'][0]."\n"; | |
// recuperer les adresses mails des etudiants en doctorat qui ont une redirection (titulaires et contractuels) | |
} elseif (isset($compte['supannmailperso'][0]) && ($compte['supannentiteaffectationprincipale']) == 'MAS') { | |
echo "Pour le compte ".$account[0]." qui fait partie du personnel INALCO, a comme adresse de redirection : " | |
.$adr_redirections[0]. " . Et, elle son adresse personnelle est : ".$compte['supannmailperso'][0]."\n"; | |
} | |
if (isset($compte['supannmailperso'][0]) && isset($compte['supannentiteaffectationprincipale'][0]) | |
&& $compte['supannentiteaffectationprincipale'][0] == 'MAS') { | |
echo "Pour le compte ".$account[0]." qui fait partie des etudiants en master, a comme adresse de redirection : " | |
.$adr_redirections[0]. " . Et, elle son adresse personnelle est : ".$compte['supannmailperso'][0]."\n"; | |
} | |
} | |
} | |
}; | |
}; | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment