Subversion Repositories ALCASAR

Compare Revisions

Ignore whitespace Rev 774 → Rev 775

/web/acc/admin/ldap.php
1,4 → 1,7
<?php
require_once("lib/alcasar/freeradius/siteconfig.php");
require_once("lib/alcasar/freeradius/ldapconfig.php");
 
/* written by steweb57 */
/****************************************************************
* CONSTANTES AVEC CHEMINS DES FICHIERS DE CONFIGURATION *
50,7 → 53,7
*****************************************************************/
//Création des variables nécessaires
//variables ldap
$ldap = "";
$ldap_on = "";
$ldap_server = ""; //IP ou nom DNS du seveur LDAP (ou AD)
//par défaut : server = "ldap.your.domain"
$ldap_identity = ""; //nom d'utilisateur qui intérroge le ldap (vide = anonyme)
66,99 → 69,25
//par défaut : # base_filter = "(objectclass=radiusprofile)"
 
/********************************************************
* Fichier ALCASAR_RADIUS_SITE *
* Fichier ALCASAR_RADIUS_SITE *
*********************************************************/
//variables pour le parcourt des fichiers
//$ouvre : fichier ouvert
//$tampon : ligne en cours
//
//Lecture du fichier /etc/raddb/sites-available/alcasar
$continue = true;
$ouvre=fopen(ALCASAR_RADIUS_SITE,"r");
if ($ouvre){
while (!feof ($ouvre))
{
$tampon = fgets($ouvre, 4096);
if ((preg_match('`^([\s#]*ldap[\s]*)$`',$tampon))&&$continue){
//Récupération dans la section authorise de la ligne ldap
//valeur : ldap = authentification ldap authorisée
//valeur : #ldap = authentification ldap non authorisée
//section authenticat utile ?
//section post-auth non utilisée
$ldap = trim($tampon);
$continue = false;//arret de la boucle lorsque l'on trouve le premier élément "ldap" dans le fichier
}
}
}else{
exit("Erreur d'ouverture du fichier /etc/raddb/sites-available/alcasar");
}
fclose($ouvre);
 
/****************************************************************
* Fichier ALCASAR_RADIUS_MODULE_LDAP *
*****************************************************************/
$site = new siteConfig();
$site->load(ALCASAR_RADIUS_SITE);
$ldap_on = $site->authorize->ldap;
/********************************************************
* Fichier ALCASAR_RADIUS_MODULE_LDAP *
*********************************************************/
//Lecture du fichier /etc/raddb/modules/ldap
$ouvre=fopen(ALCASAR_RADIUS_MODULE_LDAP,"r");
if ($ouvre){
while (!feof ($ouvre))
{
$tampon = fgets($ouvre, 4096);
if (preg_match('`^([\s#]*server(\s*)=)`',$tampon)){
//if (preg_match('`^((\s*)(#*)(\s*)server\b(\s*)=)`i',$tampon)){
//Récupération de la ligne contenant le paramettre ldap server
$ldap_server = ltrim($tampon);
} elseif (preg_match('`^([\s#]*identity(\s*)=)`',$tampon)){
//Récupération de la ligne contenant le paramettre ldap identity
$ldap_identity = ltrim($tampon);
} elseif (preg_match('`^([\s#]*password(\s*)=)`',$tampon)){
//Récupération de la ligne contenant le paramettre ldap password
$ldap_password = ltrim($tampon);
} elseif (preg_match('`^([\s#]*basedn(\s*)=)`',$tampon)){
//Récupération de la ligne contenant le paramettre ldap basedn
$ldap_basedn = ltrim($tampon);
} elseif (preg_match('`^([\s#]*filter(\s*)=)`',$tampon)){
//Récupération de la ligne contenant le paramettre ldap filter
$ldap_filter = ltrim($tampon);
} elseif (preg_match('`^([\s#]*base_filter(\s*)=)`',$tampon)){
//Récupération de la ligne contenant le paramettre ldap base_filter
$ldap_base_filter = ltrim($tampon);
}
}
}else{
exit("Erreur d'ouverture du fichier /etc/raddb/modules/ldap");
}
fclose($ouvre);
$ldap = new ldapConfig();
$ldap->load(ALCASAR_RADIUS_MODULE_LDAP);
$ldap_server = $ldap->server;
$ldap_identity = $ldap->identity;
$ldap_password = $ldap->password;
$ldap_basedn = $ldap->basedn;
$ldap_filter = $ldap->filter;
$ldap_base_filter = $ldap->base_filter;
 
//mise en forme des parametres ldap récupérés
//A FAIRE : test de contrôle des valeurs $tmp[O] pour être sur d'avoir les bonnes lignes du fichier de conf !!!
 
//pas de test de la variable ldap car tester dans la comparaison du formulaire ci-dessous (si $ldap = "ldap" authentification LDAP activée, elle est désactivé).
$tmp = explode("=",$ldap_server,2);
$ldap_server = str_replace("\"","",$tmp[1]); //suppression des " dans la chaine
$ldap_server = trim($ldap_server); //suppression des espaces avant et après la chaine
 
$tmp = explode("=",$ldap_identity,2);
$ldap_identity = str_replace("\"","",$tmp[1]); //suppression des " dans la chaine
$ldap_identity = trim($ldap_identity); //suppression des espaces avant et après la chaine
 
$tmp = explode("=",$ldap_password,2);
$ldap_password = str_replace("\"","",$tmp[1]); //suppression des " dans la chaine
$ldap_password = trim($ldap_password); //suppression des espaces avant et après la chaine
 
$tmp = explode("=",$ldap_basedn,2);
$ldap_basedn = str_replace("\"","",$tmp[1]); //suppression des " dans la chaine
$ldap_basedn = trim($ldap_basedn); //suppression des espaces avant et après la chaine
 
$tmp = explode("=",$ldap_filter,3);
$ldap_filter = str_replace("\"","",$tmp[1]); //suppression des " dans la chaine
$ldap_filter = trim($ldap_filter); //suppression des espaces avant et après la chaine
$ldap_filter = str_replace("(","",$ldap_filter);//suppression du ( dans la chaine
 
$tmp = explode("=",$ldap_base_filter,2);
$ldap_base_filter = str_replace("\"","",$tmp[1]); //suppression des " dans la chaine
$ldap_base_filter = trim($ldap_base_filter); //suppression des espaces avant et après la chaine
 
# Choice of language
$Language = 'en';
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
290,7 → 219,7
} else {
$new_ldap_server = $ldap_server;
}
if (($ldap == "ldap") && (function_exists('ldap_connect'))){
if (($ldap_on == "ldap") && (function_exists('ldap_connect'))){
echo "<div align='center'><br>";
switch(ldap_test($new_ldap_server, $ldap_identity, $ldap_password)){
case -2: