1 //header of class---------------------------------------------------------------
2 import java.*;
3 import java.io.*;
4 import java.net.*;
5
6 public class MiniProxy extends TCPService{
7 private boolean analyzed;
8 private StringBuffer fromnet;
9 private int tail;
10 public final static int BUILD=54;
11 //serve.zdys--------------------------------------------------------------------
12 public void serve(){
13 try{
14 BufferedReader br= new BufferedReader(new InputStreamReader(so.getInputStream()));
15 DataOutputStream dos= new DataOutputStream(new BufferedOutputStream(so.getOutputStream()));
16 StringBuffer sb= new StringBuffer();
17 String line= "";
18 do{
19 line= br.readLine();
20 sb.append(line);
21 sb.append("\r\n");
22 }while(!line.trim().equals(""));
23 Socket s2= new Socket("heise.de", 80);
24 DataOutputStream dosh= new DataOutputStream(new BufferedOutputStream(s2.getOutputStream()));
25 DataInputStream dish= new DataInputStream(new BufferedInputStream(s2.getInputStream()));
26 byte[] recdata= new byte[4096];
27 byte[] toheise= (sb.toString()).getBytes();
28 Utils.pr(this, "from browser:\n"+ sb.toString());
29 dosh.write(toheise, 0, toheise.length);
30 dosh.flush();
31 analyzed= false;
32 tail= 0x00000000;
33 fromnet= new StringBuffer();
34 fromnet.append("from net:\n");
35 try{
36 while(true){
37 dish.readFully(recdata);
38 analyzeHeader(recdata);
39 dos.write(recdata, 0, recdata.length);
40 }
41 }catch(Exception ex2){
42 analyzeHeader(recdata);
43 dos.write(recdata, 0, recdata.length);
44 }
45 dos.flush();
46 s2.close();
47 so.close();
48 }catch(Exception ex){
49 Utils.pr(this, "ERROR in run():"+ ex);
50 }
51 }
52 //analyzeHeader.zdys------------------------------------------------------------
53 private void analyzeHeader(byte[] given) throws Exception{
54 if(!analyzed){
55 BufferedReader br= new BufferedReader(new InputStreamReader(new ByteArrayInputStream(given)));
56 int act= 0;
57 while((act= br.read())!= -1){
58 tail<<= 8;
59 tail+= act;
60 if(tail== 0x0d0a0d0a){
61 analyzed= true;
62 Utils.pr(this, fromnet.toString());
63 return;
64 }else{
65 fromnet.append((char)act);
66 }
67 }
68 }
69 }
70 //end of class------------------------------------------------------------------
71 }