allow to specify host[:port] for active-directory host

This commit is contained in:
Ralf Becker 2019-03-09 12:37:05 +01:00
parent da26d0973e
commit 54df2bcb6b

View File

@ -149,8 +149,16 @@ class Ads
$base_dn_parts[] = 'DC='.$dc; $base_dn_parts[] = 'DC='.$dc;
} }
$base_dn = implode(',', $base_dn_parts); $base_dn = implode(',', $base_dn_parts);
// check if a port is specified as host[:port] and pass it correctly to adLDAP
$matches = null;
if (preg_match('/:(\d+)/', $host=$config['ads_host'], $matches))
{
$port = $matches[1];
$host = preg_replace('/:(\d+)/', '', $config['ads_host']);
}
$options = array( $options = array(
'domain_controllers' => preg_split('/[ ,]+/', $config['ads_host']), 'domain_controllers' => preg_split('/[ ,]+/', $host),
'base_dn' => $base_dn ? $base_dn : null, 'base_dn' => $base_dn ? $base_dn : null,
'account_suffix' => '@'.$config['ads_domain'], 'account_suffix' => '@'.$config['ads_domain'],
'admin_username' => $config['ads_admin_user'], 'admin_username' => $config['ads_admin_user'],
@ -159,6 +167,8 @@ class Ads
'use_ssl' => $config['ads_connection'] == 'ssl', 'use_ssl' => $config['ads_connection'] == 'ssl',
'charset' => Api\Translation::charset(), 'charset' => Api\Translation::charset(),
); );
if (isset($port)) $options['ad_port'] = $port;
$adldap[$config['ads_domain']] = new adLDAP($options); $adldap[$config['ads_domain']] = new adLDAP($options);
if (self::$debug) error_log(__METHOD__."() new adLDAP(".array2string($options).") returned ".array2string($adldap[$config['ads_domain']]).' '.function_backtrace()); if (self::$debug) error_log(__METHOD__."() new adLDAP(".array2string($options).") returned ".array2string($adldap[$config['ads_domain']]).' '.function_backtrace());
} }