version 1.4, 2009/07/16 21:08:45 |
version 1.6, 2012/06/10 04:48:05 |
|
|
#!/usr/bin/perl |
#!/usr/bin/perl |
# $RedRiver: keyring.cgi,v 1.3 2009/06/16 01:39:09 andrew Exp $ |
# $RedRiver: keyring.cgi,v 1.4 2009/07/16 20:08:45 andrew Exp $ |
######################################################################## |
######################################################################## |
# keyring.cgi *** Update and modify keyring files |
# keyring.cgi *** Update and modify keyring files |
# |
# |
|
|
use strict; |
use strict; |
use warnings; |
use warnings; |
|
|
use Data::Dumper; |
|
|
|
use feature 'state'; |
use feature 'state'; |
|
|
use CGI; |
use CGI; |
|
|
use Palm::Keyring; |
use Palm::Keyring; |
use Template; |
use Template; |
|
|
my $base_path = '/users'; |
my @path = '/users'; |
my $dir = $ENV{'PATH_INFO'} || '/'; |
if ($ENV{'PATH_INFO'} && $ENV{'PATH_INFO'} ne '/') { |
|
push @path, $ENV{'PATH_INFO'}; |
|
} |
|
elsif ( $ENV{'REMOTE_USER'} ) { |
|
push @path, $ENV{'REMOTE_USER'}; |
|
# This is the users subdir; |
|
push @path, 'rings'; |
|
} |
|
my $dir = catdir( @path ); |
|
|
my $query = CGI->new(); |
my $query = CGI->new(); |
my $tt = Template->new( { INCLUDE_PATH => catdir('../templates') } ); |
my $tt = Template->new( { INCLUDE_PATH => catdir('../templates') } ); |
|
|
} |
} |
|
|
$file = canonpath($file) if $file; |
$file = canonpath($file) if $file; |
$dir = canonpath($dir) if $dir; |
if ( $file =~ /^ \Q$path[0]\E /xms ) { |
|
$dir = dirname($file); |
|
} |
|
|
|
$dir = canonpath($dir) if $dir; |
if ( $dir =~ m{/\.\.//}xms ) { |
if ( $dir =~ m{/\.\.//}xms ) { |
error('Invalid Dir [$dir]'); |
error('Invalid Dir [$dir]'); |
$dir = ''; |
$dir = ''; |
} |
} |
|
|
if ( $file =~ /^ \Q$base_path\E /xms ) { |
|
$dir = dirname($file); |
|
} |
|
else { |
|
$dir = catdir( $base_path, $dir, 'rings' ); |
|
} |
|
|
|
files() if !$file; |
files() if !$file; |
|
|
if ( !$file ) { |
if ( !$file ) { |
|
|
} |
} |
|
|
sub password { |
sub password { |
|
my $message = ''; |
if ($password) { |
if ($password) { |
my $pdb = open_pdb(); |
my $pdb = open_pdb(); |
eval { $pdb->Password($password) }; |
my $valid = eval { $pdb->Password($password) }; |
if ($@) { |
if ($@) { |
error($@); |
error($@); |
|
$message = "Error: $@"; |
} |
} |
else { |
elsif ($valid) { |
return |
return |
'Unlocked: ' |
'Unlocked: ' |
. $query->hidden( 'unlock_password', $password ) |
. $query->hidden( 'unlock_password', $password ) |
. $query->submit( -name => 'lock', -value => 'Lock', ); |
. $query->submit( -name => 'lock', -value => 'Lock', ); |
} |
} |
|
else { |
|
$message = "$message<br>Invalid Password"; |
|
} |
} |
} |
|
|
return 'Locked - Enter Password to Unlock: ' . $query->br() |
return 'Locked - Enter Password to Unlock: ' . $query->br() |
. $query->password_field( |
. $message . $query->password_field( |
-name => 'unlock_password', |
-name => 'unlock_password', |
-value => '', |
-value => '', |
-override => 1, |
-override => 1, |
); |
); |
} |
} |
|
|
|
|
my $d = $acct{$label}{data}; |
my $d = $acct{$label}{data}; |
$acct{$label}{data} = sprintf "%04d/%02d/%02d", |
$acct{$label}{data} = sprintf "%04d/%02d/%02d", |
$d->{year} + 1900, |
$d->{year} + 1900, |
$d->{month}, |
$d->{month} + 1, |
$d->{day}; |
$d->{day}; |
} |
} |
|
|
|
|
} |
} |
|
|
$output |
$output |
.= $label . ': ' |
.= $label . ': ' . |
. $query->$type( |
#$acct{$key}{data} . |
|
$query->$type( |
-name => 'acct_' . $key, |
-name => 'acct_' . $key, |
-value => $acct{$key}{data}, |
-value => $acct{$key}{data}, |
-override => 1, |
-override => 1, |
) . $query->br; |
) . |
|
$query->br; |
} |
} |
|
|
return $output; |
return $output; |