our $usage1 = <<'END';
usage: ../fyvzl [OPTIONS DATABASE-FILE ACTION ARG
options
- -lLENGTH (for create)
- -mMAXPERUSER
- -dDOM
- -qQUALDOM
+ -l<minrandlength> (for create/choose, number of letters)
+ -m<maxperuser>
+ -d<dom>
+ -q<qualdom>
-C (show comments in output)
-h (display help)
END
our $user;
our $priv;
our $showcomment;
+our $genmethod = 'alphanum';
sub nextarg () {
die "too few arguments\n" unless @ARGV;
return !!$row;
}
-sub prow ($) {
- my ($row) = @_;
- my $u = $row->{'user'};
+sub puser ($) {
+ my ($u) = @_;
our $last_u;
if (!defined $last_u or $last_u ne $u) {
print "# user $u ".(isdisabled($u) ? 'disabled' : 'enabled')."\n";
$last_u = $u;
}
+}
+
+sub prow ($) {
+ my ($row) = @_;
+ my $u = $row->{'user'};
+ puser($u);
my $pa = $row->{'localpart'};
$pa .= '@'.$dom if defined $dom;
if (length $row->{'redirect'}) {
return !!$row;
}
+sub gen_local_part_alphanum {
+ my $s = chr(ord('a')+goodrand(26));
+ while (length $s < $randlength) {
+ my $v = goodrand(36);
+ $s .= chr($v < 26
+ ? ord('a')+($v)
+ : ord('0')+($v-26));
+ }
+ return $s;
+}
+
sub generate_local_part () {
my $s;
for (;;) {
- $s = chr(ord('a')+goodrand(26));
- while (length $s < $randlength) {
- my $v = goodrand(36);
- $s .= chr($v < 26
- ? ord('a')+($v)
- : ord('0')+($v-26));
- }
+ { no strict qw(refs); $s = &{"gen_local_part_$genmethod"}; }
# print STDERR "$s\n";
last if !local_part_inuse($s);
}
my $template = rhsargs({'redirect'=>$user, 'comment'=>''});
$template->{'user'} = $user;
prepare_create();
+ puser($user);
my %s;
while (keys %s < 10) {
my $s = generate_local_part();
print "\n" or die $!;
$s{$s} = 1;
}
- print "# enter addresses or local parts to create,".
+ print "# ready - enter addrs or local-parts to create,".
" then \`.' on a line by itself\n"
or die $!;
prow($newrow);
} else {
$dbh->rollback();
- print "!error: $@" or die $!;
+ print "! error: $@" or die $!;
}
}
}