# author: Keith Simmons sub printfile { open (INSTRM, "$_[0]"); @filecont = ; 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;