X-Git-Url: http://git.rot13.org/?p=virtual-ldap;a=blobdiff_plain;f=lib%2FLDAP%2FVirtual.pm;h=4ee090e3f76fcd8c08b75160afcb51c187a714cd;hp=42ee0d128e35f65d84d1ee76cbdfc8eac739fe40;hb=704421304e70ffc488ce7bd9a58dd8ee9cd64915;hpb=9f191fbbe365f864dd9bad9a672aab5505b503a2 diff --git a/lib/LDAP/Virtual.pm b/lib/LDAP/Virtual.pm index 42ee0d1..4ee090e 100644 --- a/lib/LDAP/Virtual.pm +++ b/lib/LDAP/Virtual.pm @@ -20,6 +20,8 @@ use URI::Escape; # uri_escape use IO::Socket::INET; use IO::Select; +use YAML qw/DumpFile/; + use Data::Dump qw/dump/; =head1 NAME @@ -41,11 +43,6 @@ Provide LDAP server functionality somewhat similar to C =cut our $pids; -our $cache; - -sub cache { - return $cache; -} sub run { my $self = shift; @@ -159,6 +156,14 @@ sub bind { my $bind; $bind->{dn} = $req->{name} if $req->{name}; + + if ( $bind->{dn} =~ m{@} ) { + + $bind->{dn} =~ s/[@\.]/,dc=/g; + $bind->{dn} =~ s/^/uid=/; + + } + $bind->{password} = $req->{authentication}->{simple} if $req->{authentication}->{simple}; warn "# bind ",dump( $bind ); $msg = $self->{upstream}->bind( %$bind ); @@ -240,7 +245,9 @@ sub search { warn "## entries = ",dump( @entries ); -# $self->cache->write_cache( \@entries, uri_escape( $filter )); + my $path = 'var/' . uri_escape( $filter ) . '.yml'; + DumpFile( $path, \@entries ); + warn "# created $path ", -s $path, " bytes"; return RESULT_OK, @entries; }