HJ's WebServer 0.3 ¶
- 로 는 물론고, 미 , 멀미디 , 다로드 모두 가능
- PHP 립를 (는 : html, htm, php)
- 디렉리명로 근 경 index.html, index.htm, index.php 로 가
- 다 보 문 대 결 방법 련놓 , 된 디렉리 는 만 보록
To Do.. ¶
- GET Method로 Query String를 리다.
- POST Method, COOKIE 로 데까 리 면 더 다.
드 ¶
~php
<?
$index_file = array("index.html", "index.htm", "index.php");
$host = "IP 또는 메 ";
$port = 8080;
set_time_limit(0);
if(!function_exists("mime_content_type"))
{
function mime_content_type($f)
{
return exec(trim("file -bi ".escapeshellarg($f)));
}
}
//echo str_repeat(" ",300);
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, $host, $port);
socket_setopt($socket, SOL_SOCKET, SO_REUSEADDR, 1);
socket_listen($socket);
$i = 100;
while($i--)
{
$client_socket = socket_accept($socket);
$result = "";
while(false!==($read = socket_read($client_socket, 100, PHP_NORMAL_READ)))
{
echo "> ".$read;
if(!$read = trim($read)) $cnt++;
else $cnt=0;
if($cnt==3) break;
flush();
if(preg_match("/(GET|POST) (\/[^ \/]*) (HTTP\/[0-9]+.[0-9]+)/i", $read, $t))
{
$file = "/home/kesarr".$t[2];
if(preg_match("/\/$/", $file))
{
foreach($index_file as $idxf)
{
if(is_readable($file.$idxf))
{
$file .= $idxf;
break;
}
}
}
if(is_readable($file))
{
$size = @getimagesize($file);
if($size['mime']) $mime = $size['mime'];
else $mime = mime_content_type($file);
$res[] = "HTTP/1.1 200 OK";
$res[] = "Server: Kesarr's WebServer";
$res[] = "Connection: close";
$to_read = $file;
}
else
{
$res[] = "HTTP/1.1 404 Not Found";
$res[] = "Server: Kesarr's WebServer";
$res[] = "Content-Length: ".strlen(" 다.");
$res[] = "Connection: close";
$res[] = "Content-Type: $size[mime];charset=UTF-8;";
$res[] = "";
$res[] = " 다.";
}
}
if($read == "close")
{
break;
}
elseif($read == "a")
{
$result = $read;
}
elseif($read == "exit")
{
socket_close($client_socket);
socket_close($socket);
exit;
}
}
if($res)
{
if($to_read)
{
if(preg_match("/\.(html|htm|php)$/", $to_read))
{
$buffer = shell_exec(trim("php ".escapeshellarg($to_read)));
$res[] = "Content-Length: ".strlen($buffer);
$res[] = "";
$result = join("\r\n", $res);
@socket_write($client_socket, $result);
echo $result;
@socket_send($client_socket, $buffer, strlen($buffer), 0);
$buf = explode("\r\n\r\n", $buffer);
echo $buf[0]."\r\n\r\nPHP Parse: ";
}
else
{
$res[] = "Content-Length: ".filesize($file);
$res[] = "Content-Type: ".$mime;
$res[] = "";
$res[] = "";
$result = join("\r\n", $res);
@socket_write($client_socket, $result);
echo $result;
@socket_send($client_socket, $buffer, strlen($buffer), 0);
if(preg_match("/^text\//", $mime))
{
$fp = fopen($to_read, "r");
echo "ASCII Read: ";
}
else
{
$fp = fopen($to_read, "rb");
echo "Binary-safe Read: ";
}
while(!feof($fp)){
$buffer=fread($fp,128);
@socket_send($client_socket, $buffer, strlen($buffer), 0);
}
fclose($fp);
}
echo $to_read;
}
else
{
$result = join("\r\n", $res);
socket_write($client_socket, $result);
echo $result;
}
echo "\r\n__EOF__\r\n\r\n";
flush();
}
socket_close($client_socket);
unset($res);
unset($to_read);
unset($result);
}
socket_close($socket);
?>
다 만들. ㅋㅋ 다. 가 부 공로 먹고 라면 메 를 C나 Java로 바꾸는 게 것 같다. - eternalbleu
- PHP로 면 립 로그래밍 겁다고나 까? 그런 느낌 PHP를 긴 만, UI를 루만 런 께면 대부 로 같 루 만들 라고 각. 그래 느는 까 C++, Java, C# 고민다 C# 봤는데, C# 라단 리 가려면 Windows Vista가 된 봐 것 같고, C/C++ 더 대 명보. 같 경는 구고 관가 '대량 데베 기반 검 '과 ' 기반 리'로 DB 문 리 관 부데, DB 리는 단 RDBMS만 PHP럼 가 고, 문 리는 Perl 다른 들 다보 그런 를 메 로 나 . ㅋㅋ - 변
- 내가 PHP 보고, JSP 나 Java 봤 대 듯.. 나 JSP랑 Java DB 로 개발 보기는 는 PHP로 는게 가 게 느껴든. 그래 DB 로 PHP Java 렇게 나려고 는데 PHP가 Oracle 5.x 부 되 Jsp로 게 됐. 둘다 본 감 면는 뭐 PHP로 나 Jsp로 나 관 는 같고, 다만 결 것 개발경및 Jsp 는 java 래를 가다가 다는 . Jsp 면 Junit Unit 를 면 기 고, 또 디깅 경 Visual Studio 디깅 듯 다는게 말 . 또 java 래를 가다가 러 를 기 고.(를 들면 Lucene 같 바로 만든 검 ..). Eclipse 라는 강력 개발 경 Visual Studio 보다 더 개발 ..
- 내가 무리 렇게 말 귀 들 라고 각 고.. 다만 경 보길 바래. 내가 되는것 를 Jsp,Java 로 고 PHP로 것 만.. 그리고 공 것 나를 는 것 긴 데, 나는 떠 것 방 고 배 먹 는 능력 다고 각. 그리고 검 관 다면 검 Lucene 갖고 놀봐. 그리고 로 단 것 보고 면 MemeHarvester 로 되고. - namsang
- 내가 무리 렇게 말 귀 들 라고 각 고.. 다만 경 보길 바래. 내가 되는것 를 Jsp,Java 로 고 PHP로 것 만.. 그리고 공 것 나를 는 것 긴 데, 나는 떠 것 방 고 배 먹 는 능력 다고 각. 그리고 검 관 다면 검 Lucene 갖고 놀봐. 그리고 로 단 것 보고 면 MemeHarvester 로 되고. - namsang










