[LON-CAPA-cvs] cvs: loncom /cgi thumbnail.gif
www
lon-capa-cvs@mail.lon-capa.org
Wed, 29 May 2002 22:12:11 -0000
www Wed May 29 18:12:11 2002 EDT
Modified files:
/loncom/cgi thumbnail.gif
Log:
Can now find existing thumbnails and will ship them if younger than original.
Index: loncom/cgi/thumbnail.gif
diff -u loncom/cgi/thumbnail.gif:1.1 loncom/cgi/thumbnail.gif:1.2
--- loncom/cgi/thumbnail.gif:1.1 Wed May 29 16:57:16 2002
+++ loncom/cgi/thumbnail.gif Wed May 29 18:12:11 2002
@@ -33,8 +33,30 @@
# 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;
+}
+
$|=1; # Autoflush after each print/write
foreach (split(/&/,$ENV{'QUERY_STRING'})) {
my ($name, $value) = split(/=/,$_);
@@ -45,13 +67,45 @@
}
}
+
+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 <<END;
Content-type: image/gif
END
-my $fn='/home/httpd/html/res/adm/pages/nothumb.gif';
open (IN,$fn);
binmode(STDOUT);
print join('',<IN>); # output image