Merge branch 'link-filter-26' into next
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sat, 5 Nov 2011 15:55:54 +0000 (16:55 +0100)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sat, 5 Nov 2011 15:55:54 +0000 (16:55 +0100)
pom.xml
src/main/java/net/pterodactylus/sone/core/FreenetInterface.java
src/main/java/net/pterodactylus/sone/web/GetImagePage.java
src/main/java/net/pterodactylus/sone/web/ImageBrowserPage.java
src/main/java/net/pterodactylus/sone/web/ViewPostPage.java
src/main/java/net/pterodactylus/sone/web/ViewSonePage.java
src/main/java/net/pterodactylus/sone/web/ajax/JsonPage.java
src/main/java/net/pterodactylus/sone/web/page/FreenetPage.java [new file with mode: 0644]
src/main/java/net/pterodactylus/sone/web/page/FreenetTemplatePage.java
src/main/java/net/pterodactylus/sone/web/page/PageToadlet.java

diff --git a/pom.xml b/pom.xml
index 35203cf..3fa8dad 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -18,7 +18,7 @@
                <dependency>
                        <groupId>org.freenetproject</groupId>
                        <artifactId>fred</artifactId>
-                       <version>0.7.5.1336</version>
+                       <version>0.7.5.1405</version>
                        <scope>provided</scope>
                </dependency>
                <dependency>
index 30673a3..c63231a 100644 (file)
@@ -451,6 +451,14 @@ public class FreenetInterface {
                 * {@inheritDoc}
                 */
                @Override
+               public void onGeneratedMetadata(Bucket metadata, BaseClientPutter clientPutter, ObjectContainer objectContainer) {
+                       /* ignore, we don’t care. */
+               }
+
+               /**
+                * {@inheritDoc}
+                */
+               @Override
                public void onGeneratedURI(FreenetURI generatedUri, BaseClientPutter clientPutter, ObjectContainer objectContainer) {
                        resultingUri = generatedUri;
                }
index 29556c9..8f0c474 100644 (file)
 package net.pterodactylus.sone.web;
 
 import java.io.IOException;
+import java.net.URI;
 
 import net.pterodactylus.sone.data.TemporaryImage;
+import net.pterodactylus.sone.web.page.FreenetPage;
 import net.pterodactylus.sone.web.page.FreenetRequest;
-import net.pterodactylus.util.web.Page;
 import net.pterodactylus.util.web.Response;
 
 /**
@@ -29,7 +30,7 @@ import net.pterodactylus.util.web.Response;
  *
  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
-public class GetImagePage implements Page<FreenetRequest> {
+public class GetImagePage implements FreenetPage {
 
        /** The Sone web interface. */
        private final WebInterface webInterface;
@@ -74,4 +75,12 @@ public class GetImagePage implements Page<FreenetRequest> {
                return response.setStatusCode(200).setStatusText("OK").setContentType(contentType).addHeader("Content-Disposition", "attachment; filename=" + temporaryImage.getId() + "." + contentType.substring(contentType.lastIndexOf('/') + 1)).write(temporaryImage.getImageData());
        }
 
+       /**
+        * {@inheritDoc}
+        */
+       @Override
+       public boolean isLinkExcepted(URI link) {
+               return false;
+       }
+
 }
index ed31283..3afaae6 100644 (file)
@@ -17,6 +17,8 @@
 
 package net.pterodactylus.sone.web;
 
+import java.net.URI;
+
 import net.pterodactylus.sone.data.Album;
 import net.pterodactylus.sone.data.Image;
 import net.pterodactylus.sone.data.Sone;
@@ -76,4 +78,12 @@ public class ImageBrowserPage extends SoneTemplatePage {
                templateContext.set("sone", sone);
        }
 
+       /**
+        * {@inheritDoc}
+        */
+       @Override
+       public boolean isLinkExcepted(URI link) {
+               return true;
+       }
+
 }
index 4cc9864..d0ca904 100644 (file)
@@ -17,6 +17,8 @@
 
 package net.pterodactylus.sone.web;
 
+import java.net.URI;
+
 import net.pterodactylus.sone.data.Post;
 import net.pterodactylus.sone.template.SoneAccessor;
 import net.pterodactylus.sone.web.page.FreenetRequest;
@@ -75,4 +77,12 @@ public class ViewPostPage extends SoneTemplatePage {
                templateContext.set("raw", raw);
        }
 
+       /**
+        * {@inheritDoc}
+        */
+       @Override
+       public boolean isLinkExcepted(URI link) {
+               return true;
+       }
+
 }
index 5fe356d..57d4070 100644 (file)
@@ -17,6 +17,7 @@
 
 package net.pterodactylus.sone.web;
 
+import java.net.URI;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
@@ -115,4 +116,12 @@ public class ViewSonePage extends SoneTemplatePage {
                templateContext.set("repliedPosts", repliedPostPagination.getItems());
        }
 
