⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 trtrackerutils.java

📁 java 文件下载器。可自定义
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   TRTrackerUtils.java

package org.gudy.azureus2.core3.tracker.util;

import com.aelitis.azureus.core.networkmanager.admin.NetworkAdmin;
import com.aelitis.azureus.core.networkmanager.admin.NetworkAdminPropertyChangeListener;
import com.aelitis.azureus.core.util.CopyOnWriteList;
import java.io.IOException;
import java.net.*;
import java.util.*;
import org.gudy.azureus2.core3.config.*;
import org.gudy.azureus2.core3.tracker.client.impl.bt.TRTrackerBTAnnouncerImpl;
import org.gudy.azureus2.core3.util.*;

// Referenced classes of package org.gudy.azureus2.core3.tracker.util:
//			TRTrackerUtilsListener

public class TRTrackerUtils
{

	private static String BLACKLISTED_HOSTS[] = {
		"krypt.dyndns.org"
	};
	private static int BLACKLISTED_PORTS[] = {
		81
	};
	private static String tracker_ip;
	private static Map override_map;
	private static String bind_ip;
	private static String ports_for_url;
	private static String ports_for_url_with_crypto;
	private static CopyOnWriteList listeners = new CopyOnWriteList();
	private static AEThread2 listener_thread;
	private static Map az_trackers = COConfigurationManager.getMapParameter("Tracker Client AZ Instances", new HashMap());
	private static Map udp_probe_results = COConfigurationManager.getMapParameter("Tracker Client UDP Probe Results", new HashMap());

	public TRTrackerUtils()
	{
	}

	private static String computePortsForURL(boolean force_crypto, boolean allow_incoming)
	{
		boolean socks_peer_inform = COConfigurationManager.getBooleanParameter("Proxy.Data.Enable") && COConfigurationManager.getBooleanParameter("Proxy.Data.SOCKS.inform");
		allow_incoming &= !COConfigurationManager.getBooleanParameter("Tracker Client No Port Announce");
		int tcp_port_num;
		int udp_port_num;
		if (allow_incoming)
		{
			if (socks_peer_inform)
			{
				tcp_port_num = 0;
				udp_port_num = 0;
			} else
			{
				tcp_port_num = COConfigurationManager.getIntParameter("TCP.Listen.Port");
				udp_port_num = COConfigurationManager.getIntParameter("UDP.Listen.Port");
			}
			String portOverride = COConfigurationManager.getStringParameter("TCP.Listen.Port.Override");
			if (!portOverride.equals(""))
				try
				{
					tcp_port_num = Integer.parseInt(portOverride);
				}
				catch (Throwable e)
				{
					Debug.printStackTrace(e);
				}
		} else
		{
			tcp_port_num = 0;
			udp_port_num = 0;
		}
		String port = "";
		if (force_crypto)
		{
			port = (new StringBuilder()).append(port).append("&requirecrypto=1").toString();
			port = (new StringBuilder()).append(port).append("&port=0&cryptoport=").append(tcp_port_num).toString();
		} else
		{
			boolean require_crypto = COConfigurationManager.getBooleanParameter("network.transport.encrypted.require");
			if (require_crypto)
				port = (new StringBuilder()).append(port).append("&requirecrypto=1").toString();
			else
				port = (new StringBuilder()).append(port).append("&supportcrypto=1").toString();
			if (require_crypto && !COConfigurationManager.getBooleanParameter("network.transport.encrypted.fallback.incoming") && COConfigurationManager.getBooleanParameter("network.transport.encrypted.use.crypto.port"))
				port = (new StringBuilder()).append(port).append("&port=0&cryptoport=").append(tcp_port_num).toString();
			else
				port = (new StringBuilder()).append(port).append("&port=").append(tcp_port_num).toString();
			port = (new StringBuilder()).append(port).append("&azudp=").append(udp_port_num).toString();
			if (tcp_port_num == 0)
				port = (new StringBuilder()).append(port).append("&hide=1").toString();
			if (COConfigurationManager.getBooleanParameter("HTTP.Data.Listen.Port.Enable"))
			{
				int http_port = COConfigurationManager.getIntParameter("HTTP.Data.Listen.Port.Override");
				if (http_port == 0)
					http_port = COConfigurationManager.getIntParameter("HTTP.Data.Listen.Port");
				port = (new StringBuilder()).append(port).append("&azhttp=").append(http_port).toString();
			}
		}
		return port;
	}

	public static String getPublicIPOverride()
	{
label0:
		{
			String explicit_ips = COConfigurationManager.getStringParameter("Override Ip", "");
			if (explicit_ips.length() <= 0)
				break label0;
			StringTokenizer tok = new StringTokenizer(explicit_ips, ";");
			String this_address;
			String cat;
			do
			{
				do
				{
					if (!tok.hasMoreTokens())
						break label0;
					this_address = tok.nextToken().trim();
				} while (this_address.length() <= 0);
				cat = AENetworkClassifier.categoriseAddress(this_address);
			} while (cat != "Public");
			return this_address;
		}
		return null;
	}

