Merge branch 'ent-9178-13815-alto-tiempo-de-espera-si-el-ldap-secundario-no-esta-disponible' into 'develop'

Added ldap timeout

See merge request artica/pandorafms!5134
This commit is contained in:
Diego Muñoz-Reja 2022-10-21 10:28:04 +00:00
commit 92c01531e7
3 changed files with 38 additions and 5 deletions

View File

@ -199,6 +199,21 @@ if (is_ajax()) {
); );
$table->data['ldap_admin_pass'] = $row; $table->data['ldap_admin_pass'] = $row;
// Ldapsearch timeout.
// Default Ldapsearch timeout.
set_when_empty($config['ldap_searh_timeout'], 5);
$row = [];
$row['name'] = __('Ldap search timeout (secs)');
$row['control'] = html_print_input_text(
'ldap_search_timeout',
$config['ldap_search_timeout'],
'',
10,
10,
true
);
$table->data['ldap_search_timeout'] = $row;
// Enable/disable secondary ldap. // Enable/disable secondary ldap.
// Set default value. // Set default value.
set_unless_defined($config['secondary_ldap_enabled'], false); set_unless_defined($config['secondary_ldap_enabled'], false);

View File

@ -856,8 +856,16 @@ function ldap_process_user_login($login, $password, $secondary_server=false)
return false; return false;
} }
// Set the LDAP version // Set the LDAP version.
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, $ldap['ldap_version']); ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, $ldap['ldap_version']);
ldap_set_option($ds, LDAP_OPT_NETWORK_TIMEOUT, 1);
// Set ldap search timeout.
ldap_set_option(
$ds,
LDAP_OPT_TIMELIMIT,
(empty($config['ldap_search_timeout']) === true) ? 5 : ((int) $config['ldap_search_timeout'])
);
if ($ldap['ldap_start_tls']) { if ($ldap['ldap_start_tls']) {
if (!@ldap_start_tls($ds)) { if (!@ldap_start_tls($ds)) {
@ -878,7 +886,8 @@ function ldap_process_user_login($login, $password, $secondary_server=false)
io_safe_output($ldap['ldap_admin_login']), io_safe_output($ldap['ldap_admin_login']),
io_output_password($ldap['ldap_admin_pass']), io_output_password($ldap['ldap_admin_pass']),
io_safe_output($login), io_safe_output($login),
$ldap['ldap_start_tls'] $ldap['ldap_start_tls'],
$config['ldap_search_timeout']
); );
if ($sr) { if ($sr) {
@ -1487,7 +1496,8 @@ function local_ldap_search(
$ldap_admin_user=null, $ldap_admin_user=null,
$ldap_admin_pass=null, $ldap_admin_pass=null,
$user=null, $user=null,
$ldap_start_tls=null $ldap_start_tls=null,
$ldap_search_time=5
) { ) {
global $config; global $config;
@ -1520,8 +1530,8 @@ function local_ldap_search(
} }
$dn = " -b '".$dn."'"; $dn = " -b '".$dn."'";
$ldapsearch_command = 'ldapsearch -LLL -o ldif-wrap=no -o nettimeout='.$ldap_search_time.' -x'.$ldap_host.$ldap_version.' -E pr=10000/noprompt '.$ldap_admin_user.$ldap_admin_pass.$dn.$filter.$tls.' | grep -v "^#\|^$" | sed "s/:\+ /=>/g"';
$shell_ldap_search = explode("\n", shell_exec('ldapsearch -LLL -o ldif-wrap=no -x'.$ldap_host.$ldap_version.' -E pr=10000/noprompt '.$ldap_admin_user.$ldap_admin_pass.$dn.$filter.$tls.' | grep -v "^#\|^$" | sed "s/:\+ /=>/g"')); $shell_ldap_search = explode("\n", shell_exec($ldapsearch_command));
foreach ($shell_ldap_search as $line) { foreach ($shell_ldap_search as $line) {
$values = explode('=>', $line); $values = explode('=>', $line);
if (!empty($values[0]) && !empty($values[1])) { if (!empty($values[0]) && !empty($values[1])) {

View File

@ -612,6 +612,10 @@ function config_update_config()
$error_update[] = __('Admin LDAP password'); $error_update[] = __('Admin LDAP password');
} }
if (config_update_value('ldap_search_timeout', (int) get_parameter('ldap_search_timeout', 5), true) === false) {
$error_update[] = __('Ldap search timeout');
}
if (config_update_value('ldap_server_secondary', get_parameter('ldap_server_secondary'), true) === false) { if (config_update_value('ldap_server_secondary', get_parameter('ldap_server_secondary'), true) === false) {
$error_update[] = __('Secondary LDAP server'); $error_update[] = __('Secondary LDAP server');
} }
@ -2697,6 +2701,10 @@ function config_process_config()
config_update_value('ldap_admin_pass', ''); config_update_value('ldap_admin_pass', '');
} }
if (!isset($config['ldap_search_timeout'])) {
config_update_value('ldap_search_timeout', 5);
}
if (!isset($config['ldap_server_secondary'])) { if (!isset($config['ldap_server_secondary'])) {
config_update_value('ldap_server_secondary', 'localhost'); config_update_value('ldap_server_secondary', 'localhost');
} }