%PDF- %PDF-
| Direktori : /backups/router/usr/local/www/ |
| Current File : //backups/router/usr/local/www/system_usermanager_settings_ldapacpicker.php |
<?php
/*
* Copyright (C) 2014-2018 Deciso B.V.
* 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_once("guiconfig.inc");
require_once("auth.inc");
$result = array();
if (isset($_POST['basedn']) && isset($_POST['host'])) {
$ldap_authcn = isset($_POST['authcn']) ? explode(";", $_POST['authcn']) : array();
if (isset($_POST['urltype']) && (strstr($_POST['urltype'], "Standard") || strstr($_POST['urltype'], "StartTLS"))) {
$ldap_full_url = "ldap://";
} else {
$ldap_full_url = "ldaps://";
}
$ldap_full_url .= is_ipaddrv6($_POST['host']) ? "[{$_POST['host']}]" : $_POST['host'];
if (!empty($_POST['port'])) {
$ldap_full_url .= ":{$_POST['port']}";
}
$ldap_auth = new OPNsense\Auth\LDAP($_POST['basedn'], isset($_POST['proto']) ? $_POST['proto'] : 3);
$ldap_auth->setProperties(['ldap_urltype' => $_POST['urltype']]);
$ldap_is_connected = $ldap_auth->connect(
$ldap_full_url,
!empty($_POST['binddn']) ? $_POST['binddn'] : null,
!empty($_POST['bindpw']) ? $_POST['bindpw'] : null
);
$ous = false;
if ($ldap_is_connected) {
$ous = $ldap_auth->listOUs();
}
if ($ous !== false) {
foreach ($ous as $ou) {
$result[] = array("value" => $ou, "selected" => in_array($ou, $ldap_authcn));
}
}
}
echo json_encode($result);