diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index 077b24351..6b8273455 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -827,32 +827,13 @@ public class I2PSnarkServlet extends Default { out.write(statusString + "\n\t"); out.write(""); - // temporarily hardcoded for postman* and anonymity, requires bytemonsoon patch for lookup by info_hash String announce = null; - if (isValid) + if (isValid) { announce = meta.getAnnounce(); - if (announce != null && (announce.startsWith("http://YRgrgTLG") || announce.startsWith("http://8EoJZIKr") || - announce.startsWith("http://lnQ6yoBT") || announce.startsWith("http://tracker2.postman.i2p/") || - announce.startsWith("http://ahsplxkbhemefwvvml7qovzl5a2b5xo5i7lyai7ntdunvcyfdtna.b32.i2p/"))) { - Map trackers = _manager.getTrackers(); - for (Iterator iter = trackers.entrySet().iterator(); iter.hasNext(); ) { - Map.Entry entry = (Map.Entry)iter.next(); - String name = (String)entry.getKey(); - String baseURL = (String)entry.getValue(); - if (!(baseURL.startsWith(announce) || // vvv hack for non-b64 announce in list vvv - (announce.startsWith("http://lnQ6yoBT") && baseURL.startsWith("http://tracker2.postman.i2p/")) || - (announce.startsWith("http://ahsplxkbhemefwvvml7qovzl5a2b5xo5i7lyai7ntdunvcyfdtna.b32.i2p/") && baseURL.startsWith("http://tracker2.postman.i2p/")))) - continue; - int e = baseURL.indexOf('='); - if (e < 0) - continue; - baseURL = baseURL.substring(e + 1); - out.write(""); - out.write("\"""); - out.write(""); - break; + if (announce != null) { + String trackerLink = getTrackerLink(announce, snark.getInfoHash()); + if (trackerLink != null) + out.write(trackerLink); } } @@ -1094,6 +1075,39 @@ public class I2PSnarkServlet extends Default { } } + /** + * @return string or null + * @since 0.8.4 + */ + private String getTrackerLink(String announce, byte[] infohash) { + // temporarily hardcoded for postman* and anonymity, requires bytemonsoon patch for lookup by info_hash + if (announce != null && (announce.startsWith("http://YRgrgTLG") || announce.startsWith("http://8EoJZIKr") || + announce.startsWith("http://lnQ6yoBT") || announce.startsWith("http://tracker2.postman.i2p/") || + announce.startsWith("http://ahsplxkbhemefwvvml7qovzl5a2b5xo5i7lyai7ntdunvcyfdtna.b32.i2p/"))) { + Map trackers = _manager.getTrackers(); + for (Map.Entry entry : trackers.entrySet()) { + String baseURL = entry.getValue(); + if (!(baseURL.startsWith(announce) || // vvv hack for non-b64 announce in list vvv + (announce.startsWith("http://lnQ6yoBT") && baseURL.startsWith("http://tracker2.postman.i2p/")) || + (announce.startsWith("http://ahsplxkbhemefwvvml7qovzl5a2b5xo5i7lyai7ntdunvcyfdtna.b32.i2p/") && baseURL.startsWith("http://tracker2.postman.i2p/")))) + continue; + int e = baseURL.indexOf('='); + if (e < 0) + continue; + baseURL = baseURL.substring(e + 1); + String name = entry.getKey(); + StringBuilder buf = new StringBuilder(128); + buf.append("" + + "\"").append(_("Info")).append("\""); + return buf.toString(); + } + } + return null; + } + private void writeAddForm(PrintWriter out, HttpServletRequest req) throws IOException { String uri = req.getRequestURI(); String newURL = req.getParameter("newURL"); @@ -1577,8 +1591,25 @@ public class I2PSnarkServlet extends Default { } buf.append("
").append(_("Pieces")).append(": ").append(pieces); buf.append("
").append(_("Piece size")).append(": ").append(formatSize(snark.getPieceLength(0))); + + if (meta != null) { + String announce = meta.getAnnounce(); + if (announce != null) { + String trackerLink = getTrackerLink(announce, snark.getInfoHash()); + if (trackerLink != null) { + if (announce.startsWith("http://")) + announce = announce.substring(7); + int slsh = announce.indexOf('/'); + if (slsh > 0) + announce = announce.substring(0, slsh); + buf.append("
").append(trackerLink).append(' ').append(announce); + } + } + } + String hex = I2PSnarkUtil.toHex(snark.getInfoHash()); - buf.append("
").append(_("Magnet link")).append(": ") + buf.append("
").append(toImg("magnet", _("Magnet link"))).append("
") .append(MAGNET).append(hex).append(""); // We don't have the hash of the torrent file //buf.append("
").append(_("Maggot link")).append(": ")