Revision history for Perl extension Apache2::Authen::Passphrase.
+0.002 Sun 11 Aug 16:05:32 EEST 2013
+ - Add the aap-passwd utility
+ - Talk about the rootdir in the documentation
+ - Support setting the rootdir via an evironment variable
+0.001001 Sun 4 Aug 20:10:24 EEST 2013
+ - Fix the broken previous release
+
0.001 Sun 4 Aug 19:47:54 EEST 2013
- Initial Release
-0.001001 Sun 4 Aug 20:10:24 EEST 2013
- - Fix the broken previous release
\ No newline at end of file
Makefile.PL
MANIFEST
README
+aap-passwd
t/Apache2-Authen-Passphrase.t
lib/Apache2/Authen/Passphrase.pm
AUTHOR => 'Marius Gavrilescu <marius@ieval.ro>',
MIN_PERL_VERSION => '5.14.0',
LICENSE => 'perl',
+ EXE_FILES => [ 'aap-passwd' ],
PREREQ_PM => {
Apache2::RequestRec => 0,
Apache2::Access => 0,
Apache2::Const => 0,
Authen::Passphrase => 0,
Authen::Passphrase::BlowfishCrypt => 0,
+ IO::Prompter => 0,
YAML::Any => 0,
},
);
-Apache2-Authen-Passphrase version 0.001001
+Apache2-Authen-Passphrase version 0.002
==========================================
Apache2::Authen::Passphrase is a perl module which provides easy-to-use Apache2 authentication. It exports some utility functions and it contains a PerlAuthenHandler.
* mod_perl2
* Authen::Passphrase
* YAML::Any
+* IO::Prompter
COPYRIGHT AND LICENCE
--- /dev/null
+#!/usr/bin/perl -wT
+use v5.14;
+use strict;
+
+use Apache2::Authen::Passphrase qw/pwset USER_REGEX/;
+
+use IO::Prompter [qw/-e* -stdio/];
+
+die "Usage: aap-passwd [rootdir] username\n" unless $#ARGV >= 0 && $#ARGV <= 1;
+($Apache2::Authen::Passphrase::rootdir) = (shift =~ /(.*)/) if $#ARGV == 1;
+
+my $username = shift;
+die "Invalid username" unless $username =~ USER_REGEX;
+($username) = ($username =~ /(.*)/);
+
+my $passwd = prompt 'Enter new Apache2::Authen::Passphrase password: ';
+my $confirm = prompt 'Retype new Apache2::Authen::Passphrase password: ';
+
+die "Sorry, passwords do not match\n" unless $passwd eq $confirm;
+pwset $username, $passwd;
+say "Password updated successfully";
+
+__END__
+
+=head1 NAME
+
+aap-passwd - passwd utility for Apache2::Authen::Passphrase
+
+=head1 SYNOPSIS
+
+ user@hostname:~$ aap-passwd /path/to/rootdir marius
+ Enter new Apache2::Authen::Passphrase password: ***
+ Retype new Apache2::Authen::Passphrase password: ***
+ Password updated successfully
+
+=head1 DESCRIPTION
+
+aap-passwd updates the password of an Apache2::Authen::Passphrase user.
+
+It is used like this:
+
+ aap-passwd /path/to/rootdir username
+
+where the C<rootdir> is the first argument and the username whose password is to be changed is the second argument, or like this:
+
+ aap-passwd username
+
+where the C<rootdir> is taken from the environment and the username is the only argument.
+
+=head1 ENVIRONMENT
+
+=over
+
+=item AAP_ROOTDIR
+
+The default Apache2::Authen::Passphrase C<rootdir>, used if the C<rootdir> is not explicitly given.
+
+=back
+
+=head1 AUTHOR
+
+Marius Gavrilescu C<< <marius@ieval.ro> >>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 2013 Marius Gavrilescu
+
+This file is part of fonbotd.
+
+fonbotd is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+fonbotd 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. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with fonbotd. If not, see <http://www.gnu.org/licenses/>
+
+
+=cut
+
-package Apache2::Authen::Passphrase 0.001001;
+package Apache2::Authen::Passphrase;
+
+our $VERSION = 0.002;
use 5.014000;
use strict;
##################################################
-our $rootdir;
+our $rootdir //= $ENV{AAP_ROOTDIR};
sub pwhash{
my ($pass)=@_;
Apache2::Authen::Passphrase is a perl module which provides easy-to-use Apache2 authentication. It exports some utility functions and it contains a PerlAuthenHandler.
+The password hashes are stored in YAML files in an directory (called the C<rootdir>), one file per user.
+
+Set the C<rootdir> like this:
+
+ $Apache2::Authen::Passphrase::rootdir = '/path/to/rootdir';
+
+or by setting the C<AAP_ROOTDIR> enviroment variable to the desired value.
+
=head1 FUNCTIONS
=over
=back
+=head1 ENVIRONMENT
+
+=over
+
+=item AAP_ROOTDIR
+
+If the C<rootdir> is not explicitly set, it is taken from this environment variable.
+
+=back
+
=head1 AUTHOR
Marius Gavrilescu, E<lt>marius@ieval.roE<gt>
use File::Temp qw/tempdir/;
use Test::More tests => 7;
+BEGIN { $ENV{AAP_ROOTDIR} = tempdir CLEANUP => 1 }
BEGIN { use_ok('Apache2::Authen::Passphrase', qw/pwset pwcheck/) };
-$Apache2::Authen::Passphrase::rootdir = tempdir CLEANUP => 1;
-
sub pw_ok {
my ($user, $pass, $testname) = @_;
eval { pwcheck $user, $pass };