91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 0.09M
    文件類型: .zip
    金幣: 2
    下載: 1 次
    發布日期: 2020-12-24
  • 語言: Java
  • 標簽: VPN??OrbotVPN??

資源簡介

【實例簡介】

通過VPNService建立VPN連接。

靈活性、魯棒性較好!

【核心代碼】


package com.runjva.sourceforge.jsocks.main;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Hashtable;
import java.util.Properties;
import java.util.StringTokenizer;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.runjva.sourceforge.jsocks.protocol.InetRange;
import com.runjva.sourceforge.jsocks.protocol.ProxyServer;
import com.runjva.sourceforge.jsocks.protocol.SocksProxyBase;
import com.runjva.sourceforge.jsocks.server.IdentAuthenticator;

public class SOCKS {

	private static final int DEFAULT_LISTENING_PORT = 1080;
	final private static Logger log = LoggerFactory.getLogger(SOCKS.class);

	static public void usage() {
		System.out.println("Usage: java SOCKS [inifile1 inifile2 ...]\n"
				  "If none inifile is given, uses socks.properties.\n");
	}

	static public void main(String[] args) {

		String[] file_names;
		int port = DEFAULT_LISTENING_PORT;
		String logFile = null;
		String host = null;

		final IdentAuthenticator auth = new IdentAuthenticator();

		InetAddress localIP = null;

		if (args.length == 0) {
			file_names = new String[] { "socks.properties" };
		} else {
			file_names = args;
		}

		inform("Loading properties");
		for (int i = 0; i < file_names.length;   i) {

			inform("Reading file "   file_names[i]);

			final Properties pr = loadProperties(file_names[i]);
			if (pr == null) {
				System.err.println("Loading of properties from "
						  file_names[i]   "failed.");
				usage();
				return;
			}
			if (!addAuth(auth, pr)) {
				System.err.println("Error in file "   file_names[i]   ".");
				usage();
				return;
			}
			// First file should contain all global settings,
			// like port and host and log.
			if (i == 0) {
				final String port_s = (String) pr.get("port");
				if (port_s != null) {
					try {
						port = Integer.parseInt(port_s);
					} catch (final NumberFormatException nfe) {
						System.err.println("Can't parse port: "   port_s);
						return;
					}
				}

				serverInit(pr);
				logFile = (String) pr.get("log");
				host = (String) pr.get("host");
			}

			// inform("Props:" pr);
		}

		if (logFile != null) {
			System.err.println("log property not supported anymore.");
		}
		if (host != null) {
			try {
				localIP = InetAddress.getByName(host);
			} catch (final UnknownHostException uhe) {
				System.err.println("Can't resolve local ip: "   host);
				return;
			}
		}

		inform("Using Ident Authentication scheme: "   auth);
		final ProxyServer server = new ProxyServer(auth);
		server.start(port, 5, localIP);
	}

	static Properties loadProperties(String file_name) {

		final Properties pr = new Properties();

		try {
			final InputStream fin = new FileInputStream(file_name);
			pr.load(fin);
			fin.close();
		} catch (final IOException ioe) {
			return null;
		}
		return pr;
	}

	static boolean addAuth(IdentAuthenticator ident, Properties pr) {

		InetRange irange;

		final String range = (String) pr.get("range");
		if (range == null) {
			return false;
		}
		irange = parseInetRange(range);

		final String users = (String) pr.get("users");

		if (users == null) {
			ident.add(irange, null);
			return true;
		}

		final Hashtable<String, String> uhash = new Hashtable<String, String>();

		final StringTokenizer st = new StringTokenizer(users, ";");
		while (st.hasMoreTokens()) {
			uhash.put(st.nextToken(), "");
		}

		ident.add(irange, uhash);
		return true;
	}

	/**
	 * Does server initialisation.
	 */
	static void serverInit(Properties props) {
		int val;
		val = readInt(props, "iddleTimeout");
		if (val >= 0) {
			ProxyServer.setIddleTimeout(val);
			inform("Setting iddle timeout to "   val   " ms.");
		}
		val = readInt(props, "acceptTimeout");
		if (val >= 0) {
			ProxyServer.setAcceptTimeout(val);
			inform("Setting accept timeout to "   val   " ms.");
		}
		val = readInt(props, "udpTimeout");
		if (val >= 0) {
			ProxyServer.setUDPTimeout(val);
			inform("Setting udp timeout to "   val   " ms.");
		}

		val = readInt(props, "datagramSize");
		if (val >= 0) {
			ProxyServer.setDatagramSize(val);
			inform("Setting datagram size to "   val   " bytes.");
		}

		proxyInit(props);

	}

	/**
	 * Initialises proxy, if any specified.
	 */
	static void proxyInit(Properties props) {
		String proxy_list;
		SocksProxyBase proxy = null;
		StringTokenizer st;

		proxy_list = (String) props.get("proxy");
		if (proxy_list == null) {
			return;
		}

		st = new StringTokenizer(proxy_list, ";");
		while (st.hasMoreTokens()) {
			final String proxy_entry = st.nextToken();

			final SocksProxyBase p = SocksProxyBase.parseProxy(proxy_entry);

			if (p == null) {
				exit("Can't parse proxy entry:"   proxy_entry);
			}

			inform("Adding Proxy:"   p);

			if (proxy != null) {
				p.setChainProxy(proxy);
			}

			proxy = p;

		}
		if (proxy == null) {
			return; // Empty list
		}

		final String direct_hosts = (String) props.get("directHosts");
		if (direct_hosts != null) {
			final InetRange ir = parseInetRange(direct_hosts);
			inform("Setting direct hosts:"   ir);
			proxy.setDirect(ir);
		}

		ProxyServer.setProxy(proxy);
	}

