aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Fripost/Schema/List.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Fripost/Schema/List.pm')
-rw-r--r--lib/Fripost/Schema/List.pm10
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
}