Add web interface. It defaults to port 8000.
[IRC.git] / Robust / src / Interface / HTTPServices.java
1 package Interface;
2 import java.net.*;
3 import java.io.*;
4 import java.util.*;
5
6 public class HTTPServices{
7
8     static private String webRoot = ".";
9
10     static private Reader get_reader(String fileName,HTTPResponse resp) throws IOException{
11         try{
12 //          if(fileName.equals("/daytime")){
13 //              String date_str = (new Date()).toString();
14 //              resp.sentBytes = date_str.length();
15 //              return
16 //                  new StringReader(date_str);
17 //          }
18             
19             if(fileName.equals("/viewlog"))
20                 fileName = LogFile.log_file_name;
21             else
22                 fileName = webRoot + fileName;
23             
24             File f = new File(fileName);
25             resp.sentBytes = f.length();
26             return new FileReader(f);
27         }
28         catch(IOException e){
29             resp.returnCode = 501;
30             return
31                 new StringReader("Error accessing " + fileName);
32         }
33     }
34
35     public static void GET_handler(String fileName, BufferedWriter out,HTTPResponse resp){
36         
37         BufferedReader reader  = null;
38         char buffer[];
39         int size;
40
41         if((reader = HEAD_handler_int(fileName,out,resp)) == null) return;
42
43         buffer = new char[1024];
44
45         try{
46             while((size = reader.read(buffer,0,buffer.length)) != -1)
47                 out.write(buffer,0,size);
48             reader.close();
49         }
50         catch(IOException e){
51             e.printStackTrace();
52             resp.returnCode = 501; // error during transmision
53         }
54
55     }
56
57     public static void POST_handler(String fileName, BufferedWriter out, HTTPResponse resp){
58         GET_handler(fileName,out,resp);
59     }
60
61     static private BufferedReader HEAD_handler_int(String fileName,
62                                                     BufferedWriter out,HTTPResponse resp){
63         BufferedReader reader = null;
64
65         try{
66             reader = new BufferedReader(get_reader(fileName, resp));
67             resp.returnCode = 200;
68         }
69         catch(IOException e){
70             resp.returnCode = 404; // file not found
71         }
72
73         if(resp.returnCode == 200)
74             HTTPHeader.send_header(out, resp.returnCode, fileName, resp.sentBytes);
75         else{
76             HTTPHeader.send_header(out, resp.returnCode, fileName, 0);
77             return null;
78         }
79         
80         return reader;
81     }
82         
83
84     public static void HEAD_handler(String fileName, 
85                                    BufferedWriter out, HTTPResponse resp){
86         HEAD_handler_int(fileName,out,resp);
87     }
88 }
89