diff options
Diffstat (limited to '')
| -rw-r--r-- | scripts/multipart/multipart.cgi | 272 | 
1 files changed, 0 insertions, 272 deletions
| diff --git a/scripts/multipart/multipart.cgi b/scripts/multipart/multipart.cgi deleted file mode 100644 index e7c71e5..0000000 --- a/scripts/multipart/multipart.cgi +++ /dev/null @@ -1,272 +0,0 @@ -#!/usr/local/bin/perl - -if ($use_NKF = eval "use NKF;") { -	$CONV = "-e"; -	$MIME_DECODE = "-m -e"; -} else { -#	$CONV = "w3m -dump -e"; -	$CONV = "/usr/local/bin/nkf -e"; -	$MIME_DECODE = "/usr/local/bin/nkf -m -e"; -} -$MIME_TYPE = "$ENV{'HOME'}/.mime.types"; - -if (defined($ENV{'QUERY_STRING'})) { -	for (split('&', $ENV{'QUERY_STRING'})) { -		s/^([^=]*)=//; -		$v{$1} = $_; -	} -	$file = &form_decode($v{'file'}); -	$boundary = &form_decode($v{'boundary'}); -} else { -	$file = $ARGV[0]; -	if (@ARGV >= 2) { -		$boundary = $ARGV[1]; -	} -	$CGI = "file:///\$LIB/multipart.cgi?file=" . &html_quote($file); -} - -open(F, $file); -$end = 0; -$mbody = ''; -if (defined($boundary)) { -	while(<F>) { -		s/\r?\n$//; -		($_ eq "--$boundary") && last; -		($_ eq "--$boundary--") && ($end = 1, last); -		$mbody .= "$_\n"; -	} -} else { -	while(<F>) { -		s/\r?\n$//; -		if (s/^\-\-//) { -			$boundary = $_; -			last; -		} -		$mbody .= "$_\n"; -	} -} -$CGI .= "&boundary=" . &html_quote($boundary); - -if (defined($v{'count'})) { -	$count = 0; -	while($count < $v{'count'}) { -		while(<F>) { -			s/\r?\n$//; -			($_ eq "--$boundary") && last; -		} -		eof(F) && exit; -		$count++; -	} - -	%header = (); -	$hbody = ''; -	while(<F>) { -		/^\s*$/ && last; -		$x = $_; -		s/\r?\n$//; -		if (/=\?/) { -			$_ = &decode($_, $MIME_DECODE); -		} -		if (s/^(\S+)\s*:\s*//) { -			$hbody .= "$&$_\n"; -			$p = $1; -			$p =~ tr/A-Z/a-z/; -			$header{$p} = $_; -		} elsif (s/^\s+//) { -			chop $hbody; -			$hbody .= "$_\n"; -			$header{$p} .= $_; -		} -	} -	$type = $header{"content-type"}; -	$dispos = $header{"content-disposition"}; -	if ($type =~ /application\/octet-stream/) { -		if ($type =~ /type\=gzip/) { -			print "Content-Encoding: x-gzip\n"; -		} -		if ($type =~ /name=\"?([^\"]+)\"?/ || -			$dispos =~ /filename=\"?([^\"]+)\"?/) { -			$type = &guess_type($1); -			if ($type) { -				print "Content-Type: $type; name=\"$1\"\n"; -			} else { -				print "Content-Type: text/plain; name=\"$1\"\n"; -			} -		} -	} -	print $hbody; -	print "\n"; -	while(<F>) { -		$x = $_; -		s/\r?\n$//; -		($_ eq "--$boundary") && last; -		if ($_ eq "--$boundary--") { -			last; -		} -		print $x; -	} -	close(F); -	exit; -} - -if ($mbody =~ /\S/) { -	$_ = $mbody; -	s/\&/\&/g; -	s/\</\</g; -	s/\>/\>/g; -	print "<pre>\n"; -	print $_; -	print "</pre>\n"; -} - -$count = 0; -while(! $end) { -	%header = (); -	$hbody = ''; -	while(<F>) { -		/^\s*$/ && last; -		s/\r?\n$//; -		if (/=\?/) { -			$_ = &decode($_, $MIME_DECODE); -		} -		if (s/^(\S+)\s*:\s*//) { -			$hbody .= "$&$_\n"; -			$p = $1; -			$p =~ tr/A-Z/a-z/; -			$header{$p} = $_; -		} elsif (s/^\s+//) { -			chop $hbody; -			$hbody .= "$_\n"; -			$header{$p} .= $_; -		} -	} -	$type = $header{"content-type"}; -	$dispos = $header{"content-disposition"}; -       if ((! $type || $type =~ /^text\/plain/i) && -        (! $dispos || $dispos =~ /^inline/i)) { -		$plain = 1; -	} else { -		$plain = 0; -	} -	$body = ''; -	while(<F>) { -		s/\r?\n$//; -		($_ eq "--$boundary") && last; -		if ($_ eq "--$boundary--") { -			$end = 1; -			last; -		} -		if ($plain) { -			$body .= "$_\n"; -		} -	} -	$| = 1; -	print "<hr>\n"; -	{ -		$_ = $hbody; -		s/\&/\&/g; -		s/\</\</g; -		s/\>/\>/g; -		print "<pre>\n"; -		print $_; -		if ($type =~ /name=\"?([^\"]+)\"?/ || -			$dispos =~ /filename=\"?([^\"]+)\"?/) { -			$name = $1; -		} else { -			$name = "[Content]"; -		} -		print "\n<a href=\"$CGI&count=$count\">", &html_quote($name), "</a>"; -		print "\n\n</pre>\n"; -	} -	if ($plain) { -		$body = &decode($body, $CONV);  -		$_ = $body; -		s/\&/\&/g; -		s/\</\</g; -		s/\>/\>/g; -		print "<pre>\n"; -		print $_; -		print "</pre>\n"; -	} -	eof(F) && last; -	$count++; -} -close(F); - -sub decode { -if ($use_NKF) { -	local($body, $opt) = @_; -	return nkf($opt, $body); -} -	local($body, @cmd) = @_; -	local($_); - -	$| = 1; -	pipe(R, W2); -	pipe(R2, W); -	if (! fork()) { -		close(F); -		close(R); -		close(W); -		open(STDIN, "<&R2"); -		open(STDOUT, ">&W2"); -		exec @cmd; -		die; -	} -	close(R2); -	close(W2); -	print W $body; -	close(W); -	$body = ''; -	while(<R>) { -		$body .= $_; -	} -	close(R); -	return $body; -} - -sub html_quote { -  local($_) = @_; -  local(%QUOTE) = ( -    '<', '<', -    '>', '>', -    '&', '&', -    '"', '"', -  ); -  s/[<>&"]/$QUOTE{$&}/g; -  return $_; -} - -sub form_decode { -  local($_) = @_; -  s/\+/ /g; -  s/%([\da-f][\da-f])/pack('c', hex($1))/egi; -  return $_; -} - -sub guess_type { -	local($_) = @_; - -	/\.(\w+)$/ || next; -	$_ = $1; -	tr/A-Z/a-z/; -	%mime_type = &load_mime_type($MIME_TYPE); -	$mime_type{$_}; -} - -sub load_mime_type { -	local($file) = @_; -	local(%m, $a, @b, $_); - -	open(M, $file) || return (); -	while(<M>) { -		/^#/ && next; -		chop; -		(($a, @b) = split(" ")) >= 2 || next; -		for(@b) { -			$m{$_} = $a; -		} -	} -	close(M); -	return %m; -} | 
