# author: Keith Simmons

sub printfile {
	open (INSTRM, "$_[0]");
	@filecont = <INSTRM>;
	close (INSTRM);

	if ($_[1] eq ip) {
		foreach $line (@filecont) {
			$line =~ s/__IPADDRESS__/$ENV{'REMOTE_ADDR'}/g;
			print $line;
		}
	}

	else {
		foreach $line (@filecont) {
			print $line;
		}
	}
}

sub sanitize {
	$OK_CHARS='-a-zA-Z0-9_.@/~=: ';	# A restrictive list, which
					# should be modified to match
					# an appropriate RFC, for example.
	
	$_[0] =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
	
	$_[0] =~ s/[^$OK_CHARS]/_/go;
	return $_[0];
#	exit(0);
}

sub parseCookie { 
    if ($ENV{'HTTP_COOKIE'}) {
	@cookies = split (/;/, $ENV{'HTTP_COOKIE'});
	
	foreach $cookie (@cookies) {
	    ($name, $value) = split (/=/, $cookie);
	    
	    $value =~ s/\+/ /g;

	    $name = &sanitize($name);
	    $value = &sanitize($value);
	    
	    $name =~ s/ //g;
	    
	    $crumbs{$name} = $value;
	}
    }
}

sub parseIn {
    if ($ENV{'REQUEST_METHOD'} eq 'GET') {
	@pairs = split(/&/,$ENV{'QUERY_STRING'});
    } elsif ($ENV{'REQUEST_METHOD'} eq 'POST') {
	read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
	@pairs = split(/&/,$buffer);
    }
    
    foreach $pair (@pairs) {
	$pair = &sanitize($pair);
	($key, $value) = split(/=/,$pair);
	$formdata{$key} = $value;
    }
    
    if ( $_[0] eq "set" ) {
	foreach $pair (@pairs) {
	    print "Set-Cookie:$pair; expires=Tue, 31-Dec-2003 00:00:00 GMT; domain=oneiro.rh.rit.edu\n";
	}
    }
}

1;
