X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=lib%2FApache2%2FAuthen%2FPassphrase.pm;h=ae8d01c7d33b0fb99871c71aa86fa13fa71d477f;hb=8443f44e6c18f408210ea542717f8963f8036d0c;hp=4beea0e0e8e10160a55465c48cbbb1ea7a923122;hpb=f7fdbaad4baa1b241e5f5bfa30c7585abb10b0bd;p=apache2-authen-passphrase.git diff --git a/lib/Apache2/Authen/Passphrase.pm b/lib/Apache2/Authen/Passphrase.pm index 4beea0e..ae8d01c 100644 --- a/lib/Apache2/Authen/Passphrase.pm +++ b/lib/Apache2/Authen/Passphrase.pm @@ -1,20 +1,21 @@ -package Apache2::Authen::Passphrase 0.001001; +package Apache2::Authen::Passphrase; use 5.014000; use strict; use warnings; use parent qw/Exporter/; +use subs qw/OK HTTP_UNAUTHORIZED/; -use constant +{ - USER_REGEX => qr/^\w{2,20}$/pa, - PASSPHRASE_VERSION => 1, - INVALID_USER => "invalid-user\n", - BAD_PASSWORD => "bad-password\n", -}; +our $VERSION = 0.002001; -use Apache2::RequestRec; -use Apache2::Access; -use Apache2::Const qw/OK HTTP_UNAUTHORIZED/; +use constant USER_REGEX => qr/^\w{2,20}$/pas; +use constant PASSPHRASE_VERSION => 1; +use constant INVALID_USER => "invalid-user\n"; +use constant BAD_PASSWORD => "bad-password\n"; + +use if $ENV{MOD_PERL}, 'Apache2::RequestRec'; +use if $ENV{MOD_PERL}, 'Apache2::Access'; +use if $ENV{MOD_PERL}, 'Apache2::Const' => qw/OK HTTP_UNAUTHORIZED/; use Authen::Passphrase; use Authen::Passphrase::BlowfishCrypt; use YAML::Any qw/LoadFile DumpFile/; @@ -24,6 +25,7 @@ our @EXPORT_OK = qw/pwset pwcheck pwhash USER_REGEX PASSPHRASE_VERSION INVALID_U ################################################## our $rootdir; +$rootdir //= $ENV{AAP_ROOTDIR}; sub pwhash{ my ($pass)=@_; @@ -51,12 +53,14 @@ sub pwset{ sub pwcheck{ my ($user, $pass)=@_; - die INVALID_USER unless $user =~ USER_REGEX; + die INVALID_USER unless $user =~ USER_REGEX; ## no critic (RequireCarping) $user=${^MATCH};# Make taint shut up my $conf=LoadFile "$rootdir/$user.yml"; + ## no critic (RequireCarping) die BAD_PASSWORD unless keys $conf;# Empty hash means no such user die BAD_PASSWORD unless Authen::Passphrase->from_rfc2307($conf->{passphrase})->match($pass); + ## use critic pwset $user, $pass if $conf->{passphrase_version} < PASSPHRASE_VERSION } @@ -103,6 +107,14 @@ Apache2::Authen::Passphrase - basic authentication with Authen::Passphrase 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), one file per user. + +Set the C like this: + + $Apache2::Authen::Passphrase::rootdir = '/path/to/rootdir'; + +or by setting the C enviroment variable to the desired value. + =head1 FUNCTIONS =over @@ -149,6 +161,16 @@ Uses C with a cost factor of 10 =back +=head1 ENVIRONMENT + +=over + +=item AAP_ROOTDIR + +If the C is not explicitly set, it is taken from this environment variable. + +=back + =head1 AUTHOR Marius Gavrilescu, Emarius@ieval.roE