	static void readConfig()
	{
		tracker_ip = COConfigurationManager.getStringParameter("Tracker IP", "");
		tracker_ip = UrlUtils.expandIPV6Host(tracker_ip);
		String override_ips = COConfigurationManager.getStringParameter("Override Ip", "");
		StringTokenizer tok = new StringTokenizer(override_ips, ";");
		Map new_override_map = new HashMap();
		do
		{
			if (!tok.hasMoreTokens())
				break;
			String ip = tok.nextToken().trim();
			if (ip.length() > 0)
				new_override_map.put(AENetworkClassifier.categoriseAddress(ip), ip);
		} while (true);
		override_map = new_override_map;
		InetAddress bad = NetworkAdmin.getSingleton().getSingleHomedServiceBindAddress();
		if (bad == null || bad.isAnyLocalAddress())
			bind_ip = "";
		else
			bind_ip = bad.getHostAddress();
	}

	public static boolean isHosting(URL url_in)
	{
		return tracker_ip.length() > 0 && UrlUtils.expandIPV6Host(url_in.getHost()).equalsIgnoreCase(tracker_ip);
	}

	public static String getTrackerIP()
	{
		return tracker_ip;
	}

	public static boolean isTrackerEnabled()
	{
		return getAnnounceURLs().length > 0;
	}

	public static URL[][] getAnnounceURLs()
	{
		String tracker_host = COConfigurationManager.getStringParameter("Tracker IP", "");
		List urls = new ArrayList();
		if (tracker_host.length() > 0)
		{
			if (COConfigurationManager.getBooleanParameter("Tracker Port Enable"))
			{
				int port = COConfigurationManager.getIntParameter("Tracker Port", 6969);
				try
				{
					List l = new ArrayList();
					l.add(new URL((new StringBuilder()).append("http://").append(UrlUtils.convertIPV6Host(tracker_host)).append(":").append(port).append("/announce").toString()));
					List ports = stringToPorts(COConfigurationManager.getStringParameter("Tracker Port Backups"));
					for (int i = 0; i < ports.size(); i++)
						l.add(new URL((new StringBuilder()).append("http://").append(UrlUtils.convertIPV6Host(tracker_host)).append(":").append(((Integer)ports.get(i)).intValue()).append("/announce").toString()));

					urls.add(l);
				}
				catch (MalformedURLException e)
				{
					Debug.printStackTrace(e);
				}
			}
			if (COConfigurationManager.getBooleanParameter("Tracker Port SSL Enable"))
			{
				int port = COConfigurationManager.getIntParameter("Tracker Port SSL", 7000);
				try
				{
					List l = new ArrayList();
					l.add(new URL((new StringBuilder()).append("https://").append(UrlUtils.convertIPV6Host(tracker_host)).append(":").append(port).append("/announce").toString()));
					List ports = stringToPorts(COConfigurationManager.getStringParameter("Tracker Port SSL Backups"));
					for (int i = 0; i < ports.size(); i++)
						l.add(new URL((new StringBuilder()).append("https://").append(UrlUtils.convertIPV6Host(tracker_host)).append(":").append(((Integer)ports.get(i)).intValue()).append("/announce").toString()));

					urls.add(l);
				}
				catch (MalformedURLException e)
				{
					Debug.printStackTrace(e);
				}
			}
			if (COConfigurationManager.getBooleanParameter("Tracker Port UDP Enable"))
			{
				int port = COConfigurationManager.getIntParameter("Tracker Port", 6969);
				boolean auth = COConfigurationManager.getBooleanParameter("Tracker Password Enable Torrent");
				try
				{
					List l = new ArrayList();
					l.add(new URL((new StringBuilder()).append("udp://").append(UrlUtils.convertIPV6Host(tracker_host)).append(":").append(port).append("/announce").append(auth ? "?auth" : "").toString()));
					urls.add(l);
				}
				catch (MalformedURLException e)
				{
					Debug.printStackTrace(e);
				}
			}
		}
		URL res[][] = new URL[urls.size()][];
		for (int i = 0; i < urls.size(); i++)
		{
			List l = (List)urls.get(i);
			URL u[] = new URL[l.size()];
			l.toArray(u);
			res[i] = u;
		}

		return res;
	}

	protected static List stringToPorts(String str)
	{
		str = str.replace(',', ';');
		StringTokenizer tok = new StringTokenizer(str, ";");
		List res = new ArrayList();
		while (tok.hasMoreTokens()) 
			try
			{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -