dormant
help
list
- new [-GENOPTS] [-RECOPTS] RECIP
+ new [-n COUNT] [-GENOPTS] [-RECOPTS] [RECIP]
release LPART ...
reserve [-GENOPTS] N
reserved
my $gencls = Odin::default_generator_class $dom;
my %gp = ();
my %r = ();
+ my $n = 1;
while (my $o = $op->get) {
- gen_opt $dom, $gencls, %gp, $o, $op
- or record_opt %r, $o, $op
- or $op->unk;
+ if ($o eq "n") { $n = $op->intarg(undef, 0) }
+ else {
+ gen_opt $dom, $gencls, %gp, $o, $op
+ or record_opt %r, $o, $op
+ or $op->unk;
+ }
}
my @a = $op->rest;
if (@a) { $r{recip} = shift @a; }
!@a or $op->bad;
- $op->ok or Odin::fail "usage: new [-GENOPTS] [-RECOPTS] RECIP";
+ $op->ok or
+ Odin::fail "usage: new [-n COUNT] [-GENOPTS] [-RECOPTS] [RECIP]";
my $gen = $gencls->new($dom, \%gp);
- my $l = Odin::new_redir $dom, $gen, %r;
- print $l, "\n";
+ my @l = Odin::new_redir $dom, $gen, %r, $n;
+ print map { $_ . "\n" } @l;
} elsif ($op eq "reserve") {
my $op = Odin::OptParse->new(@ARGV);
my $gencls = Odin::default_generator_class $dom;
}
}
-sub new_redir ($$\%) {
- my ($dom, $gen, $r) = @_;
+sub new_redir ($$\%;$) {
+ my ($dom, $gen, $r, $n) = @_;
my $db = open_db;
- my $l;
+ my @l;
+ $n //= 1;
check_fixup_redir $r;
Odin::xact {
clear_redir_reservations $db;
- $l = Odin::gen_redir_name $db, $gen;
- insert_record $db, "odin_mailredir",
- lpart => $l, dom => $dom, owner => $WHO, st => 'live',
- recip => $r->{recip} // qualify_recip $Odin::WHO,
- expire => $r->{expire} // -1,
- comment => $r->{comment} // "";
+ while (@l < $n) {
+ my $l = Odin::gen_redir_name $db, $gen;
+ insert_record $db, "odin_mailredir",
+ lpart => $l, dom => $dom, owner => $WHO, st => 'live',
+ recip => $r->{recip} // qualify_recip $Odin::WHO,
+ expire => $r->{expire} // -1,
+ comment => $r->{comment} // "";
+ push @l, $l;
+ }
check_redir_limits $db;
} $db;
- return $l;
+ return @l;
}
sub reserve_redir ($$$) {