package lbms.plugins.mldht.azureus; import java.net.InetAddress; import java.net.InetSocketAddress; import java.util.Arrays; import lbms.plugins.mldht.kad.DBItem; import org.gudy.azureus2.plugins.download.DownloadAnnounceResultPeer; /** * @author Damokles * */ public class DHTPeer implements DownloadAnnounceResultPeer { private static final String PEER_SOURCE = "DHT"; private String addr = "localhost"; private int port = 0; protected DHTPeer (DBItem item) { byte[] itemData = item.getData(); try { if (itemData.length == 4 + 2) { // ipv4 addr = InetAddress.getByAddress(Arrays.copyOf(itemData, 4)).getHostAddress(); port = (itemData[4] & 0xFF) << 8 | (itemData[5] & 0xFF); } else if (itemData.length == 16 + 2) { // ipv6 addr = InetAddress.getByAddress(Arrays.copyOf(itemData, 16)).getHostAddress(); port = (itemData[16] & 0xFF) << 8 | (itemData[17] & 0xFF); } } catch (Exception e) { // should not happen } } /* (non-Javadoc) * @see org.gudy.azureus2.plugins.download.DownloadAnnounceResultPeer#getAddress() */ public String getAddress () { return addr; } /* (non-Javadoc) * @see org.gudy.azureus2.plugins.download.DownloadAnnounceResultPeer#getPeerID() */ public byte[] getPeerID () { return null; } /* (non-Javadoc) * @see org.gudy.azureus2.plugins.download.DownloadAnnounceResultPeer#getPort() */ public int getPort () { return port; } /* (non-Javadoc) * @see org.gudy.azureus2.plugins.download.DownloadAnnounceResultPeer#getProtocol() */ public short getProtocol () { return DownloadAnnounceResultPeer.PROTOCOL_NORMAL; } /* (non-Javadoc) * @see org.gudy.azureus2.plugins.download.DownloadAnnounceResultPeer#getSource() */ public String getSource () { return PEER_SOURCE; } /* (non-Javadoc) * @see org.gudy.azureus2.plugins.download.DownloadAnnounceResultPeer#getUDPPort() */ public int getUDPPort () { return 0; } }