Skip to content

Instantly share code, notes, and snippets.

@farestakorabt
Created September 27, 2022 15:30
Show Gist options
  • Save farestakorabt/5580540be7140f8d4f702af6bff54b3e to your computer and use it in GitHub Desktop.
Save farestakorabt/5580540be7140f8d4f702af6bff54b3e to your computer and use it in GitHub Desktop.
algo php
<?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