1,17 → 1,15 |
<?php |
/* written by steweb57 */ |
require_once("lib/alcasar/freeradius/siteconfig.php"); |
require_once("lib/alcasar/freeradius/ldapconfig.php"); |
/************************************************************************ |
* CONSTANTES AVEC CHEMINS DES FICHIERS DE CONFIGURATION * |
*************************************************************************/ |
/* written by steweb57 & Rexy */ |
/************************************************ |
* CONF FILES * |
*************************************************/ |
|
define ("ALCASAR_RADIUS_SITE", "/etc/raddb/sites-available/alcasar"); |
define ("ALCASAR_RADIUS_MODULE_LDAP", "/etc/raddb/modules/ldap"); |
define ("ALCASAR_RADIUS_SITE", "/etc/raddb/sites-enabled/alcasar"); |
define ("ALCASAR_RADIUS_MODULE_LDAP", "/etc/raddb/mods-available/ldap"); |
define ("ALCASAR_CONF_FILE", "/usr/local/etc/alcasar.conf"); |
|
/**************************************************************** |
* FONCTION ERREUR * |
* ERROR FONCTION * |
*****************************************************************/ |
|
function erreur($er){ |
19,9 → 17,9 |
exit(); |
} |
|
/**************************************************************** |
* VARIABLES DE FORMULAIRE * |
*****************************************************************/ |
/******************************************************** |
* FORM VARIABLES * |
*********************************************************/ |
|
//Récupération des variables de formulaire |
if (isset($_POST['auth_enable'])) $auth_enable = $_POST['auth_enable']; else erreur('Erreur de variable auth_enable'); |
55,18 → 53,15 |
exit("Fichier de configuration du module ldap pour freeradius non présent"); |
} |
if (!is_writable(ALCASAR_RADIUS_SITE)){ |
exit("Vous n'avez pas les droits d'écriture sur le fichier /etc/raddb/sites-available/alcasar"); |
exit("Vous n'avez pas les droits d'écriture sur le fichier /etc/raddb/sites-enabled/alcasar"); |
} |
if (!is_writable(ALCASAR_RADIUS_MODULE_LDAP)){ |
exit("Vous n'avez pas les droits d'écriture sur le fichier /etc/raddb/modules/ldap"); |
exit("Vous n'avez pas les droits d'écriture sur le fichier /etc/raddb/mods-available/ldap"); |
} |
|
/**************************************************************** |
* Fichier ALCASAR_RADIUS_SITE * |
* File sites-enabled/alcasar * |
*****************************************************************/ |
$site = new siteConfig(); |
$site->load(ALCASAR_RADIUS_SITE); |
if ($auth_enable == "1"){ //test $auth_enable |
/* |
ON ACTIVE LE LDAP |
*/ |
76,14 → 71,6 |
fail=1 |
} |
*/ |
if ($site->authorize->ldap === false){ // always test before update |
$site->authorize->addSection('ldap'); |
$site->authorize->ldap->addPair('fail','1'); |
}else{ |
if ($site->authorize->ldap->fail === false){ // always test before update |
$site->authorize->ldap->addPair('fail','1'); |
} |
} |
/* |
Configure authenticate section with |
Auth-Type LDAP { |
90,59 → 77,40 |
ldap |
} |
*/ |
if ($site->authenticate->getSectionInstance('Auth-Type','LDAP')===false){ // always test before update |
$site->authenticate->addSection('Auth-Type', 'LDAP'); |
$site->authenticate->getSectionInstance('Auth-Type','LDAP')->addSection('ldap'); |
} |
} else { |
/* |
ON DESACTIVE LE LDAP |
*/ |
if ($site->authorize->ldap !== false){ // always test before update |
$site->authorize->deleteSection("ldap"); |
} |
if ($site->authenticate->getSectionInstance('Auth-Type','LDAP')!==false){ // always test before update |
$site->authenticate->deleteSection('Auth-Type','LDAP'); |
} |
} |
//Sauvegarde du /etc/raddb/sites-available/alcasar |
$site->save(ALCASAR_RADIUS_SITE); |
|
/**************************************************************** |
* Fichier ALCASAR_RADIUS_MODULE_LDAP * |
* File mods/available/ldap * |
*****************************************************************/ |
//on ne modifie ALCASAR_RADIUS_MODULE_LDAP uniquement si l'authentification ldap est active |
if ($auth_enable == "1"){ //test $auth_enable |
// chargement de la configuration courante |
$ldap = new ldapConfig(); |
$ldap->load(ALCASAR_RADIUS_MODULE_LDAP); |
// mise à jours des données |
//$ldap->server = $ldap_server; |
$ldap->host = $ldap_server; |
$ldap->identity = $ldap_user; |
$ldap->password = $ldap_password; |
$ldap->basedn = $ldap_base_dn; |
//$ldap->host = $ldap_server; |
//$ldap->identity = $ldap_user; |
//$ldap->password = $ldap_password; |
//$ldap->basedn = $ldap_base_dn; |
//$ldap->filter = $ldap_filter; |
$ldap->uid = $ldap_filter; |
$ldap->base_filter = $ldap_base_filter; |
//sauvegarde du fichier /etc/raddb/modules/ldap |
$ldap->save(ALCASAR_RADIUS_MODULE_LDAP); |
} //test $auth_enable |
//$ldap->uid = $ldap_filter; |
//$ldap->base_filter = $ldap_base_filter; |
|
/******************************************************** |
* Redémarage des service * |
* File modification & services restart * |
*********************************************************/ |
|
//test d'accès au serveur |
//si réussite |
// - écriture config ldap complète dans alcasar.conf |
// - appel script-shell (alcasar-ldap.sh) |
// - modif des 2 fichier ci-dessus |
// - actions si dessous |
if ($auth_enable == "1") { |
file_put_contents(ALCASAR_CONF_FILE, str_replace('LDAP=off', 'LDAP=on', file_get_contents(ALCASAR_CONF_FILE))); |
exec("sed -i \"s/^LDAP_IP=.*/LDAP_IP=$ldap_server/g\" ".ALCASAR_CONF_FILE); |
exec("ln -s /etc/raddb/mods-available/ldap /etc/raddb/mods-enabled/ldap"); |
} |
else { |
file_put_contents(ALCASAR_CONF_FILE, str_replace('LDAP=on', 'LDAP=off', file_get_contents(ALCASAR_CONF_FILE))); |
exec("sed -i \"s/^LDAP_IP=.*/LDAP_IP=0.0.0.0/g\" ".ALCASAR_CONF_FILE); |
exec("rm -f /etc/raddb/mods-enabled/ldap"); |
} |
exec("sudo /usr/local/bin/alcasar-iptables.sh"); |
exec("sudo /usr/bin/systemctl restart radiusd"); |
#exec("sudo /usr/local/bin/alcasar-iptables.sh"); |
#exec("sudo /usr/bin/systemctl restart radiusd"); |
|
/**************************************************************** |
* Redirection vers la page de configuration LDAP * |