package jip;
#
jip.pm
#
#
#
#
use Carp;
#20020913 global config var
use vars qw(@ISA @EXPORT $debug $ddns $stukjehead %config);
require Exporter;
require DynaLoader;
require AutoLoader;
@ISA = qw(Exporter DynaLoader);
@EXPORT = qw(last imgdes lastaccess voet hoofd lookup_page_begun htmlcheck jpg_comment err mkclean ddns toencode d2moch d2uur d2hum domdoc di imgsiz getfiles
exif_data getconfig _getexif getfileswhen
voet2
) ;
use strict;
use Date::Manip;
use Image::Size;
use Storable;
sub getconfig{
#20020814
my $file='/www/bin/x/gfx.conf';
return %config if %config;
my %config;
open (FILE,"<$file")||die "cannot open config $file $!";
LINE: while (){
my $line=$_;
next LINE if $line =~ m!^#!;
my ($var,$val)= $line =~ m!(.*)=(.*)!gics;
next LINE unless ($var&&$val);
$val=~ s!\n$!!gis;
if ($var&&$val){
$config{$var}=$val;
}
}
if ($debug){
print " configfile [$file] ";
foreach my $var(keys %config){
my $val=$config{$var};
print " $var: [$val] ";
}
print " br ";
}
return %config;
}
sub getfiles{
# 20020913, wrapper voor getfileswhen()
my ($file)=@_;
print " getfiles($file) " if $debug;
my %config=getconfig();
my $cachedir=$config{'cachedir'};
print " cachedir: $cachedir " if $debug;
my $filem="when." . $file . ".cache" ;
$filem=~ s!//!/!gis;
$filem=~ s!/!_!gis;
my $findcache=$cachedir . "/" . $filem;
print " findcache: $findcache " if $debug;
my %when;
if (-e $findcache){
print " cache bestaat. " if $debug;
%when = %{ retrieve($findcache) };
}else{
print " cache bestaat niet. " if $debug;
%when=getfileswhen($file);
store(\%when, $findcache);
}
return %when;
}
sub getfileswhen{
my ($file)=@_;
warn " getfiles($file) ";
my %when;
use File::Find;
find (sub {
return unless -f;
return if (-d $File::Find::name);
return if ($_ =~ /rdf/);
return if ($File::Find::name =~ /\.xvpics/);
return if ($File::Find::name =~ /\.html/);
return if ($File::Find::name =~ /thumb/);
return if ($File::Find::name =~ /\.pl$/);
return if ($File::Find::name =~ /Small/);
return if ($File::Find::name =~ /\.xml$/);
return if ($File::Find::name =~ /orig/);
return if ($File::Find::name =~ /\.mpg$/);
return if ($File::Find::name =~ /\.yuv$/);
return if ($File::Find::name =~ /\~$/);
return if ($File::Find::name =~ /README/);
return if ($File::Find::name =~ /follow\//);
return if ($File::Find::name =~ /\.sh$/);
return if ($File::Find::name =~ /index.png/);
return if ($File::Find::name =~ /\.db$/i);
$when{$File::Find::name} = (stat _)[9];
},$file) || print " Error: getfileswhen($file) $!";
unless(%when){
warn " warning:getfileswhen($file) is empty ";
}
return %when;
}
sub imgsiz{
my $file=shift;
my %size;
# $debug=1;
my %config=getconfig();
my $cachedir=$config{'cachedir'};
print " cachedir: $cachedir " if $debug;
my $filem="size.$file.cache";
$filem=~ s!//!/!gi;
$filem=~ s!/!_!gis;
my $findcache=$cachedir . "/" . $filem;
print " sizecache:$findcache " if $debug;
if (-e $findcache){
print " cache bestaat. " if $debug;
%size = %{ retrieve($findcache) };
}else{
print " cache bestaat niet. " if $debug;
my ($w,$h)=imgsize($file);
$size{'w'}=$w;
$size{'h'}=$h;
store(\%size, $findcache);
}
return $size{'w'},$size{'h'};
}
sub imgdes{
my $file=shift;
# $debug=1;
my %config=getconfig();
my $cachedir=$config{'cachedir'};
print " cachedir: $cachedir " if $debug;
my $filem="description.$file.cache";
$filem=~ s!//!/!gis;
$filem=~ s!/!_!gis;
my $findcache=$cachedir . "/" . $filem;
print " descriptioncache:$findcache " if $debug;
my $des;
if (-e $findcache){
print " cache bestaat. " if $debug;
$des = ${ retrieve($findcache) };
}else{
print " cache bestaat niet. " if $debug;
$des=jpg_comment($file);
$des = "" if ($des=~/LEAD/);
if ($des =~ /rdf:RDF/){
$des =~ s!<\?xml version.*#image">!!gs;
$des =~ s!(.*)<\/s\d:.*>!$1: $2!g;
$des =~ s!<\/rdf:Description>.*!!gs;
# mangle rdf
my $de;
$des =~ s!<\?xml version.*#image">!!gs;
$des =~ s!(.*)<\/s\d:.*>!$1: $2!g;
($de)=$des=~ /Title:(.*?)\n/s;
$des=$de;
}
$des =~ s!\n!
\n!g;
$des="" if ($des =~ /Created\s+with\s+The\s+GIMP/) ;
$des="" if ($des =~ /gPhoto2/) ;
$des="" if ($des =~ /CREATOR/) ;
$des="" if ($des =~ /XV/);
$des="" if ($des =~ /LEAD/);
$des="" if ($des =~ /Adobe/);
$des=$des." ";
store(\$des, $findcache);
}
$des=~ s!\s$!!gis;
$des=~ s!^\s!!gis;
return $des;
}
sub last{
my $t=shift;
my $r;
print "
$t
" if $debug;
my @last=`tail --lines=93400 /var/log/apache/access_log|grep '"GET /$t HTTP/1.[10]"' |grep -v localhost|grep -v kort.xs4all.nl`;
# my @last=`tail --lines=93400 /var/log/apache/access_log|grep '"GET /[Gf]fx/$t HTTP/1.[10]"' |grep -v localhost|grep -v utr.casema.net`;
return unless (@last);
$r="";
foreach my $i(@last){
my($host,$refer,$browser)=$i=~ m!(.*)\s-\s-\s\[.*\]\s\".*\"\s\d+\s\d+\s\"(.*)\"\s\"(.*)\"!;
$host=<$host
GROK
if ($refer ne '-'){
$refer =~ s!&!&!g;
$refer =~ s!&!&!g;
my $refert = $refer;
$refert =~ s!&!&\n!g;
$refer=<$refert
GROK
}else{$refer='';}
$browser='' if ($browser eq '-');
$r .= "- $host $refer $browser
";
}
$r .= "
";
return $r;
return $t;
}
sub lastaccess{
my $t=shift;
my $r;
print "
$t
" if $debug;
my @last=`tail --lines=93400 /var/log/apache/access_log|grep '"GET /gfx/$t HTTP/1.[10]"' |grep -v localhost|grep -v utr.casema.net`;
# my @last=`tail --lines=93400 /var/log/apache/access_log|grep '"GET /[Gf]fx/$t HTTP/1.[10]"' |grep -v localhost|grep -v utr.casema.net`;
return unless (@last);
$r="";
foreach my $i(@last){
my($host,$refer,$browser)=$i=~ m!(.*)\s-\s-\s\[.*\]\s\".*\"\s\d+\s\d+\s\"(.*)\"\s\"(.*)\"!;
$refer=" " unless $refer;
$browser=" " unless $browser;
$host=" " unless $host;
$host=<$host
GROK
if ($refer ne '-'){
$refer =~ s!&!&!g;
$refer =~ s!&!&!g;
my $refert = $refer;
$refert =~ s!&!&\n!g;
$refer=<$refert
GROK
}else{$refer='';}
$browser='' if ($browser eq '-');
$r .= "- $host $refer $browser
";
}
$r .= "
";
return $r;
return $t;
}
sub lastaccesstmp{
my $ding=shift;
my $r;
my @last=`tail --lines=3400 /var/log/apache/access_log|grep '"GET /$ding HTTP/1.[10]"' |grep -v localhost|grep -v utr.casema.net`;
return unless (@last);
$r .= "\n