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;
|