Subversion Repositories ALCASAR

Compare Revisions

Ignore whitespace Rev 2452 → Rev 2453

/web/acc/admin/ldap.php
1,7 → 1,7
<?php
# $Id$
 
/* written by steweb57 & Rexy */
/* written by steweb57, Rexy & Tom HOUDAYER */
/****************************************************************
* GLOBAL FILE PATHS *
*****************************************************************/
210,7 → 210,7
// LDAP configuration params
$ldap_status = ($conf['LDAP'] === 'on');
$ldap_server = $conf['LDAP_SERVER'];
$ldap_identity = $conf['LDAP_USER'];
$ldap_user = $conf['LDAP_USER'];
$ldap_password = $conf['LDAP_PASSWORD'];
$ldap_base_dn = $conf['LDAP_BASE'];
$ldap_filter = $conf['LDAP_UID'];
229,9 → 229,47
$new_ldap_server = $ldap_server;
}
if ($ldap_status) {
$serverCheckResult = ldap_checkServerConfig($new_ldap_server, $ldap_identity, $ldap_password, $ldap_base_dn, $ldap_filter);
$serverCheckResult = ldap_checkServerConfig($new_ldap_server, $ldap_user, $ldap_password, $ldap_base_dn, $ldap_filter);
}
 
// AJAX LDAP configuration checker
if (isset($_GET['conf_check'])) {
$response = [
'enable' => $ldap_status
];
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_filter'])) $ldap_filter = $_POST['ldap_filter']; else array_push($varErrors, 'Variable error "ldap_filter"');
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"');
}
 
// Validation
if (isset($ldap_server)) {
if ((!preg_match('/^([0-9]{1,3}\.){3}([0-9]{1,3})$/', $ldap_server)) && (preg_match('/^[a-zA-Z0-9-_.]+$/', $ldap_server))) {
$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');
}
}
 
$response['result'] = (ldap_checkServerConfig($ldap_server, $ldap_user, $ldap_password, $ldap_base_dn, $ldap_filter) > 0);
 
if (!empty($varErrors)) {
$response['errors'] = $varErrors;
}
}
 
header('Content-Type: application/json');
echo json_encode($response);
exit();
}
 
?>
<!DOCTYPE html>
<html>
245,7 → 283,7
function onLdapStatusChange() {
var listToDisables = ['ldap_server', 'ldap_dn', 'ldap_filter', 'ldap_base_filter', 'ldap_user', 'ldap_password'];
 
if (document.getElementById("auth_enable").value === '1') {
if (document.getElementById('auth_enable').value === '1') {
for (var i=0; i<listToDisables.length; i++) {
document.getElementById(listToDisables[i]).style.backgroundColor = '#ffffff';
document.getElementById(listToDisables[i]).disabled = false;
257,6 → 295,48
}
}
}
 
function checkConfig() {
var ldap_config = {
ldap_status: (document.getElementById('auth_enable').value === '1'),
ldap_server: document.getElementById('ldap_server').value,
ldap_user: document.getElementById('ldap_user').value,
ldap_password: document.getElementById('ldap_password').value,
ldap_base_dn: document.getElementById('ldap_dn').value,
ldap_filter: document.getElementById('ldap_filter').value,
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('&');
 
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (this.readyState == 4) {
if (this.status == 200) {
var data = JSON.parse(this.responseText);
 
if (data.result === true) {
alert('Configuration valide');
} else {
alert('Configuration non valide');
}
 
if (typeof data.errors !== 'undefined') {
alert(data.errors.join("\n"));
}
 
console.log(data)
} else {
console.log(this.responseText)
}
}
};
xhr.open('POST', 'ldap.php?conf_check', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send(params);
}
</script>
</head>
<body onLoad="onLdapStatusChange();">
343,7 → 423,7
<?= $l_ldap_user_text ?>
</dt>
<dd>
<input id="ldap_user" size="40" name="ldap_user" value="<?= htmlspecialchars($ldap_identity) ?>">
<input id="ldap_user" size="40" name="ldap_user" value="<?= htmlspecialchars($ldap_user) ?>">
</dd>
</dl>
<dl>
358,6 → 438,7
<p>
<input id="submit" type="submit" value="<?= $l_ldap_submit ?>" name="submit">
<input id="reset" type="reset" value="<?= $l_ldap_reset ?>" name="reset">
<button onclick="checkConfig(); return false;">Check [BETA]</button>
</p>
</fieldset>
</form>