	/**
	 * Inits range from the string of semicolon separated ranges.
	 */
	static InetRange parseInetRange(String source) {
		final InetRange irange = new InetRange();

		final StringTokenizer st = new StringTokenizer(source, ";");
		while (st.hasMoreTokens()) {
			irange.add(st.nextToken());
		}

		return irange;
	}

	/**
	 * Integer representaion of the property named name, or -1 if one is not
	 * found.
	 */
	static int readInt(Properties props, String name) {
		int result = -1;
		final String val = (String) props.get(name);
		if (val == null) {
			return -1;
		}
		final StringTokenizer st = new StringTokenizer(val);
		if (!st.hasMoreElements()) {
			return -1;
		}
		try {
			result = Integer.parseInt(st.nextToken());
		} catch (final NumberFormatException nfe) {
			inform("Bad value for "   name   ":"   val);
		}
		return result;
	}

	// Display functions
	// /////////////////

	static void inform(String s) {
		log.info(s);
	}

	static void exit(String msg) {
		System.err.println("Error:"   msg);
		System.err.println("Aborting operation");
		System.exit(0);
	}
}


資源截圖

代碼片段和文件信息

package?com.runjva.sourceforge.jsocks.main;

import?java.io.FileInputStream;
import?java.io.IOException;
import?java.io.InputStream;
import?java.net.InetAddress;
import?java.net.UnknownHostException;
import?java.util.Hashtable;
import?java.util.Properties;
import?java.util.StringTokenizer;

import?org.slf4j.Logger;
import?org.slf4j.LoggerFactory;

import?com.runjva.sourceforge.jsocks.protocol.InetRange;
import?com.runjva.sourceforge.jsocks.protocol.ProxyServer;
import?com.runjva.sourceforge.jsocks.protocol.SocksProxybase;
import?com.runjva.sourceforge.jsocks.server.IdentAuthenticator;

public?class?SOCKS?{

private?static?final?int?DEFAULT_LISTENING_PORT?=?1080;
final?private?static?Logger?log?=?LoggerFactory.getLogger(SOCKS.class);

static?public?void?usage()?{

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2014-07-29?03:34??OrbotVPN-master\
?????文件?????????466??2014-07-29?03:34??OrbotVPN-master\.classpath
?????文件??????????96??2014-07-29?03:34??OrbotVPN-master\.gitmodules
?????文件?????????811??2014-07-29?03:34??OrbotVPN-master\.project
?????文件????????1630??2014-07-29?03:34??OrbotVPN-master\AndroidManifest.xml
?????文件?????????704??2014-07-29?03:34??OrbotVPN-master\README
?????目錄???????????0??2014-07-29?03:34??OrbotVPN-master\external\
?????目錄???????????0??2014-07-29?03:34??OrbotVPN-master\external\jsocks\
?????目錄???????????0??2014-07-29?03:34??OrbotVPN-master\libs\
?????文件????????7494??2014-07-29?03:34??OrbotVPN-master\libs\slf4j-android-1.7.7.jar
?????文件???????29257??2014-07-29?03:34??OrbotVPN-master\libs\slf4j-api-1.7.7.jar
?????文件?????????361??2014-07-29?03:34??OrbotVPN-master\project.properties
?????目錄???????????0??2014-07-29?03:34??OrbotVPN-master\res\
?????目錄???????????0??2014-07-29?03:34??OrbotVPN-master\res\layout\
?????文件????????1145??2014-07-29?03:34??OrbotVPN-master\res\layout\form.xml
?????目錄???????????0??2014-07-29?03:34??OrbotVPN-master\res\values\
?????文件?????????953??2014-07-29?03:34??OrbotVPN-master\res\values\strings.xml
?????文件?????????972??2014-07-29?03:34??OrbotVPN-master\res\values\styles.xml
?????目錄???????????0??2014-07-29?03:34??OrbotVPN-master\src\
?????目錄???????????0??2014-07-29?03:34??OrbotVPN-master\src\com\
?????目錄???????????0??2014-07-29?03:34??OrbotVPN-master\src\com\runjva\
?????目錄???????????0??2014-07-29?03:34??OrbotVPN-master\src\com\runjva\sourceforge\
?????目錄???????????0??2014-07-29?03:34??OrbotVPN-master\src\com\runjva\sourceforge\jsocks\
?????目錄???????????0??2014-07-29?03:34??OrbotVPN-master\src\com\runjva\sourceforge\jsocks\main\
?????文件????????6548??2014-07-29?03:34??OrbotVPN-master\src\com\runjva\sourceforge\jsocks\main\SOCKS.java
?????文件?????????926??2014-07-29?03:34??OrbotVPN-master\src\com\runjva\sourceforge\jsocks\main\SocksEcho.gif
?????目錄???????????0??2014-07-29?03:34??OrbotVPN-master\src\com\runjva\sourceforge\jsocks\protocol\
?????文件????????1679??2014-07-29?03:34??OrbotVPN-master\src\com\runjva\sourceforge\jsocks\protocol\Authentication.java
?????文件?????????552??2014-07-29?03:34??OrbotVPN-master\src\com\runjva\sourceforge\jsocks\protocol\AuthenticationNone.java
?????文件???????12710??2014-07-29?03:34??OrbotVPN-master\src\com\runjva\sourceforge\jsocks\protocol\InetRange.java
?????文件????????3207??2014-07-29?03:34??OrbotVPN-master\src\com\runjva\sourceforge\jsocks\protocol\ProxyMessage.java
............此處省略27個文件信息

評論

共有 條評論