+       /**
+        * {@inheritDoc}
+        */
+       @Override
+       public boolean isLinkExcepted(URI link) {
+               return true;
+       }
+
 }
index 1e5e8ed..4ee3b99 100644 (file)
 package net.pterodactylus.sone.web.ajax;
 
 import java.io.IOException;
+import java.net.URI;
 
 import net.pterodactylus.sone.data.Sone;
 import net.pterodactylus.sone.web.WebInterface;
+import net.pterodactylus.sone.web.page.FreenetPage;
 import net.pterodactylus.sone.web.page.FreenetRequest;
 import net.pterodactylus.util.json.JsonObject;
 import net.pterodactylus.util.json.JsonUtils;
 import net.pterodactylus.util.web.Page;
 import net.pterodactylus.util.web.Response;
-import freenet.clients.http.SessionManager.Session;
 import freenet.clients.http.ToadletContext;
+import freenet.clients.http.SessionManager.Session;
 
 /**
  * A JSON page is a specialized {@link Page} that will always return a JSON
@@ -35,7 +37,7 @@ import freenet.clients.http.ToadletContext;
  *
  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
-public abstract class JsonPage implements Page<FreenetRequest> {
+public abstract class JsonPage implements FreenetPage {
 
        /** The path of the page. */
        private final String path;
@@ -218,4 +220,12 @@ public abstract class JsonPage implements Page<FreenetRequest> {
                return response.setStatusCode(200).setStatusText("OK").setContentType("application/json").write(JsonUtils.format(jsonObject));
        }
 
+       /**
+        * {@inheritDoc}
+        */
+       @Override
+       public boolean isLinkExcepted(URI link) {
+               return false;
+       }
+
 }
diff --git a/src/main/java/net/pterodactylus/sone/web/page/FreenetPage.java b/src/main/java/net/pterodactylus/sone/web/page/FreenetPage.java
new file mode 100644 (file)
index 0000000..d4bbc82
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Sone - FreenetPage.java - Copyright © 2011 David Roden
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package net.pterodactylus.sone.web.page;
+
+import java.net.URI;
+
+import net.pterodactylus.util.web.Page;
+
+/**
+ * Freenet-specific {@link Page} extension that adds the capability to allow a
+ * link to a page to be unharmed by Freenet’s content filter.
+ *
+ * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
+ */
+public interface FreenetPage extends Page<FreenetRequest> {
+
+       /**
+        * Returns whether the given should be excepted from being filtered.
+        *
+        * @param link
+        *            The link to check
+        * @return {@code true} if the link should not be filtered, {@code false} if
+        *         it should be filtered
+        */
+       public boolean isLinkExcepted(URI link);
+
+}
index 5c027e5..e7d6e28 100644 (file)
@@ -19,6 +19,7 @@ package net.pterodactylus.sone.web.page;
 
 import java.io.IOException;
 import java.io.StringWriter;
+import java.net.URI;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
@@ -47,7 +48,7 @@ import freenet.support.HTMLNode;
  *
  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
-public class FreenetTemplatePage implements Page<FreenetRequest>, LinkEnabledCallback {
+public class FreenetTemplatePage implements FreenetPage, LinkEnabledCallback {
 
        /** The logger. */
        private static final Logger logger = Logging.getLogger(FreenetTemplatePage.class);
@@ -252,6 +253,14 @@ public class FreenetTemplatePage implements Page<FreenetRequest>, LinkEnabledCal
                return false;
        }
 
+       /**
+        * {@inheritDoc}
+        */
+       @Override
+       public boolean isLinkExcepted(URI link) {
+               return false;
+       }
+
        //
        // INTERFACE LinkEnabledCallback
        //
index 2d1f35a..8245251 100644 (file)
@@ -26,6 +26,7 @@ import net.pterodactylus.util.web.Page;
 import net.pterodactylus.util.web.Response;
 import freenet.client.HighLevelSimpleClient;
 import freenet.clients.http.LinkEnabledCallback;
+import freenet.clients.http.LinkFilterExceptedToadlet;
 import freenet.clients.http.Toadlet;
 import freenet.clients.http.ToadletContext;
 import freenet.clients.http.ToadletContextClosedException;
@@ -39,7 +40,7 @@ import freenet.support.io.Closer;
  *
  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
-public class PageToadlet extends Toadlet implements LinkEnabledCallback {
+public class PageToadlet extends Toadlet implements LinkEnabledCallback, LinkFilterExceptedToadlet {
 
        /** The name of the menu item. */
        private final String menuName;
@@ -174,4 +175,16 @@ public class PageToadlet extends Toadlet implements LinkEnabledCallback {
                return true;
        }
 
+       //
+       // LINKFILTEREXCEPTEDTOADLET METHODS
+       //
+
+       /**
+        * {@inheritDoc}
+        */
+       @Override
+       public boolean isLinkExcepted(URI link) {
+               return (page instanceof FreenetPage) ? ((FreenetPage) page).isLinkExcepted(link) : false;
+       }
+
 }