From dd9923916527702db5c7c7b78d8e5b0e68fccbf0 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Wed, 4 Sep 2013 23:00:56 +0100 Subject: [PATCH] choose action --- service | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/service b/service index a966409..1d64c5b 100755 --- a/service +++ b/service @@ -12,6 +12,7 @@ END our $usage2 = <<'END'; actions create [REDIRECT] [#COMMENT] (default for REDIRECT is your username) + choose [REDIRECT] [#COMMENT] (interactively see and allocate suggestions) update ADDR [REDIRECT] [#COMMENT] show ADDR list @@ -190,6 +191,45 @@ sub action_create { prow($newrow); } +sub action_choose { + my $template = rhsargs({'redirect'=>$user, 'comment'=>''}); + $template->{'user'} = $user; + prepare_create(); + my %s; + while (keys %s < 10) { + my $s = generate_local_part(); + next if $s{$s}; + print $s or die $!; + print "\@$dom" or die $! if $dom; + print "\n" or die $!; + $s{$s} = 1; + } + print "# enter addresses or local parts to create,". + " then \`.' on a line by itself\n" + or die $!; + + while () { + chomp; + last if m/^\.$/; + my $s; + if (eval { + $s = addr2localpart $_; + $s{$s} or die "not an (as-yet-unused) suggestion\n"; + delete $s{$s}; + die "just taken in the meantime (bad luck!)\n" + if local_part_inuse $s; + 1; + }) { + my $newrow = { %$template, 'localpart' => $s }; + $dbh->commit(); + prow($newrow); + } else { + $dbh->rollback(); + print "!error: $@" or die $!; + } + } +} + sub selectrow ($) { my ($localpart) = @_; our $row_q ||= $dbh->prepare("SELECT * FROM addrs WHERE localpart=?"); -- 2.30.2