#!/usr/bin/perl
# yuno2.pl - Don Yang (uguu.org)
#
# 07/31/05
use strict;
use Socket;
use CGI ':standard';
my ($CHARSET, $MAXPOSTSIZE, $INTSIZE);
my ($Port, $Posts);
local (*SERVER, *CLIENT, *SERVER_PIPE, *CLIENT_PIPE);
$CHARSET = 'Shift_JIS';
$MAXPOSTSIZE = 0x20000;
$INTSIZE = length(pack 'I', 0);
sub ProcessRequest()
{
my ($request, $data, $headersize, $rsize);
$request = '';
while( defined(recv(CLIENT, $data, 1024, 0)) )
{
$request .= $data;
if( ($headersize = index($request, "\r\n\r\n")) > 0 )
{
$headersize += 4;
last;
}
if( ($headersize = index($request, "\n\n")) > 0 )
{
$headersize += 2;
last;
}
}
if( $request =~ /^POST / )
{
$rsize = ($request =~ /content-length:\s*(\d+)/i) ? $1 : $MAXPOSTSIZE;
$rsize -= length($request) - $headersize;
while( $rsize > 0 && defined(recv(CLIENT, $data, $rsize, 0)) )
{
$request .= $data;
$rsize -= length($data);
}
print (('-' x 32), "\n", $request, "\n");
my ($post, $query);
$post = substr($request, $headersize);
$query = new CGI($post);
$post = $query->param('x');
return if( $query->param('f') eq 'reload' );
$post =~ s/\r\n/\n/g;
if( $query->param('f') ne 'raw' )
{
$post =~ s/&/&/g;
$post =~ s/</g;
$post =~ s/>/>/g;
if( $query->param('f') eq 'post' )
{
$post =~ s/\n/
/g;
}
else
{
$post = "
\n$post"; } } $post .= '
' . (scalar localtime); $Posts = "\n