mirror of
https://github.com/pfsense/pfsense.git
synced 2025-10-26 11:38:35 +00:00
Add LDAP test functions to verify that the LDAP settings are correct.
Return the OU's and show to the user after test completion.
This commit is contained in:
parent
ffe2f910c4
commit
4848bc7529
@ -608,7 +608,42 @@ function passwd_backed($username, $passwd) {
|
||||
return false;
|
||||
}
|
||||
|
||||
function ldap_get_user_ous() {
|
||||
function ldap_test_connection() {
|
||||
global $config, $g;
|
||||
|
||||
$ldapserver = $config['system']['webgui']['ldapserver'];
|
||||
$ldapbindun = $config['system']['webgui']['ldapbindun'];
|
||||
$ldapbindpw = $config['system']['webgui']['ldapbindpw'];
|
||||
|
||||
if (!($ldap = ldap_connect($ldapserver))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function ldap_test_bind() {
|
||||
global $config, $g;
|
||||
|
||||
$ldapserver = $config['system']['webgui']['ldapserver'];
|
||||
$ldapbindun = $config['system']['webgui']['ldapbindun'];
|
||||
$ldapbindpw = $config['system']['webgui']['ldapbindpw'];
|
||||
|
||||
if (!($ldap = ldap_connect($ldapserver))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);
|
||||
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
|
||||
|
||||
if (!($res = @ldap_bind($ldap, $ldapbindun, $ldapbindpw))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function ldap_get_user_ous($show_complete_ou=false) {
|
||||
global $config, $g;
|
||||
|
||||
$ldapserver = $config['system']['webgui']['ldapserver'];
|
||||
@ -640,11 +675,16 @@ function ldap_get_user_ous() {
|
||||
$ous = array();
|
||||
|
||||
foreach($info as $inf) {
|
||||
if(!$show_complete_ou) {
|
||||
$inf_split = split(",", $inf['dn']);
|
||||
$ou = $inf_split[0];
|
||||
$ou = str_replace("OU=","", $ou);
|
||||
if($ou)
|
||||
$ous[] = $ou;
|
||||
} else {
|
||||
if($inf)
|
||||
$ou = $inf['dn'];
|
||||
}
|
||||
if($ou)
|
||||
$ous[] = $ou;
|
||||
}
|
||||
|
||||
return $ous;
|
||||
|
||||
@ -31,6 +31,9 @@
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
if($_POST['savetest'])
|
||||
$save_and_test = true;
|
||||
|
||||
require("guiconfig.inc");
|
||||
|
||||
$pconfig['session_timeout'] = &$config['system']['webgui']['session_timeout'];
|
||||
@ -46,7 +49,7 @@ $pgtitle = array("System","User manager settings");
|
||||
|
||||
if ($_POST) {
|
||||
unset($input_errors);
|
||||
|
||||
|
||||
/* input validation */
|
||||
$reqdfields = explode(" ", "session_timeout");
|
||||
$reqdfieldsn = explode(",", "Session Timeout");
|
||||
@ -63,12 +66,6 @@ if ($_POST) {
|
||||
if ($timeout > 999)
|
||||
$input_errors[] = gettext("Session timeout must be an integer with value 1 or greater.");
|
||||
|
||||
/* if this is an AJAX caller then handle via JSON */
|
||||
if (isAjax() && is_array($input_errors)) {
|
||||
input_errors2Ajax($input_errors);
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
if (!$input_errors) {
|
||||
|
||||
@ -112,7 +109,6 @@ if ($_POST) {
|
||||
$retval = system_password_configure();
|
||||
sync_webgui_passwords();
|
||||
|
||||
pfSenseHeader("system_usermanager_settings.php");
|
||||
}
|
||||
}
|
||||
|
||||
@ -123,6 +119,16 @@ include("head.inc");
|
||||
<?php include("fbegin.inc");?>
|
||||
<?php if ($input_errors) print_input_errors($input_errors);?>
|
||||
<?php if ($savemsg) print_info_box($savemsg);?>
|
||||
|
||||
<?php
|
||||
if($save_and_test) {
|
||||
echo "<script language='javascript'>\n";
|
||||
echo "myRef = window.open('system_usermanager_settings_test.php','mywin', ";
|
||||
echo "'left=20,top=20,width=500,height=500,toolbar=1,resizable=0');\n";
|
||||
echo "</script>\n";
|
||||
}
|
||||
?>
|
||||
|
||||
<table width="100%" border="0" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td class="tabnavtbl">
|
||||
@ -199,7 +205,9 @@ if(!$pconfig['backend'])
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="22%" valign="top"> </td>
|
||||
<td width="78%"> <input id="submit" name="Submit" type="submit" class="formbtn" value="<?=gettext("Save");?>" />
|
||||
<td width="78%">
|
||||
<input id="submit" name="Submit" type="submit" class="formbtn" value="<?=gettext("Save");?>" />
|
||||
<input id="savetest" name="savetest" type="submit" class="formbtn" value="<?=gettext("Save and Test");?>" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -208,7 +216,6 @@ if(!$pconfig['backend'])
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<?php include("fend.inc");?>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
73
usr/local/www/system_usermanager_settings_test.php
Executable file
73
usr/local/www/system_usermanager_settings_test.php
Executable file
@ -0,0 +1,73 @@
|
||||
<?php
|
||||
/* $Id$ */
|
||||
/*
|
||||
part of pfSense (http://www.pfsense.org/)
|
||||
|
||||
Copyright (C) 2007 Scott Ullrich <sullrich@gmail.com>
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
|
||||
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
require("guiconfig.inc");
|
||||
|
||||
$ldapserver = $config['system']['webgui']['ldapserver'];
|
||||
$ldapbindun = $config['system']['webgui']['ldapbindun'];
|
||||
$ldapbindpw = $config['system']['webgui']['ldapbindpw'];
|
||||
|
||||
$ldapfilter = $config['system']['webgui']['ldapfilter'];
|
||||
|
||||
echo "Testing pfSense LDAP settings... One moment please...<p/>";
|
||||
|
||||
echo "<table>";
|
||||
|
||||
echo "<tr><td>Attempting connection to {$ldapserver}</td><td>";
|
||||
if(ldap_test_connection())
|
||||
echo "<td><font color=green>OK</td></tr>";
|
||||
else
|
||||
echo "<td><font color=red>failed</td></tr>";
|
||||
|
||||
echo "<tr><td>Attempting bind to {$ldapserver}</td><td>";
|
||||
if(ldap_test_bind())
|
||||
echo "<td><font color=green>OK</td></tr>";
|
||||
else
|
||||
echo "<td><font color=red>failed</td></tr>";
|
||||
|
||||
echo "<tr><td>Attempting to fetch Organizational Units from {$ldapserver}</td><td>";
|
||||
$ous = ldap_get_user_ous(true);
|
||||
if(count($ous)>1)
|
||||
echo "<td><font color=green>OK</td></tr>";
|
||||
else
|
||||
echo "<td><font color=red>failed</td></tr>";
|
||||
|
||||
echo "</table><p/>";
|
||||
|
||||
if(is_array($ous)) {
|
||||
echo "Organization units found:<p/>";
|
||||
echo "<table border='1'>";
|
||||
foreach($ous as $ou) {
|
||||
echo "<tr><td>" . $ou . "</td></tr>";
|
||||
}
|
||||
echo "</table>";
|
||||
}
|
||||
|
||||
?>
|
||||
Loading…
Reference in New Issue
Block a user