apply regex on hrEduPersonGroupMember
[virtual-ldap] / bin / ldap-rewrite.pl
index 48a706a..741a0a6 100755 (executable)
@@ -139,13 +139,17 @@ sub log_response {
                foreach my $attr ( @{ $response->{protocolOp}->{searchResEntry}->{attributes} } ) {
                        if ( $attr->{type} =~ m/date/i ) {
                                foreach my $i ( 0 .. $#{ $attr->{vals} } ) {
-                                       $attr->{vals}->[$i] = "$1-$2-$3" if $attr->{vals}->[$i] =~ m/^([12]\d\d\d)([01]\d+)([123]\d+)$/;
+                                       $attr->{vals}->[$i] = "$1-$2-$3" if $attr->{vals}->[$i] =~ m/^([12]\d\d\d)([01]\d+)([0123]\d+)$/;
                                }
                        } elsif ( $attr->{type} eq 'hrEduPersonUniqueNumber' ) {
                                foreach my $val ( @{ $attr->{vals} } ) {
                                        next if $val !~ m{.+:.+};
                                        my ( $n, $v ) = split(/\s*:\s*/, $val );
-                                       push @attrs, { type => $_->{type} . '_' . $n, vals => [ $v ] };
+                                       push @attrs, { type => $attr->{type} . '_' . $n, vals => [ $v ] };
+                               }
+                       } elsif ( $attr->{type} eq 'hrEduPersonGroupMember' ) {
+                               foreach my $i ( 0 .. $#{ $attr->{vals} } ) {
+                                       $attr->{vals}->[$i] =~ s/^u2010/p2010/gs && warn "FIXME group";
                                }
                        }
                }
@@ -154,10 +158,21 @@ sub log_response {
 
                push @{ $response->{protocolOp}->{searchResEntry}->{attributes} }, $_ foreach @attrs;
 
-               my $path = $config->{yaml_dir} . "$uid.yaml";
-               if ( -e $path ) {
-                       my $data = LoadFile($path);
-                       warn "# yaml = ",dump($data);
+               my @additional_yamls = ( $uid );
+               foreach my $attr ( @{ $response->{protocolOp}->{searchResEntry}->{attributes} } ) {
+                       foreach my $v ( @{ $attr->{vals} } ) {
+                               push @additional_yamls, $attr->{type} . '/' . $v;
+                       }
+               }
+
+               #warn "# additional_yamls ",dump( @additional_yamls );
+
+               foreach my $path ( @additional_yamls ) {
+                       my $full_path = $config->{yaml_dir} . '/' . $path . '.yaml';
+                       next unless -e $full_path;
+
+                       my $data = LoadFile( $full_path );
+                       warn "# $full_path yaml = ",dump($data);
 
                        foreach my $type ( keys %$data ) {