version 1.1, 2002/05/29 20:57:16
|
version 1.4, 2005/04/07 06:56:21
|
Line 25
|
Line 25
|
# |
# |
# http://www.lon-capa.org/ |
# http://www.lon-capa.org/ |
# |
# |
# Scott Harrison |
|
# YEAR=2001 |
|
# 8/15,9/28,12/11 |
|
# |
|
### |
### |
|
|
# 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; |
|
} |
|
|
|
my %env; |
|
|
$|=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(/=/,$_); |
$value =~ tr/+/ /; |
$value =~ tr/+/ /; |
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; |
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; |
if ($name eq 'url') { |
if ($name eq 'url') { |
$ENV{'form.'.$name}=$value; |
$env{'form.'.$name}=$value; |
} |
} |
} |
} |
|
|
|
|
|
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 |