/* This code is part of Freenet. It is distributed under the GNU General
* Public License, version 2 (or at your option any later version). See
* http://www.gnu.org/ for further details of the GPL. */
package freenet.clients.http;
import java.io.File;
import java.net.InetAddress;
import java.net.URI;
import java.net.URISyntaxException;
import freenet.clients.http.FProxyFetchInProgress.REFILTER_POLICY;
import freenet.clients.http.PageMaker.THEME;
import freenet.pluginmanager.FredPluginL10n;
import freenet.support.HTMLNode;
import freenet.support.api.BucketFactory;
/** Interface for toadlet containers. Toadlets should register here. */
public interface ToadletContainer {
/** Register a Toadlet. All requests whose URL starts with the given
* prefix will be passed to this toadlet.
* @param t the toadlet to register
* @param menu the menu category to register a navigation link with with. It is
* most likely also a l10n key, though that is irrelevant to this method.
* @param urlPrefix the prefix that the Toadlet will serve; should be a path like
* /foo/bar/baz, most likely the string returned by the toadlet's path() method
* @param atFront If true, this Toadlet will take precedence over any other
* previously-registered Toadlet whose urlPrefix also matches. Otherwise,
* the other matching Toadlet is used instead.
* @param fullOnly Whether or not the navigation link is shown when the http client
* does not have full security access. Note that passing false does not prevent
* the Toadlet from receiving requests under urlPrefix, so Toadlet authors
* are advised to check for full access themselves, possibly returning a
* 403 error code.
*/
public void register(Toadlet t, String menu, String urlPrefix, boolean atFront, boolean fullAccessOnly);
/**
* Registers a Toadlet and optionally adds a navigation link to the menu. All
* requests whose URL starts with the given prefix will be given to this Toadlet.
* If either the menu or the name parameter is null, then no navigation link
* is be registered for the Toadlet and the title, fullOnly, cb, and l10n
* parameters are ignored.
*
* @param t the toadlet to register
* @param menu the menu category to register a navigation link with with. It is
* most likely also a l10n key, though that is irrelevant to this method.
* @param urlPrefix the prefix that the Toadlet will serve; should be a path like
* /foo/bar/baz, most likely the string returned by the toadlet's path() method
* @param atFront If true, this Toadlet will take precedence over any other
* previously-registered Toadlet whose urlPrefix also matches. Otherwise,
* the other matching Toadlet is used instead.
* @param name A l10n key used for the navigation link label.
* @param title A l10n key used for the navigation link tooltip.
* @param fullOnly Whether or not the navigation link is shown when the http client
* does not have full security access. Note that passing false does not prevent
* the Toadlet from receiving requests under urlPrefix, so Toadlet authors
* are advised to check for full access themselves, possibly returning a
* 403 error code.
* @param cb A LinkEnabledCalback, allowing fine control of when the navigation
* link is visible and when it isn't. Passing null means it is always visible.
*/
public void register(Toadlet t, String menu, String urlPrefix, boolean atFront, String name, String title, boolean fullOnly, LinkEnabledCallback cb);
/**
* Registers a Toadlet and optionally adds a navigation link to the menu. All
* requests whose URL starts with the given prefix will be given to this Toadlet.
* If either the menu or the name parameter is null, then no navigation link
* is be registered for the Toadlet and the title, fullOnly, cb, and l10n
* parameters are ignored.
*
* @param t the toadlet to register
* @param menu the menu category to register a navigation link with with. It is
* most likely also a l10n key, though that is irrelevant to this method.
* @param urlPrefix the prefix that the Toadlet will serve; should be a path like
* /foo/bar/baz, most likely the string returned by the toadlet's path() method
* @param atFront If true, this Toadlet will take precedence over any other
* previously-registered Toadlet whose urlPrefix also matches. Otherwise,
* the other matching Toadlet is used instead.
* @param name A l10n key used for the navigation link label.
* @param title A l10n key used for the navigation link tooltip.
* @param fullOnly Whether or not the navigation link is shown when the http client
* does not have full security access. Note that passing false does not prevent
* the Toadlet from receiving requests under urlPrefix, so Toadlet authors
* are advised to check for full access themselves, possibly returning a
* 403 error code.
* @param cb A LinkEnabledCalback, allowing fine control of when the navigation
* link is visible and when it isn't. Passing null means it is always visible.
* @param l10n A FredPluginL10n instance for translating the name and title parameters.
* May be null.
*/
public void register(Toadlet t, String menu, String urlPrefix, boolean atFront, String name, String title, boolean fullOnly, LinkEnabledCallback cb, FredPluginL10n l10n);
public void unregister(Toadlet t);
/**
* Find a Toadlet by URI.
* @throws URISyntaxException
* @throws RedirectException
* @throws PermanentRedirectException
*/
public Toadlet findToadlet(URI uri) throws PermanentRedirectException;
/**
* Get the name of the theme to be used by all the Toadlets
*/
public THEME getTheme();
/**
* Get the form password
*/
public String getFormPassword();
/** Is the given IP address allowed full access to the node? */
public boolean isAllowedFullAccess(InetAddress remoteAddr);
/** Whether to tell spiders to go away */
public boolean doRobots();
public HTMLNode addFormChild(HTMLNode parentNode, String target, String name);
public boolean enablePersistentConnections();
public boolean enableInlinePrefetch();
public boolean enableExtendedMethodHandling();
/** Get the BucketFactory */
public BucketFactory getBucketFactory();
/** Can we deal with POSTs yet? */
public boolean allowPosts();
/** Was public-gateway mode enabled on startup? (Changing it won't take
* effect until restart because of bookmark-related issues).
* If so, users with full access will still be able to configure the
* node etc, but everyone else will not have access to the download
* queue or anything else that might conceivably result in a DoS. */
public boolean publicGatewayMode();
public boolean enableActivelinks();
public boolean sendAllThemes();
public boolean isFProxyJavascriptEnabled();
public boolean isFProxyWebPushingEnabled();
public boolean disableProgressPage();
public PageMaker getPageMaker();
public boolean isAdvancedModeEnabled();
public void setAdvancedMode(boolean enabled);
public boolean fproxyHasCompletedWizard();
/** What to do when we find cached data on the global queue but it's already been
* filtered, and we want a filtered copy. */
public REFILTER_POLICY getReFilterPolicy();
public File getOverrideFile();
public String getURL();
public String getURL(String host);
public boolean isSSL();
/** Create a unique ID for a ToadletContext */
public long generateUniqueID();
}