| Line 1... |
Line 1... |
| 1 |
<?php
|
1 |
<?php
|
| - |
|
2 |
require_once("lib/alcasar/freeradius/siteconfig.php");
|
| - |
|
3 |
require_once("lib/alcasar/freeradius/ldapconfig.php");
|
| - |
|
4 |
|
| 2 |
/* written by steweb57 */
|
5 |
/* written by steweb57 */
|
| 3 |
/****************************************************************
|
6 |
/****************************************************************
|
| 4 |
* CONSTANTES AVEC CHEMINS DES FICHIERS DE CONFIGURATION *
|
7 |
* CONSTANTES AVEC CHEMINS DES FICHIERS DE CONFIGURATION *
|
| 5 |
*****************************************************************/
|
8 |
*****************************************************************/
|
| 6 |
|
9 |
|
| Line 48... |
Line 51... |
| 48 |
/****************************************************************
|
51 |
/****************************************************************
|
| 49 |
* VARIABLES RESULTATS *
|
52 |
* VARIABLES RESULTATS *
|
| 50 |
*****************************************************************/
|
53 |
*****************************************************************/
|
| 51 |
//Création des variables nécessaires
|
54 |
//Création des variables nécessaires
|
| 52 |
//variables ldap
|
55 |
//variables ldap
|
| 53 |
$ldap = "";
|
56 |
$ldap_on = "";
|
| 54 |
$ldap_server = ""; //IP ou nom DNS du seveur LDAP (ou AD)
|
57 |
$ldap_server = ""; //IP ou nom DNS du seveur LDAP (ou AD)
|
| 55 |
//par défaut : server = "ldap.your.domain"
|
58 |
//par défaut : server = "ldap.your.domain"
|
| 56 |
$ldap_identity = ""; //nom d'utilisateur qui intérroge le ldap (vide = anonyme)
|
59 |
$ldap_identity = ""; //nom d'utilisateur qui intérroge le ldap (vide = anonyme)
|
| 57 |
//par défaut : # identity = "cn=admin,o=My Org,c=UA"
|
60 |
//par défaut : # identity = "cn=admin,o=My Org,c=UA"
|
| 58 |
$ldap_password = ""; //mot de passe de l'utilisateur intérrogeant le ldap
|
61 |
$ldap_password = ""; //mot de passe de l'utilisateur intérrogeant le ldap
|
| Line 64... |
Line 67... |
| 64 |
//par défaut : filter = "(uid=%{Stripped-User-Name:-%{User-Name}})"
|
67 |
//par défaut : filter = "(uid=%{Stripped-User-Name:-%{User-Name}})"
|
| 65 |
$ldap_base_filter = ""; //
|
68 |
$ldap_base_filter = ""; //
|
| 66 |
//par défaut : # base_filter = "(objectclass=radiusprofile)"
|
69 |
//par défaut : # base_filter = "(objectclass=radiusprofile)"
|
| 67 |
|
70 |
|
| 68 |
/********************************************************
|
71 |
/********************************************************
|
| 69 |
* Fichier ALCASAR_RADIUS_SITE *
|
72 |
* Fichier ALCASAR_RADIUS_SITE *
|
| - |
|
73 |
*********************************************************/
|
| - |
|
74 |
$site = new siteConfig();
|
| - |
|
75 |
$site->load(ALCASAR_RADIUS_SITE);
|
| - |
|
76 |
$ldap_on = $site->authorize->ldap;
|
| - |
|
77 |
/********************************************************
|
| - |
|
78 |
* Fichier ALCASAR_RADIUS_MODULE_LDAP *
|
| 70 |
*********************************************************/
|
79 |
*********************************************************/
|
| 71 |
//variables pour le parcourt des fichiers
|
- |
|
| 72 |
//$ouvre : fichier ouvert
|
- |
|
| 73 |
//$tampon : ligne en cours
|
- |
|
| 74 |
//
|
- |
|
| 75 |
//Lecture du fichier /etc/raddb/sites-available/alcasar
|
- |
|
| 76 |
$continue = true;
|
- |
|
| 77 |
$ouvre=fopen(ALCASAR_RADIUS_SITE,"r");
|
- |
|
| 78 |
if ($ouvre){
|
- |
|
| 79 |
while (!feof ($ouvre))
|
- |
|
| 80 |
{
|
- |
|
| 81 |
$tampon = fgets($ouvre, 4096);
|
- |
|
| 82 |
if ((preg_match('`^([\s#]*ldap[\s]*)$`',$tampon))&&$continue){
|
- |
|
| 83 |
//Récupération dans la section authorise de la ligne ldap
|
- |
|
| 84 |
//valeur : ldap = authentification ldap authorisée
|
- |
|
| 85 |
//valeur : #ldap = authentification ldap non authorisée
|
- |
|
| 86 |
//section authenticat utile ?
|
- |
|
| 87 |
//section post-auth non utilisée
|
- |
|
| 88 |
$ldap = trim($tampon);
|
- |
|
| 89 |
$continue = false;//arret de la boucle lorsque l'on trouve le premier élément "ldap" dans le fichier
|
- |
|
| 90 |
}
|
- |
|
| 91 |
}
|
- |
|
| 92 |
}else{
|
- |
|
| 93 |
exit("Erreur d'ouverture du fichier /etc/raddb/sites-available/alcasar");
|
- |
|
| 94 |
}
|
- |
|
| 95 |
fclose($ouvre);
|
- |
|
| 96 |
|
- |
|
| 97 |
/****************************************************************
|
- |
|
| 98 |
* Fichier ALCASAR_RADIUS_MODULE_LDAP *
|
- |
|
| 99 |
*****************************************************************/
|
- |
|
| 100 |
//Lecture du fichier /etc/raddb/modules/ldap
|
80 |
//Lecture du fichier /etc/raddb/modules/ldap
|
| 101 |
$ouvre=fopen(ALCASAR_RADIUS_MODULE_LDAP,"r");
|
- |
|
| 102 |
if ($ouvre){
|
- |
|
| 103 |
while (!feof ($ouvre))
|
- |
|
| 104 |
{
|
- |
|
| 105 |
$tampon = fgets($ouvre, 4096);
|
81 |
$ldap = new ldapConfig();
|
| 106 |
|
- |
|
| 107 |
if (preg_match('`^([\s#]*server(\s*)=)`',$tampon)){
|
82 |
$ldap->load(ALCASAR_RADIUS_MODULE_LDAP);
|
| 108 |
//if (preg_match('`^((\s*)(#*)(\s*)server\b(\s*)=)`i',$tampon)){
|
- |
|
| 109 |
//Récupération de la ligne contenant le paramettre ldap server
|
- |
|
| 110 |
$ldap_server = ltrim($tampon);
|
83 |
$ldap_server = $ldap->server;
|
| 111 |
} elseif (preg_match('`^([\s#]*identity(\s*)=)`',$tampon)){
|
- |
|
| 112 |
//Récupération de la ligne contenant le paramettre ldap identity
|
- |
|
| 113 |
$ldap_identity = ltrim($tampon);
|
84 |
$ldap_identity = $ldap->identity;
|
| 114 |
} elseif (preg_match('`^([\s#]*password(\s*)=)`',$tampon)){
|
- |
|
| 115 |
//Récupération de la ligne contenant le paramettre ldap password
|
- |
|
| 116 |
$ldap_password = ltrim($tampon);
|
85 |
$ldap_password = $ldap->password;
|
| 117 |
} elseif (preg_match('`^([\s#]*basedn(\s*)=)`',$tampon)){
|
- |
|
| 118 |
//Récupération de la ligne contenant le paramettre ldap basedn
|
- |
|
| 119 |
$ldap_basedn = ltrim($tampon);
|
86 |
$ldap_basedn = $ldap->basedn;
|
| 120 |
} elseif (preg_match('`^([\s#]*filter(\s*)=)`',$tampon)){
|
- |
|
| 121 |
//Récupération de la ligne contenant le paramettre ldap filter
|
- |
|
| 122 |
$ldap_filter = ltrim($tampon);
|
87 |
$ldap_filter = $ldap->filter;
|
| 123 |
} elseif (preg_match('`^([\s#]*base_filter(\s*)=)`',$tampon)){
|
- |
|
| 124 |
//Récupération de la ligne contenant le paramettre ldap base_filter
|
- |
|
| 125 |
$ldap_base_filter = ltrim($tampon);
|
88 |
$ldap_base_filter = $ldap->base_filter;
|
| 126 |
}
|
- |
|
| 127 |
}
|
- |
|
| 128 |
}else{
|
- |
|
| 129 |
exit("Erreur d'ouverture du fichier /etc/raddb/modules/ldap");
|
- |
|
| 130 |
}
|
- |
|
| 131 |
fclose($ouvre);
|
- |
|
| 132 |
|
- |
|
| 133 |
//mise en forme des parametres ldap récupérés
|
- |
|
| 134 |
//A FAIRE : test de contrôle des valeurs $tmp[O] pour être sur d'avoir les bonnes lignes du fichier de conf !!!
|
- |
|
| 135 |
|
89 |
|
| 136 |
//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é).
|
- |
|
| 137 |
$tmp = explode("=",$ldap_server,2);
|
- |
|
| 138 |
$ldap_server = str_replace("\"","",$tmp[1]); //suppression des " dans la chaine
|
- |
|
| 139 |
$ldap_server = trim($ldap_server); //suppression des espaces avant et après la chaine
|
- |
|
| 140 |
|
- |
|
| 141 |
$tmp = explode("=",$ldap_identity,2);
|
- |
|
| 142 |
$ldap_identity = str_replace("\"","",$tmp[1]); //suppression des " dans la chaine
|
- |
|
| 143 |
$ldap_identity = trim($ldap_identity); //suppression des espaces avant et après la chaine
|
- |
|
| 144 |
|
- |
|
| 145 |
$tmp = explode("=",$ldap_password,2);
|
- |
|
| 146 |
$ldap_password = str_replace("\"","",$tmp[1]); //suppression des " dans la chaine
|
- |
|
| 147 |
$ldap_password = trim($ldap_password); //suppression des espaces avant et après la chaine
|
- |
|
| 148 |
|
- |
|
| 149 |
$tmp = explode("=",$ldap_basedn,2);
|
- |
|
| 150 |
$ldap_basedn = str_replace("\"","",$tmp[1]); //suppression des " dans la chaine
|
- |
|
| 151 |
$ldap_basedn = trim($ldap_basedn); //suppression des espaces avant et après la chaine
|
- |
|
| 152 |
|
- |
|
| 153 |
$tmp = explode("=",$ldap_filter,3);
|
- |
|
| 154 |
$ldap_filter = str_replace("\"","",$tmp[1]); //suppression des " dans la chaine
|
- |
|
| 155 |
$ldap_filter = trim($ldap_filter); //suppression des espaces avant et après la chaine
|
- |
|
| 156 |
$ldap_filter = str_replace("(","",$ldap_filter);//suppression du ( dans la chaine
|
- |
|
| 157 |
|
- |
|
| 158 |
$tmp = explode("=",$ldap_base_filter,2);
|
- |
|
| 159 |
$ldap_base_filter = str_replace("\"","",$tmp[1]); //suppression des " dans la chaine
|
- |
|
| 160 |
$ldap_base_filter = trim($ldap_base_filter); //suppression des espaces avant et après la chaine
|
- |
|
| 161 |
|
90 |
|
| 162 |
# Choice of language
|
91 |
# Choice of language
|
| 163 |
$Language = 'en';
|
92 |
$Language = 'en';
|
| 164 |
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
|
93 |
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
|
| 165 |
$Langue = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
|
94 |
$Langue = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
|
| Line 288... |
Line 217... |
| 288 |
if ($pos!==false){
|
217 |
if ($pos!==false){
|
| 289 |
$new_ldap_server = explode("//",$ldap_server); //pour discriminer le host et le protocole dans la notation "ldap://192.168.182.10" ou "ldaps://monldap.monentreperise.com"
|
218 |
$new_ldap_server = explode("//",$ldap_server); //pour discriminer le host et le protocole dans la notation "ldap://192.168.182.10" ou "ldaps://monldap.monentreperise.com"
|
| 290 |
} else {
|
219 |
} else {
|
| 291 |
$new_ldap_server = $ldap_server;
|
220 |
$new_ldap_server = $ldap_server;
|
| 292 |
}
|
221 |
}
|
| 293 |
if (($ldap == "ldap") && (function_exists('ldap_connect'))){
|
222 |
if (($ldap_on == "ldap") && (function_exists('ldap_connect'))){
|
| 294 |
echo "<div align='center'><br>";
|
223 |
echo "<div align='center'><br>";
|
| 295 |
switch(ldap_test($new_ldap_server, $ldap_identity, $ldap_password)){
|
224 |
switch(ldap_test($new_ldap_server, $ldap_identity, $ldap_password)){
|
| 296 |
case -2:
|
225 |
case -2:
|
| 297 |
echo "<font color='red'>".$l_ldap_test_connection_failed."</font>";
|
226 |
echo "<font color='red'>".$l_ldap_test_connection_failed."</font>";
|
| 298 |
break;
|
227 |
break;
|