📄 httptunnelingengine.java
字号:
package javatunnel;import java.io.*;import java.net.*;import java.util.Properties;import java.util.StringTokenizer;/** * *JavaTunnel * *Copyright (C) 2002 Andr閟 Ederra * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.*/public class HTTPTunnelingEngine extends Engine {private Configuration configuration; private String ticket; public HTTPTunnelingEngine(Configuration config) { this.configuration=config; } public void listen(){ try { System.out.println( "Awaiting connections at port: " + configuration.getLocalPort()); serverSocket = new ServerSocket(configuration.getLocalPort()); } catch (IOException ioe) { ioe.printStackTrace(); System.out.println( "Error creating server socket in port: " + configuration.getLocalPort()); System.exit(1); } try { Socket incoming; //Socket outcoming; while (true) { incoming = serverSocket.accept(); System.out.println( "Received connection request from: " + incoming.getRemoteSocketAddress()); initializeServer(); //outcoming = openConnection(); DataHandler inDatahandler = getIncomingDataHandler(incoming); incomingHandlers.add(inDatahandler); inDatahandler.start(); DataHandler outDatahandler = getOutcomingDataHandler(incoming); outcomingHandlers.add(outDatahandler); outDatahandler.start(); } } catch (IOException ioe) { if (terminate) { System.out.println("Terminating Redirect Engine"); return; } ioe.printStackTrace(); System.out.println("Error en el bucle de aceptacion de conexiones"); System.exit(1); } } /** * Method initializeServer. */ private void initializeServer() { byte[] buffer = new byte[1000]; if (configuration.getProxyPort() != 0) { Properties systemProperties = System.getProperties(); systemProperties.setProperty("http.proxyHost", configuration.getProxyAddress()); systemProperties.setProperty("http.proxyPort",Integer.toString(configuration.getProxyPort() )); } try { URL url = new URL( "http" + "://" + configuration.getServerAddress() + ":" + configuration.getServerPort() + "/JavaTunnel/server"); HttpURLConnection GETconn = (HttpURLConnection) url.openConnection(); GETconn.setDoInput(true); GETconn.setRequestMethod("GET"); GETconn.setUseCaches(false); GETconn.setRequestProperty( "TunnelControl", "CONNECT " + configuration.getDestinationAddress() + " " + configuration.getDestinationPort()); InputStream inStream = GETconn.getInputStream(); int n = 0; while (n != -1) { n = inStream.read(buffer); } ticket = GETconn.getHeaderField("TunnelControl"); StringTokenizer tokenizer = new StringTokenizer(ticket); tokenizer.nextToken(); ticket = tokenizer.nextToken(); } catch (IOException ioe) { ioe.printStackTrace(); System.out.println( "Error de conexi髇 en sockets\nExcepcion: " + ioe); System.exit(1); } } private DataHandler getOutcomingDataHandler(Socket localSocket) { return new HTTPTunnelingOutcomingDataHandler( localSocket, configuration.getDestinationAddress(), configuration.getDestinationPort(), configuration.getServerAddress(), configuration.getServerPort(), ticket); } private DataHandler getIncomingDataHandler(Socket localSocket) { return new HTTPTunnelingIncomingDataHandler( localSocket, configuration.getDestinationAddress(), configuration.getDestinationPort(), configuration.getServerAddress(), configuration.getServerPort(), ticket); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -