Diff for /loncom/cgi/thumbnail.gif between versions 1.1 and 1.4

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

Removed from v.1.1  
changed lines
  Added in v.1.4


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>