home *** CD-ROM | disk | FTP | other *** search
/ Internet 1996 World Exposition / park.org.s3.amazonaws.com.7z / park.org.s3.amazonaws.com / cgi-bin / image-push.pl.work < prev    next >
Text File  |  2017-09-21  |  3KB  |  127 lines

  1. #!/usr/local/bin/perl
  2. #
  3. # image-push CGI program.
  4. # written by Andrew Rutherford of Internode Systems <andrewr@internode.com.au>
  5. #
  6.  
  7.  
  8. # where we find local WWW libraries
  9. push(@INC, '/usr/local/etc/httpd/cgi-bin');
  10.  
  11.  
  12. require 'cgi-lib.pl';
  13. require 'cgilib2.pl';
  14.  
  15. $| = 1;
  16.  
  17. $prefix = "/web/";
  18. $default_method = "once";
  19.  
  20. $boundary = "NotVeryRandomString$$";
  21. $this_url = $ENV{"SERVER_URL"} . $ENV{"SCRIPT_NAME"};
  22.  
  23. if (&ReadParse == 0) {
  24. #        &do_error("Not to be called directly");
  25. }
  26. print @in ;
  27.  
  28. while (($key, $value) = each(%in)) {
  29. print "I am here\n" ;
  30.         if ((!defined($value)) || ($value eq "")) {
  31.                 $value = $key;
  32.         }
  33.  
  34.  
  35.         if ($value =~ /^once$/i) {
  36.                 if (!defined($method)) {
  37.                         $method = "once";
  38.                 } else {
  39.                         &do_error("More than one method specified");
  40.                 }
  41.         } elsif ($value =~ /^loop$/i) {
  42.                 if (!defined($method)) {
  43.                         $method = "loop";
  44.                 } else {
  45.                         &do_error("More than one method specified");
  46.                 }
  47.         } elsif ($value =~ /^sweep$/i) {
  48.                 if (!defined($method)) {
  49.                         $method = "sweep";
  50.                 } else {
  51.                         &do_error("More than one method specified");
  52.                 }
  53.         } elsif ($value =~ /^delay$/i) {
  54.                 $delay = 1;
  55.         } else {
  56.                 if (!defined($file)) {
  57.                         $file = $value;
  58.                         if ($file =~ /<|>|\.\.|\|/) {
  59.                                 &do_error("Invalid control file");
  60.                         }
  61.                 } else {
  62.                         &do_error("More than one control file specified");
  63.                 }
  64.         }
  65. }
  66.  
  67. $method = $default_method if (!defined($method));
  68.  
  69. #open(FILE, $prefix . $file) || &do_error("Cannot open $file");
  70. open(FILE, $file) || &do_error("Cannot open $file");
  71. $i = 0;
  72. while (<FILE>) {
  73.         chop;
  74.         s/#.*$//g;
  75.         next if /^$/;
  76.         if (/<|>|\.\.|\|/) {
  77.                 &do_error("Invalid file \"$_\"");
  78.         }
  79.         $images[$i++] = $prefix . $_;
  80. }
  81. close(FILE);
  82.  
  83. print "Content-type: multipart/x-mixed-replace;boundary=$boundary\n";
  84.  
  85. $i = 0;
  86. $increment = 1;
  87. while (1) {
  88.         for (; defined($images[$i]); $i += $increment) {
  89.                 print "\n--$boundary\n";
  90.                 if ($images[$i] =~ /\.jpg$|\.jpeg$/) {
  91.                         print "Content-type: image/jpeg\n\n";
  92.                 } else {
  93.                         print "Content-type: image/gif\n\n";
  94.                 }
  95.  
  96.                 open(FILE, $images[$i]);
  97.                 sysread(FILE, $this_image, (stat(FILE))[7]);
  98.                 close(FILE);
  99.  
  100.                 print $this_image;
  101.  
  102.                 sleep(1) if (defined($delay));
  103.         }
  104.         last if ($method eq "once");
  105.         if ($method eq "loop") {
  106.                 $i = 0;
  107.         }
  108.         if ($method eq "sweep") {
  109.                 $increment = - $increment;
  110.                 $i += $increment;
  111.         }
  112. }
  113.  
  114. print "\n--$boundary--\n";
  115. sleep(1);
  116. exit (0);
  117.  
  118. sub do_error {
  119.         print "Content-type: text/html\n\n" .
  120.                 "<title>Error: $_[0]</title>\n".
  121.                 "<body><h1>Error: $_[0]</h1></body>\n";
  122.         sleep (1);
  123.         exit (0);
  124. }
  125.  
  126.  
  127.