📄 addressutils.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: AddressUtils.java
package org.gudy.azureus2.core3.util;
import com.aelitis.azureus.core.AzureusCore;
import com.aelitis.azureus.core.AzureusCoreFactory;
import com.aelitis.azureus.core.instancemanager.AZInstance;
import com.aelitis.azureus.core.instancemanager.AZInstanceManager;
import com.aelitis.azureus.core.proxy.AEProxyAddressMapper;
import com.aelitis.azureus.core.proxy.AEProxyFactory;
import java.io.PrintStream;
import java.net.*;
import java.util.*;
// Referenced classes of package org.gudy.azureus2.core3.util:
// Debug, HostNameToIPResolver
public class AddressUtils
{
public static final byte LAN_LOCAL_MAYBE = 0;
public static final byte LAN_LOCAL_YES = 1;
public static final byte LAN_LOCAL_NO = 2;
private static AZInstanceManager instance_manager;
private static Map host_map = null;
public AddressUtils()
{
}
public static URL adjustURL(URL url)
{
url = AEProxyFactory.getAddressMapper().internalise(url);
if (host_map != null)
{
String rewrite = (String)host_map.get(url.getHost());
if (rewrite != null)
{
String str = url.toExternalForm();
try
{
int pos = str.indexOf("//") + 2;
int pos2 = str.indexOf("/", pos);
String host_bit = str.substring(pos, pos2);
int pos3 = host_bit.indexOf(':');
String port_bit;
if (pos3 == -1)
port_bit = "";
else
port_bit = host_bit.substring(pos3);
String new_str = (new StringBuilder()).append(str.substring(0, pos)).append(rewrite).append(port_bit).append(str.substring(pos2)).toString();
url = new URL(new_str);
}
catch (Throwable e)
{
Debug.printStackTrace(e);
}
}
}
return url;
}
public static synchronized void addHostRedirect(String from_host, String to_host)
{
System.out.println((new StringBuilder()).append("AddressUtils::addHostRedirect - ").append(from_host).append(" -> ").append(to_host).toString());
Map new_map;
if (host_map == null)
new_map = new HashMap();
else
new_map = new HashMap(host_map);
new_map.put(from_host, to_host);
host_map = new_map;
}
public static InetSocketAddress adjustTCPAddress(InetSocketAddress address, boolean ext_to_lan)
{
return adjustAddress(address, ext_to_lan, 1);
}
public static InetSocketAddress adjustUDPAddress(InetSocketAddress address, boolean ext_to_lan)
{
return adjustAddress(address, ext_to_lan, 2);
}
public static InetSocketAddress adjustDHTAddress(InetSocketAddress address, boolean ext_to_lan)
{
return adjustAddress(address, ext_to_lan, 3);
}
private static InetSocketAddress adjustAddress(InetSocketAddress address, boolean ext_to_lan, int port_type)
{
if (instance_manager == null)
try
{
instance_manager = AzureusCoreFactory.getSingleton().getInstanceManager();
}
catch (Throwable e)
{
Debug.printStackTrace(e);
}
if (instance_manager == null || !instance_manager.isInitialized())
return address;
InetSocketAddress adjusted_address;
if (ext_to_lan)
adjusted_address = instance_manager.getLANAddress(address, port_type);
else
adjusted_address = instance_manager.getExternalAddress(address, port_type);
if (adjusted_address == null)
adjusted_address = address;
return adjusted_address;
}
public static List getLANAddresses(String address)
{
List result;
result = new ArrayList();
result.add(address);
InetAddress ad;
ad = InetAddress.getByName(address);
if (isLANLocalAddress(address) == 2)
break MISSING_BLOCK_LABEL_190;
if (instance_manager == null)
try
{
instance_manager = AzureusCoreFactory.getSingleton().getInstanceManager();
}
catch (Throwable e)
{
Debug.printStackTrace(e);
}
if (instance_manager == null || !instance_manager.isInitialized())
return result;
try
{
AZInstance instances[] = instance_manager.getOtherInstances();
for (int i = 0; i < instances.length; i++)
{
AZInstance instance = instances[i];
List addresses = instance.getInternalAddresses();
if (addresses.contains(ad))
{
for (int j = 0; j < addresses.size(); j++)
{
InetAddress ia = (InetAddress)addresses.get(j);
String str = ia.getHostAddress();
if (!result.contains(str))
result.add(str);
}
}
}
}
catch (Throwable e) { }
return result;
}
public static byte isLANLocalAddress(InetSocketAddress socket_address)
{
InetAddress address = socket_address.getAddress();
return isLANLocalAddress(address);
}
public static byte isLANLocalAddress(InetAddress address)
{
if (address == null)
return 2;
if (instance_manager == null && AzureusCoreFactory.isCoreAvailable())
try
{
instance_manager = AzureusCoreFactory.getSingleton().getInstanceManager();
}
catch (Throwable e)
{
Debug.printStackTrace(e);
}
if (instance_manager == null || !instance_manager.isInitialized())
return 0;
else
return ((byte)(instance_manager.isLANAddress(address) ? 1 : 2));
}
public static byte isLANLocalAddress(String address)
{
byte is_lan_local = 0;
try
{
is_lan_local = isLANLocalAddress(HostNameToIPResolver.syncResolve(address));
}
catch (Throwable t)
{
t.printStackTrace();
}
return is_lan_local;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -