X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=Util.pm;h=6117a4e6b9b60515dc462df53678ac30e2177b72;hb=c862628abd43c8fa3f7f2c17b5540706c2d1f95a;hp=f6e7f9cf671bd21440151c0373ae494136d10aaa;hpb=92d12f638699743581094e03a82d600fe5d5b8eb;p=mirror%2Fuserdir-ldap-cgi.git diff --git a/Util.pm b/Util.pm index f6e7f9c..6117a4e 100644 --- a/Util.pm +++ b/Util.pm @@ -2,10 +2,11 @@ package Util; use strict; +use Date::Manip qw(ParseDate); my $blocksize = 8; # A blowfish block is 8 bytes my $configfile = "/etc/userdir-ldap/userdir-ldap.conf"; -#my $configfile = "/home/randolph/projects/userdir-ldap/userdir-ldap.conf"; +#my $configfile = "/home/randolph/html/debian/perl/userdir-ldap.conf"; my %config = &ReadConfigFile; @@ -120,27 +121,27 @@ sub ReadPasswordFromFile { } sub CheckAuthToken { - my ($id, $hrkey) = split(/:/, shift, 2); + my ($id, $hrkey) = split(/,/, shift, 2); return undef if (!$id || !$hrkey); my $key = pack("H".(length($hrkey)), $hrkey); my $cipher = new Crypt::Blowfish $key; my $r = ReadPasswordFromFile($id, $cipher); if ($r) { - UpdateAuthToken("$id:$hrkey", $r); + UpdateAuthToken("$id,$hrkey", $r); } else { - ClearAuthToken("$id:$hrkey") + ClearAuthToken("$id,$hrkey") } return $r; } sub ClearAuthToken { - my ($id, $hrkey) = split(/:/, shift, 2); + my ($id, $hrkey) = split(/,/, shift, 2); $id =~ y/\//_/; # switch / to _ unlink "$config{authtokenpath}/$id" || &HTMLError("Error removing authtoken: $!"); } sub UpdateAuthToken { - my ($id, $hrkey) = split(/:/, shift, 2); + my ($id, $hrkey) = split(/,/, shift, 2); my $password = shift; my $key = pack("H".(length($hrkey)), $hrkey); $id =~ y/\//_/; # switch / to _ @@ -203,6 +204,28 @@ sub FormatTimestamp { return sprintf("%04d/%02d/%02d %02d:%02d:%02d UTC", $1,$2,$3,$4,$5,$6); } +sub FormatLastSeen { +# Format: +# [Tue, 11 Jan 2000 02:37:18] "Joey Hess " " archive/latest/7130" "<20000110181924.H19910@kitenet.net>" +# [Mon, 10 Jan 2000 21:48:19] "9E1E 1052 F8BB A351 0606 5527 50BB 2974 2D59 A7D2" " archive/latest/58632" "<20000110200506.13257.qmail@master.debian.org>" + my $lastseenpgp = shift; + my $lastseenfrom = shift; + my ($d1, $d2, $lastseen); + + return "No activity detected" if (!$lastseenpgp && !$lastseenfrom); + $lastseen = $lastseenfrom if (!$lastseenpgp); + + if ($lastseenfrom && $lastseenpgp) { + ($d1) = ($lastseenpgp =~ /^\[(.+?)\]/); $d1 = ParseDate($d1); + ($d2) = ($lastseenfrom =~ /^\[(.+?)\]/); $d2 = ParseDate($d2); + $lastseen = (($d1 gt $d2) ? $lastseenpgp : $lastseenfrom); + } + + my ($date,$user,$list,$msgid) = ($lastseen =~ /^\[(.+?)\]\s+"(.+?)"\s+"(?:<(.+?)>.+?|\-)"\s+"<(.+?)>"/); + $list = "on $list" if ($list); + return "$date $list
 Message ID: $msgid"; +} + sub LookupCountry { my $in = shift; my ($abbrev, $country); @@ -265,8 +288,8 @@ sub ReadConfigFile { ($attr, $setting) = split(/=/, $_, 2); $setting =~ s/"//g; #" $setting =~ s/;$//; - $attr =~ s/^ +//; $attr =~ s/ +$//; - $setting =~ s/^ +//; $setting =~ s/ +$//; + $attr =~ s/^\s+//; $attr =~ s/\s+$//; + $setting =~ s/^\s+//; $setting =~ s/\s+$//; $config{$attr} = $setting; } }