#!/usr/bin/perl -w use Socket; $port=8080; $proto=getprotobyname('tcp'); socket(Server, PF_INET, SOCK_STREAM, $proto) or die; setsockopt(Server, SOL_SOCKET, SO_REUSEADDR, pack("l", 1)) or die; bind(Server, sockaddr_in($port, INADDR_ANY)) or die; listen(Server, SOMAXCONN) or die; while(1) { accept(Client, Server); $foo=<Client>; @bar=split(/ /, $foo); if(uc($bar[0]) eq "GET") { if ($bar[1] eq "/") { $bar[1]="/index.html"; } $_ = $bar[1]; s/\.\.//g; $bar[1]=".$_"; if ( open(BAZ, $bar[1]) ) { while(<BAZ>) { print Client; } close BAZ; } else { print Client "404 / File not found\r\n"; } } else { print Client "501 / I don't know how to do what you're asking!\r\n"; } close Client; }