version 1.1, 2002/05/29 20:57:16
|
version 1.2, 2002/05/29 22:12:11
|
Line 33
|
Line 33
|
|
|
# Example usage: /cgi-bin/thumbnail.gif?url=... |
# Example usage: /cgi-bin/thumbnail.gif?url=... |
|
|
|
|
use strict; |
use strict; |
|
|
|
sub filelocation { |
|
my ($dir,$file) = @_; |
|
my $location; |
|
$file=~ s/^\s*(\S+)\s*$/$1/; ## strip off leading and trailing spaces |
|
if ($file=~m:^/~:) { # is a contruction space reference |
|
$location = $file; |
|
$location =~ s:/~(.*?)/(.*):/home/$1/public_html/$2:; |
|
} else { |
|
$file=~s/\/home\/httpd\/html//; |
|
$file=~s:^/*res::; |
|
if ( !( $file =~ m:^/:) ) { |
|
$location = $dir. '/'.$file; |
|
} else { |
|
$location = '/home/httpd/html/res'.$file; |
|
} |
|
} |
|
$location=~s://+:/:g; # remove duplicate / |
|
while ($location=~m:/\.\./:) {$location=~ s:/[^/]+/\.\./:/:g;} #remove dir/.. |
|
return $location; |
|
} |
|
|
$|=1; # Autoflush after each print/write |
$|=1; # Autoflush after each print/write |
foreach (split(/&/,$ENV{'QUERY_STRING'})) { |
foreach (split(/&/,$ENV{'QUERY_STRING'})) { |
my ($name, $value) = split(/=/,$_); |
my ($name, $value) = split(/=/,$_); |
Line 45 foreach (split(/&/,$ENV{'QUERY_STRING'})
|
Line 67 foreach (split(/&/,$ENV{'QUERY_STRING'})
|
} |
} |
} |
} |
|
|
|
|
|
my $ofn=&filelocation('',$ENV{'form.url'}); |
|
my $fn=$ofn.'.thumbnail'; |
|
|
|
my $exists=1; |
|
my $generate=0; |
|
|
|
if (-e $ofn) { |
|
my ($dev,$ino,$mode,$nlink, |
|
$uid,$gid,$rdev,$size, |
|
$atime,$omtime,$ctime, |
|
$blksize,$blocks)=stat($ofn); |
|
if (-e $fn) { |
|
my ($dev,$ino,$mode,$nlink, |
|
$uid,$gid,$rdev,$size, |
|
$atime,$mtime,$ctime, |
|
$blksize,$blocks)=stat($fn); |
|
if ($omtime>$mtime) { $generate=1; } |
|
} else { |
|
$generate=1; |
|
} |
|
} else { |
|
$exists=0; |
|
} |
|
|
|
# FIXME: generate thumbnail instead |
|
if ($generate) { $exists=0; } |
|
|
|
|
|
unless ($exists) { |
|
$fn='/home/httpd/html/res/adm/pages/nothumb.gif'; |
|
} |
|
|
# Tell the server we are sending a gif graphic |
# Tell the server we are sending a gif graphic |
print <<END; |
print <<END; |
Content-type: image/gif |
Content-type: image/gif |
|
|
END |
END |
|
|
my $fn='/home/httpd/html/res/adm/pages/nothumb.gif'; |
|
open (IN,$fn); |
open (IN,$fn); |
binmode(STDOUT); |
binmode(STDOUT); |
print join('',<IN>); # output image |
print join('',<IN>); # output image |