View Javadoc

1   package org.eclipse.jetty.nested;
2   
3   import java.io.BufferedInputStream;
4   import java.io.BufferedReader;
5   import java.io.ByteArrayOutputStream;
6   import java.io.File;
7   import java.io.IOException;
8   import java.io.InputStreamReader;
9   import java.io.PrintStream;
10  import java.net.InetSocketAddress;
11  import java.net.ServerSocket;
12  import java.net.Socket;
13  import java.net.SocketAddress;
14  import java.util.concurrent.CountDownLatch;
15  
16  import javax.servlet.ServletException;
17  import javax.servlet.ServletOutputStream;
18  import javax.servlet.http.HttpServlet;
19  import javax.servlet.http.HttpServletRequest;
20  import javax.servlet.http.HttpServletResponse;
21  
22  import org.eclipse.jetty.util.IO;
23  import org.eclipse.jetty.util.TypeUtil;
24  
25  public class TestServlet extends HttpServlet
26  {
27  
28      /* (non-Javadoc)
29       * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
30       */
31      @Override
32      protected void doGet(final HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
33      {
34          resp.setContentType("text/plain");
35          final PrintStream out = new PrintStream(resp.getOutputStream());
36          
37          out.println("Try out evil things.");
38  
39          try
40          {
41              out.println("\nList home dir...");
42              for (File f : new File("/home").listFiles())
43                  out.println(f);
44          }
45          catch(Throwable e)
46          {
47              e.printStackTrace(out);
48          }
49          try
50          {
51              out.println("\nList tmp dir...");
52              for (File f : new File("/var/tmp").listFiles())
53                  out.println(f);
54          }
55          catch(Throwable e)
56          {
57              e.printStackTrace(out);
58          }
59          
60          try
61          {
62              out.println("\nCreate a /var/tmp file...");
63              File file = new File("/var/tmp/eviltest");
64  
65              out.println(file+" exists="+file.exists());
66              file.createNewFile();
67              file.deleteOnExit();
68              out.println(file+" exists="+file.exists());
69              file.delete();
70          }
71          catch(Throwable e)
72          {
73              e.printStackTrace(out);
74          }
75          
76  
77          try
78          {
79              out.println("\nOpen a localhost server socket ...");
80              
81              ServerSocket socket = new ServerSocket();
82              socket.bind(new InetSocketAddress("localhost",0));
83              out.println("local port = "+socket.getLocalPort());
84          }
85          catch(Throwable e)
86          {
87              e.printStackTrace(out);
88          }
89          
90          try
91          {
92              out.println("\nOpen a any server socket ...");
93              
94              ServerSocket socket = new ServerSocket();
95              socket.bind(new InetSocketAddress(0));
96              out.println("local port = "+socket.getLocalPort());
97          }
98          catch(Throwable e)
99          {
100             e.printStackTrace(out);
101         }
102         try
103         {
104             out.println("\nTalk to any server socket ...");
105             
106             final ServerSocket server = new ServerSocket();
107             server.bind(new InetSocketAddress(0));
108             out.println("local port = "+server.getLocalPort());
109             final int port = server.getLocalPort();
110             
111             final CountDownLatch latch = new CountDownLatch(1);
112             
113             new Thread()
114             {
115                 public void run()
116                 {
117                     try
118                     {
119                         Socket inbound = server.accept();
120                         out.println("accepted "+inbound);
121                         BufferedReader in = new BufferedReader(new InputStreamReader(inbound.getInputStream()));
122                         String data= in.readLine();
123                         out.println("read "+data);
124                     }
125                     catch(Throwable e)
126                     {
127                         e.printStackTrace(out);
128                     }
129                     finally
130                     {
131                         latch.countDown();
132                     }
133                 }
134             }.start();
135             
136            
137             Socket socket = new Socket("localhost",port); 
138             socket.getOutputStream().write("Hello World\n".getBytes());
139             
140             latch.await();
141             socket.close();
142         }
143         catch(Throwable e)
144         {
145             e.printStackTrace(out);
146         }
147         
148         try
149         {
150             out.println("\nRead to own content ...");
151             out.println("Real path / = "+getServletContext().getRealPath("/"));
152            
153             for (File f : new File(getServletContext().getRealPath("/")).listFiles())
154                 out.println(f);
155             
156         }
157         catch(Throwable e)
158         {
159             e.printStackTrace(out);
160         }
161         
162         
163         try
164         {
165             out.println("\nWrite own content ...");
166             
167             File wibble = new File(getServletContext().getRealPath("/wibble.txt"));
168             if (!wibble.exists())
169                 wibble.createNewFile();
170             
171             for (File f : new File(getServletContext().getRealPath("/")).listFiles())
172                 out.println(f);
173             
174         }
175         catch(Throwable e)
176         {
177             e.printStackTrace(out);
178         }
179      
180         out.flush();
181         out.close();
182     }
183     
184 
185 }