#!/usr/local/bin/perl
require '/home/todd/toddweb.env';
require "$PAGEHOMEDIR/weblib.lib";
$base="$PAGEHOMEDIR/www";
&makemimetype("/var/httpd/conf/mime.types");
&makemimetype("$PAGEHOMEDIR/conf/mime.types");
&ReadParse;
if($in{Mime}){
	$mime=$in{Mime} if $in{Mime};
	$type=$in{Type} if $in{Type};
}
if($in{URL}){$file=$in{URL};}
else{$file=substr($ENV{PATH_INFO},1);}
@file=split(m#/#,$file);
if($file[0] eq "stream"){
		$stream=shift(@file);
		$file=join("/",@file);
}
$filename=$file[$#file];
@filename=split(/\./,$filename);
$ext=pop(@filename);
$basefilename=join(".",@filename);
($mime,$type)=split(m#/#,$MIMETYPE{$ext});
if($mime eq ""){
	&htmlopen("Send Multimedia Object");
	print &PrintVariables(%MIMETPYE);
	print <<EOF;
<form action=$weblib::URL method=POST>
MIME Type <input name=Mime> Sub-type <input name=Type><br>
URL <input size=60 name=URL><br>
<input type=submit value="Send me Multimedia!">
</form>
EOF
&htmlclose;
exit;
}
if($file =~ m#^http://|^ftp://#){
	$file=~s/ /%20/g;
	open(BIN,"/home/todd/bin/hcat -d $file|");
}
elsif($stream && -r "$base/$file"){
	$stream="$weblib::URL/$file";
}
elsif(-r "$base/$file"){
	open(BIN,"$base/$file");
}
else{
	$stream="";
	&htmlopen("File not found");
	print "The file specified ($ENV{PATH_INFO}) is not available\n";
	&htmlclose;
	exit;
}
&htmlopen("$mime/$type=");
if($stream){print "$stream\n";}
else{
	while(read(BIN,$_,1024)){ print; }
}
sub makemimetype{
my $file=shift;
open(MIME,$file);
while(<MIME>){
	next if /^\s*#/;	# ignore comments
	s/\s*#.*//; # trim comments on line
	next if /^\s*$/;	# skip blank lines
	chop;
	($mimetype,@filetypes)=split(/\s+/);
	next if $#filetypes==-1;	# Valid mimetype, just can't map it
	foreach $filetype(@filetypes){$MIMETYPE{$filetype}=$mimetype;}
}
close(MIME);
}
