| 
<?
/**
 * Web Server
 *
 * This Class in a example of a Web Server create using class pserver
 *
 * @package pserver
 * @subpackage pserver.example
 * @author Pedro Vargas (deer@deerme.org) http://deerme.org
 * @version 0.2
 * @licence GNU Free Documentation License (FDL)
 */
 
 require('pserver.class.php');
 
 
 class webserver extends pserver
 {
 
 var $path_site = "./html";
 
 /**
 * Read data on the client
 */
 
 function read( $client  )
 {
 $data = (trim(@socket_read($client['socket'], $this->bufferin, (  $this->socketbinary ?  PHP_BINARY_READ : PHP_NORMAL_READ  ) )));
 
 $get_headers = explode("\n", $data );
 
 $get = explode(" ", $get_headers[0] );
 
 if ( trim($get[0]) == "GET" )
 {
 if ( trim($get[2]) == "HTTP/1.1" )
 {
 if ( trim($get[1]) == "/" )
 $get[1] = "index.html";
 
 // This server only accept GET in one level
 if ( is_file( $this->path_site . "/" . basename( $get[1] ) )  )
 {
 $this->_logger("GET" , $this->path_site . "/" . basename( $get[1] ). " ".$client["ip"] );
 $this->write( $client , file_get_contents( $this->path_site . "/" . basename( $get[1] ) ) );
 }
 else
 {
 $this->http_error(404 , "File Not Found","This File not found in Server" , true , $client);
 }
 }
 else
 {
 $this->http_error(501 , "Protocol Error","This Server only accept HTTP/1.1" , true , $client);
 }
 }
 else
 {
 $this->http_error(501, "Method Error","This Server only accept GET Method" , true , $client);
 }
 }
 
 /**
 * Write data on the client
 */
 function write(  &$client , $data )
 {
 $data_return = "HTTP/1.1 200 OK
 Server: Web Server extends from pserver Class /(%s) PHP (%s) by deerme.org
 X-Powered-By: PServer %s in %s %s
 Content-Type: text/html
 
 $data
 ";
 @socket_write($client['socket'], sprintf($data_return , PHP_OS , PHP_VERSION , $this->verion , PHP_OS , PHP_VERSION )  );
 $this->client_close($client);
 
 }
 
 
 function http_error( $code ,  $title , $error , $disconnect = true , $client)
 {
 $this->_logger("HTTP". $code , $title." ".$error);
 $data_return = "HTTP/1.1 $code Not Found
 Date: Wed, 24 Feb 2010 16:59:21 GMT
 Server: Web Server extends from pserver Class /(%s) PHP (%s) by deerme.org
 X-Powered-By: PServer %s in %s %s
 
 
 ";
 if ( $code == "404" )
 $data_return .= "<html><head><title>404 Not Found</title></head><h1>404 Not Found</h1></html>";
 @socket_write($client['socket'], sprintf($data_return , PHP_OS , PHP_VERSION , $this->verion , PHP_OS , PHP_VERSION )  );
 $this->client_close( $client );
 }
 
 
 
 }
 
 $ip = ($argv[1] ? $argv[1] : 0 );
 $p = ($argv[2] ? (int)$argv[2] : 8080 );
 
 $server = new webserver($ip, $p );
 $server->socketbinary = true;
 $server->auto_write = false;
 $server->welcome_send = false;
 $server->path_site = "./html";
 $server->start();
 
 ?>
 |