141,8 → 141,8 |
$query = $f_ldap_uid."=*"; |
$ldap_result = ldap_search($ldapconn, $f_ldap_basedn, $query); |
if (ldap_search($ldapconn, $f_ldap_basedn, $query)) { |
$ldap_users_number = ldap_count_entries($ldapconn, $ldap_result); |
return $ldap_users_number; |
$ldap_users_count = ldap_count_entries($ldapconn, $ldap_result); |
return ($ldap_users_count + 2); |
} else { |
return 1; |
} |
150,7 → 150,6 |
} |
|
$messages = ''; |
$ldap_can_be_enabled = False; |
|
if (isset($_POST['auth_enable'])) { |
if ($_POST['auth_enable'] === '1') { |
173,11 → 172,9 |
} |
|
if (!empty($varErrors)) { |
$messages .= '<div style="text-align: center"><br>'; |
foreach ($varErrors as $error) { |
$messages .= '<span style="font-weight: bold; color: red;">'.$error.'</span><br>'; |
} |
$messages .= '<br></div>'; |
} else { |
exec('sed -i \'s/^LDAP=.*/LDAP=on/g\' '.CONF_FILE); |
exec('sed -i '.escapeshellarg("s/^LDAP_SERVER=.*/LDAP_SERVER=$ldap_server/g").' '.CONF_FILE); |
188,17 → 185,13 |
exec('sed -i '.escapeshellarg("s/^LDAP_PASSWORD=.*/LDAP_PASSWORD=$ldap_password/g").' '.CONF_FILE); |
exec('sudo /usr/local/bin/alcasar-ldap.sh --on'); |
|
$messages .= '<div style="text-align: center"><br>'; |
$messages .= '<span style="font-weight: bold; color: green;">'.$l_ldap_update.'</span><br>'; |
$messages .= '<br></div>'; |
} |
} else { |
exec('sed -i "s/^LDAP=.*/LDAP=off/g" '.CONF_FILE); |
exec('sudo /usr/local/bin/alcasar-ldap.sh --off'); |
|
$messages .= '<div style="text-align: center"><br>'; |
$messages .= '<span style="font-weight: bold; color: green;">'.$l_ldap_update.'</span><br>'; |
$messages .= '<br></div>'; |
} |
|
// Reload configuration |
237,9 → 230,6 |
} else { |
$new_ldap_server = $ldap_server; |
} |
if ($ldap_status) { |
$serverCheckResult = ldap_checkServerConfig($new_ldap_server, $ldap_user, $ldap_password, $ldap_base_dn, $ldap_uid); |
} |
|
// AJAX LDAP configuration checker |
if (isset($_GET['conf_check'])) { |
249,12 → 239,12 |
if ($ldap_status || ($_SERVER['REQUEST_METHOD'] === 'POST')) { |
$varErrors = []; |
if ($_SERVER['REQUEST_METHOD'] === 'POST') { |
if (isset($_POST['ldap_server'])) $ldap_server = $_POST['ldap_server']; else array_push($varErrors, 'Variable error "ldap_server"'); |
if (isset($_POST['ldap_base_dn'])) $ldap_base_dn = $_POST['ldap_base_dn']; else array_push($varErrors, 'Variable error "ldap_base_dn"'); |
if (isset($_POST['ldap_uid'])) $ldap_uid = $_POST['ldap_uid']; else array_push($varErrors, 'Variable error "ldap_uid"'); |
if (isset($_POST['ldap_base_filter'])) $ldap_base_filter = $_POST['ldap_base_filter']; else array_push($varErrors, 'Variable error "ldap_base_filter"'); |
if (isset($_POST['ldap_user'])) $ldap_user = $_POST['ldap_user']; else array_push($varErrors, 'Variable error "ldap_user"'); |
if (isset($_POST['ldap_password'])) $ldap_password = $_POST['ldap_password']; else array_push($varErrors, 'Variable error "ldap_password"'); |
if (isset($_POST['ldap_server'])) $ldap_server = $_POST['ldap_server']; else array_push($varErrors, 'Variable error "ldap_server"'); // TODO: need to translate |
if (isset($_POST['ldap_base_dn'])) $ldap_base_dn = $_POST['ldap_base_dn']; else array_push($varErrors, 'Variable error "ldap_base_dn"'); // TODO: need to translate |
if (isset($_POST['ldap_uid'])) $ldap_uid = $_POST['ldap_uid']; else array_push($varErrors, 'Variable error "ldap_uid"'); // TODO: need to translate |
if (isset($_POST['ldap_base_filter'])) $ldap_base_filter = $_POST['ldap_base_filter']; else array_push($varErrors, 'Variable error "ldap_base_filter"'); // TODO: need to translate |
if (isset($_POST['ldap_user'])) $ldap_user = $_POST['ldap_user']; else array_push($varErrors, 'Variable error "ldap_user"'); // TODO: need to translate |
if (isset($_POST['ldap_password'])) $ldap_password = $_POST['ldap_password']; else array_push($varErrors, 'Variable error "ldap_password"'); // TODO: need to translate |
} |
|
// Validation |
263,14 → 253,14 |
$ldap_server = gethostbyname($ldap_server); |
} |
if (!preg_match('/^([0-9]{1,3}\.){3}([0-9]{1,3})$/', $ldap_server)) { |
array_push($varErrors, 'Invalid LDAP server IP'); |
array_push($varErrors, 'Invalid LDAP server IP'); // TODO: need to translate |
} |
} |
|
$response['result'] = (ldap_checkServerConfig($ldap_server, $ldap_user, $ldap_password, $ldap_base_dn, $ldap_uid) > 0); |
|
if (!empty($varErrors)) { |
$response['errors'] = $varErrors; |
} else { |
$response['result'] = ldap_checkServerConfig($ldap_server, $ldap_user, $ldap_password, $ldap_base_dn, $ldap_uid); |
} |
} |
|
289,8 → 279,18 |
<link type="text/css" href="/css/acc.css" rel="stylesheet"> |
<link type="text/css" href="/css/ldap.css" rel="stylesheet"> |
<script> |
function onPageLoad() { |
onLdapStatusChange(); |
if (document.getElementById('auth_enable').value === '1') { |
checkConfig(); |
} |
} |
|
function onLdapStatusChange() { |
var listToDisables = ['ldap_server', 'ldap_dn', 'ldap_uid', 'ldap_base_filter', 'ldap_user', 'ldap_password']; |
var formSubmit = document.querySelector('form input[type="submit"]'); |
var btn_checkConf = document.getElementById('btn-checkconf'); |
var isChecked = false; |
|
if (document.getElementById('auth_enable').value === '1') { |
for (var i=0; i<listToDisables.length; i++) { |
297,15 → 297,23 |
document.getElementById(listToDisables[i]).style.backgroundColor = '#ffffff'; |
document.getElementById(listToDisables[i]).disabled = false; |
} |
formSubmit.style.display = 'none'; |
btn_checkConf.style.display = null; |
} else { |
for (var i=0; i<listToDisables.length; i++) { |
document.getElementById(listToDisables[i]).style.backgroundColor = '#c0c0c0'; |
document.getElementById(listToDisables[i]).disabled = true; |
} |
formSubmit.style.display = null; |
btn_checkConf.style.display = 'none'; |
} |
} |
|
function checkConfig() { |
var messagesElem = document.querySelector('fieldset > legend > div:last-child'); |
var formSubmit = document.querySelector('form input[type="submit"]'); |
var btn_checkConf = document.getElementById('btn-checkconf'); |
|
var ldap_config = { |
ldap_status: (document.getElementById('auth_enable').value === '1'), |
ldap_server: document.getElementById('ldap_server').value, |
316,10 → 324,10 |
ldap_base_filter: document.getElementById('ldap_base_filter').value |
}; |
|
console.log(ldap_config); |
|
var params = Object.keys(ldap_config).map( function (k) { return encodeURIComponent(k) + '=' + encodeURIComponent(ldap_config[k]) } ).join('&'); |
|
messagesElem.innerHTML = '<?= 'Checking configuration...' /* TODO: need to translate */ ?>'; |
|
var xhr = new XMLHttpRequest(); |
xhr.onreadystatechange = function() { |
if (this.readyState == 4) { |
326,19 → 334,46 |
if (this.status == 200) { |
var data = JSON.parse(this.responseText); |
|
if (data.result === true) { |
alert('Configuration valide'); |
var messages = ''; |
|
if (typeof data.result !== 'undefined') { |
if (data.result === -2) { |
messages += "<span style=\"color: red\"><?= $l_ldap_test_service_failed ?></span>"; |
} else { |
alert('Configuration non valide'); |
messages += "<span style=\"color: green\"><?= $l_ldap_test_service_ok ?></span>"; |
if (data.result === -1) { |
messages += "<br><span style=\"color: red\"><?= $l_ldap_test_connection_failed ?></span>"; |
} else { |
messages += "<br><span style=\"color: green\"><?= $l_ldap_test_connection_ok ?></span>"; |
if (data.result === 0) { |
messages += "<br><span style=\"color: red\"><?= $l_ldap_test_bind_failed ?></span>"; |
} else { |
messages += "<br><span style=\"color: green\"><?= $l_ldap_test_bind_ok ?></span>"; |
if (data.result === 1) { |
messages += "<br><span style=\"color: red\"><?= $l_ldap_test_dn_failed ?></span>"; |
} else { |
messages += "<br><span style=\"color: green\"><?= $l_ldap_test_dn_ok ?> (" + (data.result - 2) + " <?= $l_ldap_entries?>)</span>"; |
} |
} |
} |
} |
} |
|
if (data.result > 1) { |
formSubmit.style.display = null; |
btn_checkConf.style.display = 'none'; |
} else { |
formSubmit.style.display = 'none'; |
btn_checkConf.style.display = null; |
} |
|
if (typeof data.errors !== 'undefined') { |
alert(data.errors.join("\n")); |
messages = '<span style=\"color: red\">' + data.errors.join('</span><br><span style=\"color: red\">') + '</span><br>'; |
} |
|
console.log(data) |
messagesElem.innerHTML = messages; |
} else { |
console.log(this.responseText) |
messagesElem.innerHTML = 'server error'; |
} |
} |
}; |
348,7 → 383,7 |
} |
</script> |
</head> |
<body onLoad="onLdapStatusChange();"> |
<body onLoad="onPageLoad();"> |
<div class="panel"> |
<div class="panel-header"><?= $l_ldap_legend ?></div> |
<div class="panel-body"> |
355,34 → 390,13 |
<form name="config_ldap" method="POST" action="<?= htmlspecialchars($_SERVER['PHP_SELF']) ?>"> |
<fieldset> |
<legend> |
<br> |
<div style="text-align: center"> |
<?php if ($messages): ?> |
<?= $messages ?> |
<?php if ($ldap_status): ?> |
<div style="text-align: center"><br> |
<?php if ($serverCheckResult === -2): ?> |
<span style="color: red"><?= $l_ldap_test_service_failed ?></span> |
<?php elseif ($serverCheckResult === -1): ?> |
<span style="color: green"><?= $l_ldap_test_service_ok ?></span><br> |
<span style="color: red"><?= $l_ldap_test_connection_failed ?></span> |
<?php elseif ($serverCheckResult === 0): ?> |
<span style="color: green"><?= $l_ldap_test_service_ok ?></span><br> |
<span style="color: green"><?= $l_ldap_test_connection_ok ?></span><br> |
<span style="color: red"><?= $l_ldap_test_bind_failed ?></span> |
<?php elseif ($serverCheckResult === 1): ?> |
<span style="color: green"><?= $l_ldap_test_service_ok ?></span><br> |
<span style="color: green"><?= $l_ldap_test_connection_ok ?></span><br> |
<span style="color: green"><?= $l_ldap_test_bind_ok ?></span><br> |
<span style="color: red"><?= $l_ldap_test_dn_failed ?></span> |
<?php elseif ($serverCheckResult > 1): ?> |
<span style="color: green"><?= $l_ldap_test_service_ok ?></span><br> |
<span style="color: green"><?= $l_ldap_test_connection_ok ?></span><br> |
<span style="color: green"><?= $l_ldap_test_bind_ok ?></span><br> |
<span style="color: green"><?= $l_ldap_test_dn_ok." ($serverCheckResult $l_ldap_entries)"; $ldap_can_be_enabled = True;?></span> |
<?php else: ?> |
<span><?= $l_ldap_error ?></span> |
<?php endif ?> |
<br><br> |
<?php endif; ?> |
</div> |
<?php endif ?> |
<div style="text-align: center"></div> |
</legend> |
<dl> |
<dt> |
401,7 → 415,7 |
<?= $l_ldap_server_text ?> |
</dt> |
<dd> |
<input id="ldap_server" size="40" name="ldap_server" value="<?= htmlspecialchars($ldap_server) ?>"> |
<input id="ldap_server" size="40" name="ldap_server" value="<?= htmlspecialchars($ldap_server) ?>" oninput="onLdapStatusChange();"> |
</dd> |
</dl> |
<dl> |
410,7 → 424,7 |
<?= $l_ldap_base_dn_text ?> |
</dt> |
<dd> |
<input id="ldap_dn" size="40" name="ldap_base_dn" value="<?= htmlspecialchars($ldap_base_dn) ?>"> |
<input id="ldap_dn" size="40" name="ldap_base_dn" value="<?= htmlspecialchars($ldap_base_dn) ?>" oninput="onLdapStatusChange();"> |
</dd> |
</dl> |
<dl> |
419,7 → 433,7 |
<?= $l_ldap_uid_text ?> |
</dt> |
<dd> |
<input id="ldap_uid" size="40" name="ldap_uid" value="<?= htmlspecialchars($ldap_uid) ?>"> |
<input id="ldap_uid" size="40" name="ldap_uid" value="<?= htmlspecialchars($ldap_uid) ?>" oninput="onLdapStatusChange();"> |
</dd> |
</dl> |
<dl> |
428,7 → 442,7 |
<?= $l_ldap_base_filter_text ?> |
</dt> |
<dd> |
<input id="ldap_base_filter" size="40" name="ldap_base_filter" value="<?= htmlspecialchars($ldap_base_filter) ?>"> |
<input id="ldap_base_filter" size="40" name="ldap_base_filter" value="<?= htmlspecialchars($ldap_base_filter) ?>" oninput="onLdapStatusChange();"> |
</dd> |
</dl> |
<dl> |
437,7 → 451,7 |
<?= $l_ldap_user_text ?> |
</dt> |
<dd> |
<input id="ldap_user" size="40" name="ldap_user" value="<?= htmlspecialchars($ldap_user) ?>"> |
<input id="ldap_user" size="40" name="ldap_user" value="<?= htmlspecialchars($ldap_user) ?>" oninput="onLdapStatusChange();"> |
</dd> |
</dl> |
<dl> |
446,12 → 460,12 |
<?= $l_ldap_password_text ?> |
</dt> |
<dd> |
<input id="ldap_password" type="password" size="40" name="ldap_password" value="<?= htmlspecialchars($ldap_password) ?>"> |
<input id="ldap_password" type="password" size="40" name="ldap_password" value="<?= htmlspecialchars($ldap_password) ?>" oninput="onLdapStatusChange();"> |
</dd> |
</dl> |
<p> |
<input id="submit" type="submit" value="<?= $l_ldap_submit ?>" name="submit"> |
<? if ($ldap_can_be_enabled === True) {echo "<input id=\"push_config\" value=\"$l_ldap_push_config\" name=\"push_config_button\">";}?> |
<button id="btn-checkconf" onclick="checkConfig(); return false;"><?= 'Check' /* TODO: need to translate */ ?></button> |
<input id="submit" type="submit" value="<?= $l_ldap_submit ?>" name="submit" title="<?= 'You need to check before submit' /* TODO: need to translate */ ?>"> |
</p> |
</fieldset> |
</form> |