// h.java (c)1999-2002 W.Finlay McWalter. Licence: GPLv2.0
// changes: 
// 2002-11-15  grubert use BufferedReader and endoflines.
//                     and prints the GET (dangerous).

import java.net.*;
import java.io.*;
import java.util.*;

public class h extends Thread{
    Socket c;

    public h(Socket s){
        c=s;
        start();
    }

    public static void main(String[]a){
        try{
            ServerSocket s=new ServerSocket(8181);
            while(true){
                new h(s.accept());
            }
        }catch(Exception e){}
    }
    
    public void run(){
        try{
            BufferedReader i
                  = new BufferedReader(new InputStreamReader(c.getInputStream()));
            // DataInputStream i=new DataInputStream(c.getInputStream());
            DataOutputStream o=new DataOutputStream(c.getOutputStream());
            try{
                while(true){
                    String s=i.readLine();
                    if(s.length()<1)
                        break;
                    System.out.println(s); // this is dangerous if someone mulls aus.
                    if(s.startsWith("GET")){
                        StringTokenizer t=new StringTokenizer(s," ");
                        t.nextToken();
                        String p=t.nextToken();
                        p=(".".concat(((p.endsWith("/"))?p.concat("index.html"):p))).replace('/',File.separatorChar);
                        int l=(int) new File(p).length();
                        byte[]b=new byte[l];
                        FileInputStream f=new FileInputStream(p);
                        f.read(b);
                        o.writeBytes("HTTP/1.0 200 OK\n"+"Content-Length:"+b.length+"\n\n");
                        o.write(b,0,l);
                    }
                }
            }catch(Exception e){
                o.writeBytes("HTTP/1.0 404 ERROR\n\n\n");
            }
            o.close();
        }catch(Exception e){}
    }
}

// vim: set et ts=4 ai :

