📄 trtrackerutils.java
字号:
// 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 + -