package freenet.clients.http;
import java.io.IOException;
import java.net.URI;
import freenet.client.HighLevelSimpleClient;
import freenet.node.NodeClientCore;
import freenet.support.HTMLNode;
import freenet.support.api.HTTPRequest;
/**
* Browser Test Toadlet. Accessible from <code>http://.../test/</code>.
*
* Useful to test browser's capabilities:
* <ul>
* <li>warn the user about useless enabled features/plugins which might be dangerous</li>
* <li>Assist the user in configuring his browser properly to surf on freenet</li>
* <ul>
*/
public class BrowserTestToadlet extends Toadlet {
BrowserTestToadlet(HighLevelSimpleClient client, NodeClientCore c) {
super(client);
this.core=c;
}
final NodeClientCore core;
final static String imgWarningMime =
"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" +
"X38FNlhhhyW2WGOPRTZZZbEMCAA7====";
public void handleMethodGET(URI uri, HTTPRequest request, ToadletContext ctx) throws ToadletContextClosedException, IOException {
// Yes, we need that in order to test the browser (number of connections per server)
if (request.isParameterSet("wontload")) return;
else if (request.isParameterSet("mimeTest")){
this.writeHTMLReply(ctx, 200, "OK", imgWarningMime);
return;
}
PageNode page = ctx.getPageMaker().getPageNode("Freenet browser testing tool", ctx);
HTMLNode pageNode = page.outer;
HTMLNode contentNode = page.content;
if(ctx.isAllowedFullAccess())
contentNode.addChild(ctx.getAlertManager().createSummary());
// #### Test MIME inline
ctx.getPageMaker().getInfobox("infobox-warning", "MIME Inline", contentNode, "mime-inline-test", true).
//addChild("img", new String[]{"src", "alt"}, new String[]{"data:image/gif;base64,"+imgWarningMime, "Your browser is probably safe."});
addChild("img", new String[]{"src", "alt"}, new String[]{"?mimeTest", "Your browser is probably safe."});
// #### Test whether we can have more than 10 simultaneous connections to fproxy
HTMLNode maxConnectionsPerServerContent = ctx.getPageMaker().getInfobox("infobox-warning", "Number of connections", contentNode, "browser-connections", true);
maxConnectionsPerServerContent.addChild("#", "If you do not see a green picture below, your browser is probably missconfigured! Ensure it allows more than 10 connections per server.");
for(int i = 0; i < 10 ; i++)
maxConnectionsPerServerContent.addChild("img", "src", ".?wontload");
maxConnectionsPerServerContent.addChild("img", new String[]{"src", "alt"}, new String[]{"/static/themes/clean/success.gif", "fail!"});
// #### Test whether JS is available. : should do the test with pictures instead!
HTMLNode jsTestContent= ctx.getPageMaker().getInfobox("infobox-warning", "Javascript", contentNode, "javascript-test", true);
HTMLNode jsTest = jsTestContent.addChild("div");
jsTest.addChild("img", new String[]{"id", "src", "alt"}, new String[]{"JSTEST", "/static/themes/clean/success.gif", "fail!"});
jsTest.addChild("script", "type", "text/javascript").addChild("%", "document.getElementById('JSTEST').src = '/static/themes/clean/warning.gif';");
this.writeHTMLReply(ctx, 200, "OK", pageNode.generate());
}
@Override
public String path() {
return "/test/";
}
}