diff options
Diffstat (limited to 'lib/Fripost/Commands/alias_add.pm')
-rw-r--r-- | lib/Fripost/Commands/alias_add.pm | 133 |
1 files changed, 0 insertions, 133 deletions
diff --git a/lib/Fripost/Commands/alias_add.pm b/lib/Fripost/Commands/alias_add.pm deleted file mode 100644 index f86b1f7..0000000 --- a/lib/Fripost/Commands/alias_add.pm +++ /dev/null @@ -1,133 +0,0 @@ -package Fripost::Commands::alias_add; - -use 5.010_000; -use strict; -use warnings; -use utf8; - -=head1 NAME - -alias_add - Add a new virtual alias - -=cut - -use FindBin qw($Bin); -use lib "$Bin/lib"; - -use Email::Valid; -use IO::Prompter; -use Fripost::Prompt; -use Fripost::Schema; -use Fripost::Email; - -our $VERSION = '0.01'; - -sub main { - my $ldap = shift; - my $conf = shift; - - # Get information - my $goto = fix_username(shift); - $goto //= prompt_email("Alias goto address: ", 'is_user'); - my @addr = @_; - @addr || push @addr, (split /, */, prompt "Alias from address(es): "); - - - # Show goto adress - say "Goto adress: $goto"; - - # Show from adresses - @addr = grep { - if (Email::Valid->address('fake'.$_)) { - # Warn if the domain is unknown. - my $domain = (split /\@/, $_, 2)[1]; - if ($ldap->domain->search({ domain => $domain })->count) { - 1; - } - else { - warn "WARN: Skipping unknown domain `" .$domain. "'.\n"; - undef; - } - } - else { - warn "WARN: Skipping invalid address `" .$_. "'.\n"; - undef; - } - } @addr; - if (@addr == 0) { - warn "No valid destination adresses. Aborting...\n"; - exit 1; - } - say "From adress(es): " . (join ", ", @addr); - confirm_or_abort(); - - my $msg = new_alias_info_message ($conf, $goto, \@addr); - - ## Insert alias - for my $addr (@addr) { - - my ($u,$d) = split /\@/, $addr, 2; - - # Ensure that the alias doesn't already exist. - my $rs = $ldap->alias->search({ address => $addr }); - if ($rs->count and not (defined $conf->{force})) { - print STDERR "Error: Alias $addr already exists. "; - print STDERR "(Targetting to "; - print STDERR (join ', ', map { $_->{goto} } $rs->entries); - say STDERR ".)"; - exit 1; - } - - die "Error: Username $addr exists.\n" - if ($ldap->user->search({ username => $addr })->count); - - if ($conf->{pretend}) { - say STDERR "Did not create alias since we are pretending." - if $conf->{verbose} or $conf->{debug}; - } - else { - $ldap->alias->add({ address => $addr, goto => $goto, - isActive => 'TRUE' }); - say "New alias added from $addr to $goto."; - } - } - - if ($conf->{pretend}) { - say STDERR "Did not send confirmation since we are pretending." - if $conf->{verbose} or $conf->{debug}; - } - else { - if (confirm_or_abort("Send confirmation? ")) { - $msg->send(); - say "Sent confirmation (". (security_status $msg) .")."; - } - } -} - - -=head1 AUTHOR - -Stefan Kangas C<< <skangas at skangas.se> >> - -Guilhem Moulin C<< <guilhem at fripost.org> >> - -=head1 COPYRIGHT - -Copyright 2010,2011 Stefan Kangas. - -Copyright 2012 Guilhem Moulin. - -=head1 LICENSE - -This program is free software; you can redistribute it and/or modify it -under the same terms as perl itself. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -=cut - -1; # End of alias_add.pm - -__END__ |