Merge pull request #1142 from seabres/multiple_ldap_server

Allow multiple LDAP server for userdb
This commit is contained in:
Jamie Cameron
2023-07-25 17:17:37 -07:00
committed by GitHub

View File

@@ -11997,6 +11997,7 @@ On failure returns an error message string. In an array context, returns the
protocol type too.
=cut
my $lastldapserver;
sub connect_userdb
{
my ($str) = @_;
@@ -12053,10 +12054,21 @@ elsif ($proto eq "ldap") {
if (!$port) {
$port = $scheme eq 'ldaps' ? 636 : 389;
}
my $ldap = Net::LDAP->new($host,
port => $port,
'scheme' => $scheme);
my $ldap;
if ($lastldapserver ne "") {
$ldap = Net::LDAP->new($lastldapserver,
port => $port,
'scheme' => $scheme,
'timeout' => 2);
}
if (! $ldap) {
$ldap = Net::LDAP->new([ split(/,/, $host) ],
port => $port,
'scheme' => $scheme,
'timeout' => 2);
}
$ldap || return &text('sql_eldapconnect', $host);
$lastldapserver = $ldap->host();
my $mesg;
if ($args->{'tls'}) {
# Switch to TLS mode
@@ -12135,7 +12147,7 @@ Converts a string like mysql://user:pass@host/db into separate parts
sub split_userdb_string
{
my ($str) = @_;
if ($str =~ /^([a-z]+):\/\/([^:]*):([^\@]*)\@([a-z0-9\.\-\_]+)\/([^\?]+)(\?(.*))?$/) {
if ($str =~ /^([a-z]+):\/\/([^:]*):([^\@]*)\@([a-z0-9\.\-\_,]+)\/([^\?]+)(\?(.*))?$/) {
my ($proto, $user, $pass, $host, $prefix, $argstr) =
($1, $2, $3, $4, $5, $7);
my %args = map { split(/=/, $_, 2) } split(/\&/, $argstr);