#!/usr/bin/perl use POSIX qw(strftime); $|=1; $boundary_string="\n"."--End"."\n"; $end_of_data="\n"."--End--"."\n"; $delay_time=2; $max_updates=20; print "Content-Type: multipart/x-mixed-replace;boundary=End\n"; print $boundary_string; for ($loop=0;$loop<$max_updates;$loop++){ &print_cam(); print $boundary_string; sleep($delay_time); } print $end_of_data; exit 0; sub print_cam{ #system("/home/opp/Bin/vid --small -d /dev/ugen0 | /home/opp/Bin/pnmtopng>/tmp/.cam.png"); open(CAM,"/tmp/.cam.png"); @cam=; close CAM; $len=length(join("",@cam)); print "Content-type: image/png\n"; print "Content-length: $len\n\n"; print @cam; &log(); } sub log{ if (!($ENV{REMOTE_HOST} =~ /muffin.org$/)){ open(L,">>/tmp/cam.log"); select(L); $d = strftime "%a %b %e %H:%M:%S %Y", gmtime; print $d.":"; if ($ENV{REMOTE_HOST}){ print $ENV{REMOTE_HOST}; }else{ print $ENV{REMOTE_ADDR}; } print "\n"; select(STDOUT); close L; } }