Subversion Repositories ALCASAR

Compare Revisions

Ignore whitespace Rev 2459 → Rev 2460

/web/acc/admin/ldap.php
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') {
157,7 → 156,7
$varErrors = [];
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_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"');
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,
312,14 → 320,14
ldap_user: document.getElementById('ldap_user').value,
ldap_password: document.getElementById('ldap_password').value,
ldap_base_dn: document.getElementById('ldap_dn').value,
ldap_uid: document.getElementById('ldap_uid').value,
ldap_uid: document.getElementById('ldap_uid').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('&');
 
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 {
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 {
alert('Configuration non valide');
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>
<?= $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>
</div>
<?php endif ?>
<br>
<div style="text-align: center">
<?php if ($messages): ?>
<?= $messages ?>
<?php endif; ?>
</div>
<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>