X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=web%2FUtil.pm;h=b1b85f3f0b0b1c6971a6a8833b9997a1ecfc0438;hb=c4eb04f39b013155c9f99d1c0933e03fe17033d0;hp=4cbec32fb1bd5c1f0b8f1594ee6b1504e643283b;hpb=c50d88536a4feb3087d1aa802e110250cb2861fc;p=mirror%2Fuserdir-ldap.git diff --git a/web/Util.pm b/web/Util.pm index 4cbec32..b1b85f3 100644 --- a/web/Util.pm +++ b/web/Util.pm @@ -2,13 +2,19 @@ package Util; use strict; -use Crypt::Blowfish; my $blocksize = 8; # A blowfish block is 8 bytes my $configfile = "/etc/userdir-ldap/userdir-ldap.conf"; +#my $configfile = "/home/randolph/html/debian/perl/userdir-ldap.conf"; my %config = &ReadConfigFile; +my $hascryptix = 1; +eval 'use Crypt::Blowfish'; +if ($@) { + $hascryptix = undef; +} + sub CreateKey { my $keysize = shift; my $input; @@ -46,8 +52,8 @@ sub Encrypt { $input .= " " x ($blocksize - (length($input) % $blocksize)) if (length($input % $blocksize)); - for ($pos = 0; $pos < length($input); $pos += $blocksize) { - $output .= unpack("H16", $cipher->encrypt(substr($input, $pos, $blocksize))); + for ($pos = 0; $pos < length($input); $pos += $blocksize) { + $output .= unpack("H16", $cipher->encrypt(substr($input, $pos, $blocksize))) if ($hascryptix); } return $output; } @@ -63,7 +69,7 @@ sub Decrypt { for ($pos = 0; $pos < length($input); $pos += $blocksize*2) { $portion = pack("H16", substr($input, $pos, $blocksize*2)); - $output .= $cipher->decrypt($portion); + $output .= $cipher->decrypt($portion) if ($hascryptix); } $output =~ s/ +$//; @@ -114,27 +120,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 _ @@ -169,7 +175,7 @@ sub FormatFingerPrint { sub FetchKey { my $fingerprint = shift; - my ($out, $keyringparam); + my ($out, $keyringparam) = undef; foreach (split(/:/, $config{keyrings})) { $keyringparam .= "--keyring $_ "; @@ -179,10 +185,10 @@ sub FetchKey { $fingerprint = "0x".$fingerprint; $/ = undef; # just suck it up .... - open(FP, "$config{gpg} $keyringparam --list-sigs --fingerprint $fingerprint|"); + open(FP, "$config{gpg} --no-options --no-default-keyring $keyringparam --list-sigs --fingerprint $fingerprint|"); $out = ; close FP; - open(FP, "$config{gpg} $keyringparam --export -a $fingerprint|"); + open(FP, "$config{gpg} --no-options --no-default-keyring $keyringparam --export -a $fingerprint|"); $out .= ; close FP; $/ = "\n"; @@ -197,6 +203,18 @@ 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 $lastseen = shift; + return "No activity detected" if (!$lastseen); + + my ($date,$user,$list,$msgid) = ($lastseen =~ /^\[(.+?)\]\s+"(.+?)"\s+"<(.+?)>.+?"\s+"<(.+?)>"/); + + return "$list
Message ID: $msgid"; +} + sub LookupCountry { my $in = shift; my ($abbrev, $country); @@ -257,10 +275,10 @@ sub ReadConfigFile { # Chop off any trailing comments s/#.*//; ($attr, $setting) = split(/=/, $_, 2); - $setting =~ s/"//g; + $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; } }