I2PSnark:

- Roll back target="_top" in config page to prevent embedded view from breaking
  out of iframe
- Add target="_blank" to relevant links to avoid display in iframe in embedded
  mode
- Enhance presentation of tracker links in TorrentInfo view
This commit is contained in:
str4d
2017-11-02 10:11:14 +00:00
parent 31a52d2acc
commit a715d2b6d7
2 changed files with 27 additions and 10 deletions

View File

@ -2134,7 +2134,7 @@ public class I2PSnarkServlet extends BasicServlet {
host = Base32.encode(h.getData()) + ".b32.i2p" + port; host = Base32.encode(h.getData()) + ".b32.i2p" + port;
} }
} }
buf.append("<a href=\"http://").append(urlEncode(host)).append("/\">"); buf.append("<a href=\"http://").append(urlEncode(host)).append("/\" target=\"blank\">");
} }
// strip port // strip port
int colon = announce.indexOf(':'); int colon = announce.indexOf(':');
@ -2288,7 +2288,7 @@ public class I2PSnarkServlet extends BasicServlet {
boolean noCollapse = noCollapsePanels(req); boolean noCollapse = noCollapsePanels(req);
out.write("<form action=\"" + _contextPath + "/configure\" method=\"POST\" target=\"_top\">\n" + out.write("<form action=\"" + _contextPath + "/configure\" method=\"POST\">\n" +
"<div class=\"configsectionpanel\"><div class=\"snarkConfig\">\n"); "<div class=\"configsectionpanel\"><div class=\"snarkConfig\">\n");
writeHiddenInputs(out, req, "Save"); writeHiddenInputs(out, req, "Save");
out.write("<span class=\"snarkConfigTitle\">"); out.write("<span class=\"snarkConfigTitle\">");
@ -2986,9 +2986,9 @@ public class I2PSnarkServlet extends BasicServlet {
announce = DataHelper.stripHTML(announce); announce = DataHelper.stripHTML(announce);
buf.append("<tr><td>"); buf.append("<tr><td>");
toThemeImg(buf, "details"); toThemeImg(buf, "details");
buf.append("</td><td><b>").append(_t("Primary Tracker")).append(":</b> "); buf.append("</td><td><b>").append(_t("Primary Tracker")).append(":</b> <span class=\"info_tracker\">");
buf.append(getShortTrackerLink(announce, snark.getInfoHash())); buf.append(getShortTrackerLink(announce, snark.getInfoHash()));
buf.append("</td></tr>"); buf.append("</span></td></tr>");
} }
List<List<String>> alist = meta.getAnnounceList(); List<List<String>> alist = meta.getAnnounceList();
if (alist != null && !alist.isEmpty()) { if (alist != null && !alist.isEmpty()) {
@ -2997,7 +2997,7 @@ public class I2PSnarkServlet extends BasicServlet {
buf.append("</td><td><b>") buf.append("</td><td><b>")
.append(_t("Tracker List")).append(":</b> "); .append(_t("Tracker List")).append(":</b> ");
for (List<String> alist2 : alist) { for (List<String> alist2 : alist) {
buf.append('['); buf.append("<span class=\"info_tracker\">");
boolean more = false; boolean more = false;
for (String s : alist2) { for (String s : alist2) {
if (more) if (more)
@ -3006,7 +3006,7 @@ public class I2PSnarkServlet extends BasicServlet {
more = true; more = true;
buf.append(getShortTrackerLink(DataHelper.stripHTML(s), snark.getInfoHash())); buf.append(getShortTrackerLink(DataHelper.stripHTML(s), snark.getInfoHash()));
} }
buf.append("] "); buf.append("</span> ");
} }
buf.append("</td></tr>\n"); buf.append("</td></tr>\n");
} }
@ -3406,14 +3406,16 @@ public class I2PSnarkServlet extends BasicServlet {
path=addPaths(path,"/"); path=addPaths(path,"/");
path = encodePath(path); path = encodePath(path);
String icon = toIcon(item); String icon = toIcon(item);
String mime = getMimeType(path);
if (mime == null)
mime = "";
buf.append("<td class=\"snarkFileIcon\">"); buf.append("<td class=\"snarkFileIcon\">");
if (complete) { if (complete) {
buf.append("<a href=\"").append(path).append("\">"); buf.append("<a href=\"").append(path).append("\">");
// thumbnail ? // thumbnail ?
String plc = item.toString().toLowerCase(Locale.US); String plc = item.toString().toLowerCase(Locale.US);
if (plc.endsWith(".jpg") || plc.endsWith(".jpeg") || plc.endsWith(".png") || if (mime.startsWith("image/")) {
plc.endsWith(".gif") || plc.endsWith(".ico")) {
buf.append("<img alt=\"\" border=\"0\" class=\"thumb\" src=\"") buf.append("<img alt=\"\" border=\"0\" class=\"thumb\" src=\"")
.append(path).append("\"></a>"); .append(path).append("\"></a>");
} else { } else {
@ -3423,8 +3425,17 @@ public class I2PSnarkServlet extends BasicServlet {
buf.append(toImg(icon)); buf.append(toImg(icon));
} }
buf.append("</td><td class=\"snarkFileName\">"); buf.append("</td><td class=\"snarkFileName\">");
if (complete) if (complete) {
buf.append("<a href=\"").append(path).append("\">"); buf.append("<a href=\"").append(path);
// send browser-viewable files to new tab to avoid potential display in iframe
if (mime.startsWith("text/") ||
mime.startsWith("image/") ||
mime.startsWith("audio/") ||
mime.startsWith("video/") ||
mime.equals("application/ogg"))
buf.append("\" target=\"_blank");
buf.append("\">");
}
buf.append(DataHelper.escapeHTML(item.getName())); buf.append(DataHelper.escapeHTML(item.getName()));
if (complete) if (complete)
buf.append("</a>"); buf.append("</a>");

View File

@ -3,6 +3,12 @@
- Sidebar: - Sidebar:
- Fix erratic display of sidebar graph - Fix erratic display of sidebar graph
- Add id to memory bar so we can target it for Chrome/blink display issue - Add id to memory bar so we can target it for Chrome/blink display issue
* I2PSnark:
- Roll back target="_top" in config page to prevent embedded view from
breaking out of iframe
- Add target="_blank" to relevant links to avoid display in iframe in
embedded mode
- Enhance presentation of tracker links in TorrentInfo view
2017-10-25 str4d 2017-10-25 str4d
* Console: * Console: