Hey all:
After struggling with the newer inn2/nnrpd auth features (in
particular with the lack of documentation for the ckpasswd
util), I Used the Source and was able to come up with this
test/driver script. I hope someone finds it useful some day.
Questions and constructive comments are welcome.
#!/usr/bin/perl -w
use strict;
# test script for ckpasswd, Debian/woody inn2 install
my $ckpasswd = "/usr/lib/news/bin/auth/passwd/ckpasswd";
sub mycrypt
{
my $pass = shift;
my @a = (0..9, 'A'..'Z', 'a'..'z');
my $salt = $a[rand(@a)] . $a[rand(@a)];
return crypt($pass, $salt);
}
my %pass = (
foo => "bar", # user => passwd
baz => "quux",
gandalf => "friend",
);
#
# generate a password file for testing
#
open(TMP,">passwd.tmp") or die "can't open passwd.tmp: $!";
for (keys %pass) { printf TMP "$_:%s\n", mycrypt($pass{$_}) }
close TMP;
END { unlink "passwd.tmp"; }
#
# test each generated user/pass pair with ckpasswd
#
for (keys %pass)
{
warn "testing password for user '$_'\n";
open(CK,"|$ckpasswd -f passwd.tmp")
or die "unable to open pipe to ckpasswd: $!";
print CK "ClientAuthname: $_\n";
print CK "ClientPassword: $pass{$_}\n";
if (close(CK))
{
warn "...OK\n";
}
else
{
warn "$!" if $!;
print_exit_status($?);
die "error testing userid '$_'";
}
}
sub print_exit_status
{
my $s = shift;
my $exit = $s >> 8;
my $signal = $s & 127;
my $core = $s & 128;
print <<EOF;
exit value: $exit
signal number: $signal
dumped core: $core
EOF
}
--
trammell at el-swifto.com 9EC7 BC6D E688 A184 9F58 FD4C 2C12 CC14 8ABA 36F5
Twin Cities Linux Users Group (TCLUG) Minneapolis/St. Paul, Minnesota
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 240 bytes
Desc: not available
Url : http://shadowknight.real-time.com/pipermail/tclug-list/attachments/20030307/000c4267/attachment.pgp