From 5dd3d8d080b56d742de3c4b4782cfcde72c3f16f Mon Sep 17 00:00:00 2001 From: Guilhem Moulin Date: Sat, 28 Apr 2012 02:21:57 +0200 Subject: Updating the library to the new LDAP schema. --- lib/Fripost/Schema/Type/Domain.pm | 45 ++++++++++++++------------------------- 1 file changed, 16 insertions(+), 29 deletions(-) (limited to 'lib/Fripost/Schema/Type/Domain.pm') diff --git a/lib/Fripost/Schema/Type/Domain.pm b/lib/Fripost/Schema/Type/Domain.pm index 0d2be17..2b803ac 100644 --- a/lib/Fripost/Schema/Type/Domain.pm +++ b/lib/Fripost/Schema/Type/Domain.pm @@ -5,6 +5,8 @@ use warnings; use strict; use base qw/Net::LDAP/; +use Fripost::Schema::Utils; + our $VERSION = '0.01'; @@ -14,41 +16,31 @@ our $VERSION = '0.01'; # domain is given, returns all domains. # Filters on values of both keys `domain' and `owner' (unless they are # undefined). -# If `owner' is the empty string, serch for non self-managed domains +# If `owner' is the empty string, search for non self-managed domains # only. sub search { my $self = shift; + my $domain = shift; - my ($base, $owner); - $base = join ',', ('ou=domains',$self->{_options}->{base_dn}); - $owner = join ',', ( 'uid='.$_[0]->{owner} - , 'ou=mailboxes' - , $self->{_options}->{base_dn} ) - if defined $_[0]->{owner}; + my $owner; + $owner = Fripost::Schema::Utils::mkDN ( $self->{_options}, $domain->{owner} ) + if defined $domain->{owner}; my @filters = ('(ObjectClass=virtualDomain)'); - push @filters, "(dc=" .$_[0]->{domain}. ")" if defined $_[0]->{domain}; - if (defined $_[0]->{owner}) { - if ($_[0]->{owner} eq '') { + push @filters, "(dc=" .$domain->{domain}. ")" if defined $domain->{domain}; + if (defined $domain->{owner}) { + if ($domain->{owner} eq '') { push @filters, "(!(owner=*))"; } else { push @filters, "(owner=" .$owner. ")"; } } - my $filter; - if ($#filters == 0) { - $filter = $filters[0]; - } - elsif ($#filters > 0) { - $filter = "(&" . (join '', @filters) . ")"; - } - my $res = $self->{_ldap}->search( - base => $base, + base => $self->{_options}->{base_dn}, scope => 'one', attrs => [ 'dc', 'owner', 'isActive' ], - filter => $filter + filter => Fripost::Schema::Utils::mkAndFilter( @filters ) ); die "Error: " .$res->error. "\n" if $res->code; return $res; @@ -61,13 +53,9 @@ sub add { my $domain = shift; my ($base, $owner); - $base = join ',', ( 'dc='.$domain->{domain} - , 'ou=domains' - , $self->{_options}->{base_dn} ); - $owner = join ',', ( 'uid='.$domain->{owner} - , 'ou=mailboxes' - , $self->{_options}->{base_dn} ) - if defined $domain->{owner}; + $base = Fripost::Schema::Utils::mkDN ( $self->{_options}, $domain->{domain} ); + $owner = Fripost::Schema::Utils::mkDN ( $self->{_options}, $domain->{owner} ) + if defined $domain->{owner}; my $res; if ($self->search({ domain => $domain->{domain} })->count) { @@ -77,8 +65,7 @@ sub add { $res = $self->{_ldap}->modify( $base, add => [ owner => $owner ] ); } else { - my @attrs = ( dc => $domain->{domain}, - , objectClass => [ 'top', 'virtualDomain' ], + my @attrs = ( objectClass => 'virtualDomain', , isActive => $domain->{isActive} ); push @attrs, (owner => $owner) -- cgit v1.2.3