• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2006-2011 Christian Plattner. All rights reserved.
3  * Please refer to the LICENSE.txt for licensing details.
4  */
5 package ch.ethz.ssh2;
6 
7 import java.io.IOException;
8 import java.net.InetSocketAddress;
9 
10 import ch.ethz.ssh2.channel.ChannelManager;
11 import ch.ethz.ssh2.channel.LocalAcceptThread;
12 
13 /**
14  * A <code>LocalPortForwarder</code> forwards TCP/IP connections to a local
15  * port via the secure tunnel to another host (which may or may not be identical
16  * to the remote SSH-2 server). Checkout {@link Connection#createLocalPortForwarder(int, String, int)}
17  * on how to create one.
18  *
19  * @author Christian Plattner
20  * @version 2.50, 03/15/10
21  */
22 public class LocalPortForwarder
23 {
24 	ChannelManager cm;
25 
26 	String host_to_connect;
27 
28 	int port_to_connect;
29 
30 	LocalAcceptThread lat;
31 
LocalPortForwarder(ChannelManager cm, int local_port, String host_to_connect, int port_to_connect)32 	LocalPortForwarder(ChannelManager cm, int local_port, String host_to_connect, int port_to_connect)
33 			throws IOException
34 	{
35 		this.cm = cm;
36 		this.host_to_connect = host_to_connect;
37 		this.port_to_connect = port_to_connect;
38 
39 		lat = new LocalAcceptThread(cm, local_port, host_to_connect, port_to_connect);
40 		lat.setDaemon(true);
41 		lat.start();
42 	}
43 
LocalPortForwarder(ChannelManager cm, InetSocketAddress addr, String host_to_connect, int port_to_connect)44 	LocalPortForwarder(ChannelManager cm, InetSocketAddress addr, String host_to_connect, int port_to_connect)
45 			throws IOException
46 	{
47 		this.cm = cm;
48 		this.host_to_connect = host_to_connect;
49 		this.port_to_connect = port_to_connect;
50 
51 		lat = new LocalAcceptThread(cm, addr, host_to_connect, port_to_connect);
52 		lat.setDaemon(true);
53 		lat.start();
54 	}
55 
56 	/**
57 	 * Stop TCP/IP forwarding of newly arriving connections.
58 	 *
59 	 * @throws IOException
60 	 */
close()61 	public void close() throws IOException
62 	{
63 		lat.stopWorking();
64 	}
65 }
66