version 1.1, 2003/11/14 18:24:40
|
version 1.2, 2003/11/14 19:41:38
|
Line 1
|
Line 1
|
#!/usr/bin/perl -w |
#!/usr/bin/perl -w |
# |
# |
use strict; |
use strict; |
|
use GDBM_File; |
|
|
sub unescape { |
sub unescape { |
my $str=shift; |
my $str=shift; |
Line 12 my %resourceaccess;
|
Line 13 my %resourceaccess;
|
|
|
sub main { |
sub main { |
my $file=$ARGV[0]; |
my $file=$ARGV[0]; |
print STDERR "Using $file\n"; |
my ($path) = ($file =~ m:(.*)/activity\.log$:); |
|
my $target = $path.'/nohist_accesscount.db'; |
|
print STDERR "source: $file\ntarget: $target\n"; |
|
my %accessDB; |
|
my $accesstime = 0; |
|
my $starttime = time; |
|
if (-e $target) { |
|
if (! tie(%accessDB,'GDBM_File',$target,&GDBM_READER,0640)) { |
|
warn "Unable to tie to $target"; |
|
return; |
|
} |
|
# |
|
if (exists($accessDB{'tabulated '.$file})) { |
|
$accesstime = $accessDB{'tabulated '.$file}; |
|
} |
|
untie(%accessDB); |
|
} |
|
# |
my $line; |
my $line; |
open FILEID,'<'.$file; |
open FILEID,'<'.$file; |
my @allaccess; |
my @allaccess; |
print STDERR "Access by resource\n\n"; |
print STDERR "Access by resource after $accesstime\n\n"; |
my $numlines = 0; |
my $numlines = 0; |
while ($line=<FILEID>) { |
while ($line=<FILEID>) { |
$numlines++; |
$numlines++; |
Line 38 sub main {
|
Line 56 sub main {
|
shift(@accesses); |
shift(@accesses); |
while (@accesses) { |
while (@accesses) { |
my $date = shift(@accesses); |
my $date = shift(@accesses); |
|
next if ($date =~ /\D/ || $date < $accesstime); |
my $access = shift(@accesses); |
my $access = shift(@accesses); |
next if (! defined($access) || $access eq '' || |
next if (! defined($access) || $access eq '' || |
! defined($date) || $date eq ''); |
! defined($date) || $date eq ''); |
$access =~ s/(\&$|^:)//g; |
$access =~ s/(\&$|^:)//g; |
my ($resource,$who,$domain,$post,@posts)=split(':',$access); |
my ($resource,$who,$domain,$post,@posts)=split(':',$access); |
if (!$resource) { |
if (!$resource || $resource eq '') { |
next; |
next; |
} |
} |
$resource = &unescape($resource); |
$resource = &unescape($resource); |
if ($resource !~ m:/: || $resource =~ m:/prtspool/:) { |
if ($resource !~ m:(.*)/(.*)/: || $resource =~ m:/prtspool/:) { |
next; |
next; |
} |
} |
if ($resource =~ /___\d+___/) { |
if ($resource =~ /___\d+___/) { |
(undef,$resource) = split(/___\d+___/,$resource); |
(undef,$resource) = split(/___\d+___/,$resource); |
} |
} |
next if ($resource =~ m:^/(res/adm|adm)/:); |
next if ($resource =~ m:^/(res/adm|adm)/:); |
$resource =~ s:^/?res/?::; |
$resource =~ s:^/?res/::; |
$resourceaccess{$resource}++; |
$resourceaccess{$resource}++; |
} |
} |
} |
} |
print STDERR 'done.'.$/; |
print STDERR 'done. Updating '.$target.$/; |
|
if (! tie(%accessDB,'GDBM_File',$target,&GDBM_WRCREAT,0640)) { |
|
warn "Unable to open $target to store data".$/; |
|
return; |
|
} |
|
# |
while (my ($resource,$count) = each(%resourceaccess)) { |
while (my ($resource,$count) = each(%resourceaccess)) { |
|
if (exists($accessDB{$resource})) { |
|
$accessDB{$resource}+=$count; |
|
} else { |
|
$accessDB{$resource} = $count; |
|
} |
print sprintf("%10.0f",$count).':'.$resource."\n"; |
print sprintf("%10.0f",$count).':'.$resource."\n"; |
} |
} |
|
$accessDB{'tabulated '.$file} = $starttime; |
|
untie(%accessDB); |
} |
} |
|
|
main; |
main; |