1 /* 2 * SSL-Explorer 3 * 4 * Copyright (C) 2003-2006 3SP LTD. All Rights Reserved 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License 8 * as published by the Free Software Foundation; either version 2 of 9 * the License, or (at your option) any later version. 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public 16 * License along with this program; if not, write to the Free Software 17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 18 */ 19 20 package com.sslexplorer.boot; 21 22 import java.io.InputStream; 23 import java.io.OutputStream; 24 25 /** 26 * Implementations of this interface are able to take over the input / output 27 * streams connected to a client during the processing of an HTTP request. 28 * <p> 29 * This allows SSL-Explorer functionality such as the VPN client or the 30 * nEXT client to provide their tunneling functionality. 31 * <p> 32 * For this to work, a custom {@link RequestHandler} would examine the request 33 * sent to it, decide if it should start a tunnel and if so call 34 * {@link com.sslexplorer.boot.RequestHandlerRequest#setTunnel(RequestHandlerTunnel)} 35 * providing a tunnel instance. 36 * <p> 37 * Then, which the ready the {@link #tunnel(InputStream, OutputStream)} method 38 * will be called allow the streams to be accessed and used directly. 39 * 40 * @author Brett Smith <a HREF="mailto: brett@3sp.com"><brett@3sp.com></a> 41 */ 42 public interface RequestHandlerTunnel { 43 44 /** 45 * Start tunneling. 46 * 47 * @param in input stream 48 * @param out output stream 49 */ 50 public void tunnel(InputStream in, OutputStream out); 51 52 /** 53 * Close the tunnel 54 */ 55 public void close(); 56 57 } 58 59