diff options
Diffstat (limited to 'lib/Fripost/Schema/Domain.pm')
-rw-r--r-- | lib/Fripost/Schema/Domain.pm | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/lib/Fripost/Schema/Domain.pm b/lib/Fripost/Schema/Domain.pm index e1b855f..3f2c9c5 100644 --- a/lib/Fripost/Schema/Domain.pm +++ b/lib/Fripost/Schema/Domain.pm @@ -17,8 +17,10 @@ use warnings; use utf8; use parent 'Fripost::Schema'; -use Fripost::Schema::Misc qw/concat get_perms explode must_attrs email_valid/; -use Email::Valid; +use Fripost::Schema::Misc qw/concat get_perms explode + must_attrs email_valid/; +use Net::IDN::Encode qw/domain_to_ascii domain_to_unicode + email_to_ascii email_to_unicode/; =head1 METHODS @@ -48,7 +50,7 @@ sub search { die $options{'-die'}."\n" if defined $options{'-die'}; die $domains->error; } - return map { { domain => $_->get_value('fvd') + return map { { domain => domain_to_unicode($_->get_value('fvd')) , isactive => $_->get_value('fripostIsStatusActive') eq 'TRUE' , description => concat($concat, $_->get_value('description')) } @@ -65,7 +67,7 @@ Returns a hash with all the (visible) attributes for the given domain. sub get { my $self = shift; - my $d = shift; + my $d = domain_to_ascii(shift); my %options = @_; my $concat = $options{'-concat'}; @@ -95,10 +97,11 @@ sub get { die "No such such domain ā$dā.\n"; } - return ( domain => $domain->get_value('fvd') + return ( domain => domain_to_unicode($domain->get_value('fvd')) , isactive => $domain->get_value('fripostIsStatusActive') eq 'TRUE' , description => concat($concat, $domain->get_value('description')) - , catchalls => concat($concat, $domain->get_value('fripostOptionalMaildrop')) + , catchalls => concat($concat, map { email_to_unicode ($_) } + $domain->get_value('fripostOptionalMaildrop')) , permissions => get_perms($domain, $self->whoami) ) } @@ -157,8 +160,9 @@ The B<-die> option, if present, overides LDAP croaks and errors. sub _is_valid { my $d = shift; must_attrs( $d, qw/domain isactive/ ); - email_valid( $d->{domain}, -prefix => 'fake@', -error => 'Invalid domain', - -exact => 1 ); + $d->{domain} = email_valid( $d->{domain}, -prefix => 'fake@', + -error => 'Invalid domain', + -exact => 1 ); $d->{catchalls} = [ map { email_valid($_, -prefix => 'fake') } @{$d->{catchalls}} ]; } |