#!/usr/bin/perl -w
# proxy_server.pl - Beispiel f. Socket Komm.
#
# Aufruf: proxy_server.pl [port]
# Wartet auf Verbindungen auf dem angegebenen Port [80] und 'besorgt'
# die gewuenschten Daten vom Zielserver (falls moeglich).
# Simuliert sehr einfachen Proxy-Tunnel.

my $VERSION = '0.01';
my $localhost = '127.0.0.1'

use IO::Socket;

sub response;
sub GET;
sub error_response;
sub ok_response;

$port = shift || 80;

$sock = IO::Socket::INET->new(
                              LocalHost => $localhost,
                              LocalPort => $port,
                              Proto     => 'tcp',
                              Listen    => 5,
                              Reuse     => 1,
                             ) or die $!;

$sock->autoflush();

while ($new_sock = $sock->accept()) {
  $new_sock->autoflush();
  print "Request received...\n";
  while ($request = <$new_sock>) {
    print STDERR "$request";
    $request =~ /^quit/ && last;
    $request =~ /^\s+$/ && last;
    $request =~ /^\.\s+$/ && last;
  }
  close $new_sock;
}

close $sock;