--- loncom/cgi/thumbnail.gif 2002/05/29 20:57:16 1.1 +++ loncom/cgi/thumbnail.gif 2005/04/07 06:56:21 1.4 @@ -25,33 +25,85 @@ # # http://www.lon-capa.org/ # -# Scott Harrison -# YEAR=2001 -# 8/15,9/28,12/11 -# ### # Example usage: /cgi-bin/thumbnail.gif?url=... + 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 foreach (split(/&/,$ENV{'QUERY_STRING'})) { my ($name, $value) = split(/=/,$_); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; 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 print <); # output image