From: David ‘Bombe’ Roden Date: Thu, 6 Jan 2011 14:50:28 +0000 (+0100) Subject: Merge branch 'next' into edit-wot-trust X-Git-Tag: 0.4^2~8^2~3 X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=commitdiff_plain;h=3ff1cdf09693a28719246a9a98a8b908e8c848f7;hp=02de134dcf3d4500ae02320aab2dae827d499fa1 Merge branch 'next' into edit-wot-trust --- diff --git a/pom.xml b/pom.xml index fa77daa..1ceef4f 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 net.pterodactylus sone - 0.3.6-3 + 0.3.6-4 net.pterodactylus diff --git a/src/main/java/net/pterodactylus/sone/main/SonePlugin.java b/src/main/java/net/pterodactylus/sone/main/SonePlugin.java index a809e8e..1bdab44 100644 --- a/src/main/java/net/pterodactylus/sone/main/SonePlugin.java +++ b/src/main/java/net/pterodactylus/sone/main/SonePlugin.java @@ -78,7 +78,7 @@ public class SonePlugin implements FredPlugin, FredPluginL10n, FredPluginBaseL10 } /** The version. */ - public static final Version VERSION = new Version(0, 3, 6, 3); + public static final Version VERSION = new Version(0, 3, 6, 4); /** The logger. */ private static final Logger logger = Logging.getLogger(SonePlugin.class); diff --git a/src/main/java/net/pterodactylus/sone/text/FreenetLinkParser.java b/src/main/java/net/pterodactylus/sone/text/FreenetLinkParser.java index 24eac3b..b50113d 100644 --- a/src/main/java/net/pterodactylus/sone/text/FreenetLinkParser.java +++ b/src/main/java/net/pterodactylus/sone/text/FreenetLinkParser.java @@ -21,6 +21,7 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.Reader; import java.io.StringReader; +import java.net.MalformedURLException; import java.util.logging.Level; import java.util.logging.Logger; import java.util.regex.Matcher; @@ -29,6 +30,7 @@ import java.util.regex.Pattern; import net.pterodactylus.sone.data.Sone; import net.pterodactylus.util.logging.Logging; import net.pterodactylus.util.template.TemplateFactory; +import freenet.keys.FreenetURI; /** * {@link Parser} implementation that can recognize Freenet URIs. @@ -176,7 +178,7 @@ public class FreenetLinkParser implements Parser { name = name.substring(name.lastIndexOf('/', name.lastIndexOf('/') - 1)); } else { /* shorten to 5 chars. */ - name = name.substring(4, 9); + name = name.substring(4, Math.min(9, name.length())); } } } @@ -185,9 +187,17 @@ public class FreenetLinkParser implements Parser { } boolean fromPostingSone = false; if ((linkType == LinkType.SSK) || (linkType == LinkType.USK)) { - fromPostingSone = link.substring(4, 47).equals(postingSone.getId()); + try { + new FreenetURI(link); + fromPostingSone = link.substring(4, 47).equals(postingSone.getId()); + parts.add(fromPostingSone ? createTrustedFreenetLinkPart(link, name) : createFreenetLinkPart(link, name)); + } catch (MalformedURLException mue1) { + /* it’s not a valid link. */ + parts.add(createPlainTextPart(link)); + } + } else { + parts.add(fromPostingSone ? createTrustedFreenetLinkPart(link, name) : createFreenetLinkPart(link, name)); } - parts.add(fromPostingSone ? createTrustedFreenetLinkPart(link, name) : createFreenetLinkPart(link, name)); } else if ((linkType == LinkType.HTTP) || (linkType == LinkType.HTTPS)) { name = link.substring(linkType == LinkType.HTTP ? 7 : 8); int firstSlash = name.indexOf('/');