#!/usr/bin/perl -W

# TP proxy HTTP
#
# Question 1
#
# Antoine Miné
# 15/05/2007

use IO::Socket::INET;  # on utilise l'interface orientée-objet

# création de la socket d'écoute
$listen = new IO::Socket::INET(LocalPort => '8080', 
			       Proto => 'tcp', 
			       Listen => 5, 
			       ReuseAddr => 1, )
    or die "échec de création de la socket d'écoute: $!";

# boucle de traitement des connections
while ($client = $listen->accept()) {

    # lit la requête
    $req = <$client>;
    ($url) = $req =~ m!GET (\S*) HTTP/1.?! or die "requête non reconnue: $_";

    # lit les en-têtes
    while ($l = <$client>) {
	last if $l =~ /^\r\n$/;
    }

    # renvoie une réponse d'erreur
    print $client "HTTP/1.1 403 Forbidden\r\n";
    print $client "Connection: close\r\n";
    print $client "Content-type: text/html\r\n";
    print $client "\r\n";
    print $client "<html><head><title>Erreur!</title></head>\r\n";
    print $client "<body><p>Je n'aime pas $url.</body></html>\r\n";

    close $client;
}
