diff options
author | Guilhem Moulin <guilhem.moulin@fripost.org> | 2012-09-29 14:58:17 +0200 |
---|---|---|
committer | Guilhem Moulin <guilhem.moulin@fripost.org> | 2012-09-29 14:58:17 +0200 |
commit | f6ffcfd73fc0d0dd731c321efab9a408a176c801 (patch) | |
tree | 1feb1992c01b621592a76176bbed1607e6852bc4 /lib/Fripost/Schema/List.pm | |
parent | 2bece6abde54881bb074dd44e7f87885eab4a777 (diff) |
Better checks for existing entries.
Diffstat (limited to 'lib/Fripost/Schema/List.pm')
-rw-r--r-- | lib/Fripost/Schema/List.pm | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/Fripost/Schema/List.pm b/lib/Fripost/Schema/List.pm index 67da859..ad06b50 100644 --- a/lib/Fripost/Schema/List.pm +++ b/lib/Fripost/Schema/List.pm @@ -120,7 +120,7 @@ sub add { must_attrs( $l, 'transport' ); &_is_valid($l); die "‘".$l->{list}."’ already exists\n" - if $self->local->exists($l->{list},%options); + if $self->local->exists( $l->{list}, t => 'list', %options ); my %attrs = ( objectClass => 'FripostVirtualList' , fripostIsStatusActive => $l->{isactive} ? 'TRUE' : 'FALSE' @@ -267,10 +267,16 @@ sub _is_valid { must_attrs( $l, qw/list isactive/ ); $l->{list} = email_valid( $l->{list}, -exact => 1 ); + my ($l2,$d) = split /\@/, $l->{list}, 2; + foreach ( qw/admin bounces confirm join leave owner request subscribe unsubscribe bounce sendkey/ ){ + die "Invalid list name: ‘".$l->{list}."’\n" if $l2 =~ /-$_$/; + } + die "Invalid list name: ‘".$l->{list}."’\n" + unless $l->{list} =~ /^[[:alnum:]_=\+\-\.\@]+$/; + die "Invalid transport: ‘".$l->{transport}."’\n" if defined $l->{transport} and $l->{transport} !~ /^(schleuder|mailman)$/; - # TODO: check commands } |