Author: toad
Date: 2006-12-04 16:15:14 +0000 (Mon, 04 Dec 2006)
New Revision: 11225
Modified:
trunk/freenet/src/freenet/clients/http/ConfigToadlet.java
trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
trunk/freenet/src/freenet/clients/http/FProxyToadlet.java
trunk/freenet/src/freenet/clients/http/LocalFileInsertToadlet.java
trunk/freenet/src/freenet/clients/http/N2NTMToadlet.java
trunk/freenet/src/freenet/clients/http/PageMaker.java
trunk/freenet/src/freenet/clients/http/PluginToadlet.java
trunk/freenet/src/freenet/clients/http/PproxyToadlet.java
trunk/freenet/src/freenet/clients/http/QueueToadlet.java
trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java
trunk/freenet/src/freenet/clients/http/Spider.java
trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java
trunk/freenet/src/freenet/clients/http/ToadletContainer.java
trunk/freenet/src/freenet/clients/http/ToadletContext.java
trunk/freenet/src/freenet/clients/http/ToadletContextImpl.java
trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java
Log:
Factor out creation of a form tag with correct parameters, and inclusion of the
formPassword, into a method on ToadletContext.
Always include accept-charset=UTF-8, enctype=multipart/form-data.
This and 11222 fix #889, as well as saving some code.
Modified: trunk/freenet/src/freenet/clients/http/ConfigToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/ConfigToadlet.java 2006-12-04
16:13:20 UTC (rev 11224)
+++ trunk/freenet/src/freenet/clients/http/ConfigToadlet.java 2006-12-04
16:15:14 UTC (rev 11225)
@@ -121,8 +121,7 @@
HTMLNode infobox = contentNode.addChild("div", "class",
"infobox infobox-normal");
infobox.addChild("div", "class", "infobox-header", "Freenet
node configuration");
HTMLNode configNode = infobox.addChild("div", "class",
"infobox-content");
- HTMLNode formNode = configNode.addChild("form", new String[] {
"action", "method" }, new String[] { ".", "post" });
- formNode.addChild("input", new String[] { "type", "name",
"value" }, new String[] { "hidden", "formPassword", core.formPassword });
+ HTMLNode formNode = ctx.addFormChild(configNode, ".",
"configForm");
for(int i=0; i<sc.length;i++){
short displayedConfigElements = 0;
Modified: trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
2006-12-04 16:13:20 UTC (rev 11224)
+++ trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
2006-12-04 16:15:14 UTC (rev 11225)
@@ -342,8 +342,7 @@
peerTableInfoboxContent.addChild("a", "href",
"/", "node homepage");
peerTableInfoboxContent.addChild("#", " and
read the top infobox to see how it is done.");
} else {
- HTMLNode peerForm =
peerTableInfoboxContent.addChild("form", new String[] { "action", "method",
"enctype", "id", "name" }, new String[] { ".", "post", "multipart/form-data",
"peersForm", "peersForm" });
- peerForm.addChild("input", new String[] {
"type", "name", "value" }, new String[] { "hidden", "formPassword",
core.formPassword });
+ HTMLNode peerForm =
ctx.addFormChild(peerTableInfoboxContent, ".", "peersForm");
HTMLNode peerTable = peerForm.addChild("table",
"class", "darknet_connections");
HTMLNode peerTableHeaderRow =
peerTable.addChild("tr");
peerTableHeaderRow.addChild("th");
@@ -523,8 +522,7 @@
HTMLNode peerAdditionInfobox = contentNode.addChild("div",
"class", "infobox infobox-normal");
peerAdditionInfobox.addChild("div", "class", "infobox-header",
"Add another peer");
HTMLNode peerAdditionContent =
peerAdditionInfobox.addChild("div", "class", "infobox-content");
- HTMLNode peerAdditionForm =
peerAdditionContent.addChild("form", new String[] { "action", "method",
"enctype" }, new String[] { ".", "post", "multipart/form-data" });
- peerAdditionForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "hidden", "formPassword", core.formPassword
});
+ HTMLNode peerAdditionForm =
ctx.addFormChild(peerAdditionContent, ".", "addPeerForm");
peerAdditionForm.addChild("#", "Paste the reference here:");
peerAdditionForm.addChild("br");
peerAdditionForm.addChild("textarea", new String[] { "id",
"name", "rows", "cols" }, new String[] { "reftext", "ref", "8", "74" });
@@ -697,7 +695,7 @@
}
}
}
- String resultString = N2NTMToadlet.createN2NTMSendForm(
pageNode, contentNode, ctx, peers, core.formPassword);
+ String resultString = N2NTMToadlet.createN2NTMSendForm(
pageNode, contentNode, ctx, peers);
if(resultString != null) { // was there an error in
createN2NTMSendForm()?
this.writeReply(ctx, 200, "text/html", "OK",
resultString);
return;
@@ -867,9 +865,8 @@
HTMLNode infobox =
contentNode.addChild(ctx.getPageMaker().getInfobox("infobox-warning", "Node
removal"));
HTMLNode content =
ctx.getPageMaker().getContentNode(infobox);
content.addChild("p").addChild("#", "Are you sure you wish to remove
"+peerNodes[i].getName()+" ? Before it has at least one week downtime, it's not
recommended to do so, as it may be down only temporarily, and many users cannot
run their nodes 24x7.");
- HTMLNode removeForm =
content.addChild("p").addChild("form", new String[] { "action", "method" }, new
String[] { "/darknet/", "post" });
+ HTMLNode removeForm =
ctx.addFormChild(content, "/darknet/", "removeConfirmForm");
removeForm.addChild("input",
new String[] { "type", "name", "value" }, new String[] { "hidden",
"node_"+peerNodes[i].hashCode(), "remove" });
- removeForm.addChild("input",
new String[] { "type", "name", "value" }, new String[] { "hidden",
"formPassword", core.formPassword });
removeForm.addChild("input",
new String[] { "type", "name", "value" }, new String[] { "submit", "cancel",
"Cancel" });
removeForm.addChild("input",
new String[] { "type", "name", "value" }, new String[] { "submit", "remove",
"Remove it!" });
removeForm.addChild("input",
new String[] { "type", "name", "value" }, new String[] { "hidden", "forceit",
"Force" });
Modified: trunk/freenet/src/freenet/clients/http/FProxyToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/FProxyToadlet.java 2006-12-04
16:13:20 UTC (rev 11224)
+++ trunk/freenet/src/freenet/clients/http/FProxyToadlet.java 2006-12-04
16:15:14 UTC (rev 11225)
@@ -391,11 +391,10 @@
optionForm.addChild("input", new String[] {
"type", "name", "value" }, new String[] { "hidden", "max-size",
String.valueOf(e.expectedSize == -1 ? Long.MAX_VALUE : e.expectedSize*2) });
optionForm.addChild("input", new String[] {
"type", "name", "value" }, new String[] { "submit", "fetch", "Fetch anyway and
display file in browser" });
option = optionList.addChild("li");
- optionForm = option.addChild("form", new
String[] { "action", "method" }, new String[] { "/queue/", "post" });
+ optionForm = ctx.addFormChild(option,
"/queue/", "tooBigQueueForm");
optionForm.addChild("input", new String[] {
"type", "name", "value" }, new String[] { "hidden", "key", key.toString(false)
});
optionForm.addChild("input", new String[] {
"type", "name", "value" }, new String[] { "hidden", "return-type", "disk" });
optionForm.addChild("input", new String[] {
"type", "name", "value" }, new String[] { "hidden", "persistence", "forever" });
- optionForm.addChild("input", new String[] {
"type", "name", "value" }, new String[] { "hidden", "formPassword",
core.formPassword });
if (mime != null) {
optionForm.addChild("input", new
String[] { "type", "name", "value" }, new String[] { "hidden", "type", mime });
}
Modified: trunk/freenet/src/freenet/clients/http/LocalFileInsertToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/LocalFileInsertToadlet.java
2006-12-04 16:13:20 UTC (rev 11224)
+++ trunk/freenet/src/freenet/clients/http/LocalFileInsertToadlet.java
2006-12-04 16:15:14 UTC (rev 11225)
@@ -115,8 +115,7 @@
} else {
if (currentFile.canRead()) {
HTMLNode cellNode =
fileRow.addChild("td");
- HTMLNode formNode =
cellNode.addChild("form", new String[] { "action", "method", "accept-charset"
}, new String[] { "/queue/", "post", "utf-8" });
- formNode.addChild("input", new
String[] { "type", "name", "value" }, new String[] { "hidden", "formPassword",
core.formPassword });
+ HTMLNode formNode =
toadletContext.addFormChild(cellNode, "/queue/", "insertLocalFileForm");
formNode.addChild("input", new
String[] { "type", "name", "value" }, new String[] { "hidden", "filename",
currentFile.getAbsolutePath() });
formNode.addChild("input", new
String[] { "type", "name", "value" }, new String[] { "submit",
"insert-local-file", "Insert" });
fileRow.addChild("td",
currentFile.getName());
Modified: trunk/freenet/src/freenet/clients/http/N2NTMToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/N2NTMToadlet.java 2006-12-04
16:13:20 UTC (rev 11224)
+++ trunk/freenet/src/freenet/clients/http/N2NTMToadlet.java 2006-12-04
16:15:14 UTC (rev 11225)
@@ -75,7 +75,7 @@
}
HashMap peers = new HashMap();
peers.put( input_hashcode_string, peernode_name );
- String resultString = createN2NTMSendForm( pageNode,
contentNode, ctx, peers, core.formPassword);
+ String resultString = createN2NTMSendForm( pageNode,
contentNode, ctx, peers);
if(resultString != null) { // was there an error in
createN2NTMSendForm()?
this.writeReply(ctx, 200, "text/html", "OK",
resultString);
return;
@@ -198,7 +198,7 @@
ctx.sendReplyHeaders(302, "Found", headers, null, 0);
}
- public static String createN2NTMSendForm(HTMLNode pageNode, HTMLNode
contentNode, ToadletContext ctx, HashMap peers, String formPassword) throws
ToadletContextClosedException, IOException {
+ public static String createN2NTMSendForm(HTMLNode pageNode, HTMLNode
contentNode, ToadletContext ctx, HashMap peers) throws
ToadletContextClosedException, IOException {
if(contentNode == null) {
contentNode.addChild(createPeerInfobox("infobox-error",
"Internal error", "Internal error: N2NTMToadlet.createN2NTMSendForm() not
passed a valid contentNode."));
StringBuffer pageBuffer = new StringBuffer();
@@ -216,8 +216,7 @@
messageTargetList.addChild("li", peer_name);
}
HTMLNode infoboxContent = infobox.addChild("div", "class",
"infobox-content");
- HTMLNode messageForm = infoboxContent.addChild("form", new
String[] { "action", "method" }, new String[] { "/send_n2ntm/", "post" });
- messageForm.addChild("input", new String[] { "type", "name",
"value" }, new String[] { "hidden", "formPassword", formPassword });
+ HTMLNode messageForm = ctx.addFormChild(infoboxContent,
"/send_n2ntm/", "sendN2NTMForm");
// Iterate peers
for (Iterator it = peers.keySet().iterator(); it.hasNext(); ) {
String peerNodeHash = (String) it.next();
Modified: trunk/freenet/src/freenet/clients/http/PageMaker.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/PageMaker.java 2006-12-04
16:13:20 UTC (rev 11224)
+++ trunk/freenet/src/freenet/clients/http/PageMaker.java 2006-12-04
16:15:14 UTC (rev 11225)
@@ -139,10 +139,6 @@
return infobox;
}
- public HTMLNode createFormPasswordInput(String formPassword) {
- return new HTMLNode("input", new String[] { "type", "name",
"value" }, new String[] { "hidden", "formPassword", formPassword });
- }
-
/**
* Returns an {@link ArrayList} containing the names of all available
* themes. If freenet was started from a JAR file the list is cached
Modified: trunk/freenet/src/freenet/clients/http/PluginToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/PluginToadlet.java 2006-12-04
16:13:20 UTC (rev 11224)
+++ trunk/freenet/src/freenet/clients/http/PluginToadlet.java 2006-12-04
16:15:14 UTC (rev 11225)
@@ -218,19 +218,17 @@
} else {
tableRow.addChild("td");
}
- HTMLNode reloadForm =
tableRow.addChild("td").addChild("form", new String[] { "action", "method" },
new String[] { ".", "post" });
+ HTMLNode reloadForm = context.addFormChild(tableRow,
".", "pluginReloadForm");
reloadForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "hidden", "action", "reload" });
reloadForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "hidden", "pluginName", internalName });
reloadForm.addChild("input", new String[] { "type",
"value" }, new String[] { "submit", "Reload" });
- reloadForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "hidden", "formPassword", core.formPassword
});
- HTMLNode unloadForm =
tableRow.addChild("td").addChild("form", new String[] { "action", "method" },
new String[] { ".", "post" });
+ HTMLNode unloadForm = context.addFormChild(tableRow,
".", "pluginUnloadForm");
unloadForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "hidden", "action", "unload" });
unloadForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "hidden", "pluginName", internalName });
unloadForm.addChild("input", new String[] { "type",
"value" }, new String[] { "submit", "Unload" });
- unloadForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "hidden", "formPassword", core.formPassword
});
}
- contentNode.addChild(createAddPluginBox());
+ contentNode.addChild(createAddPluginBox(context));
StringBuffer pageBuffer = new StringBuffer();
pageNode.generate(pageBuffer);
@@ -273,12 +271,11 @@
* @param outputBuffer
* The StringBuffer to append the HTML code to
*/
- private HTMLNode createAddPluginBox() {
+ private HTMLNode createAddPluginBox(ToadletContext ctx) {
HTMLNode addPluginBox = new HTMLNode("div", "class", "infobox");
addPluginBox.addChild("div", "class", "infobox-header", "Add a
plugin");
- HTMLNode addForm = addPluginBox.addChild("div", "class",
"infobox-content").addChild("form", new String[] { "action", "method" }, new
String[] { ".", "post" });
+ HTMLNode addForm =
ctx.addFormChild(addPluginBox.addChild("div", "class", "infobox-content"), ".",
"addPluginBox");
addForm.addChild("input", new String[] { "type", "name",
"value" }, new String[] { "hidden", "action", "add" });
- addForm.addChild("input", new String[] { "type", "name",
"value" }, new String[] { "hidden", "formPassword", core.formPassword });
addForm.addChild("input", new String[] { "type", "name",
"value", "size" }, new String[] { "text", "pluginName", "", "40" });
addForm.addChild("input", new String[] { "type", "value" }, new
String[] { "submit", "Load plugin" });
return addPluginBox;
Modified: trunk/freenet/src/freenet/clients/http/PproxyToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/PproxyToadlet.java 2006-12-04
16:13:20 UTC (rev 11224)
+++ trunk/freenet/src/freenet/clients/http/PproxyToadlet.java 2006-12-04
16:15:14 UTC (rev 11225)
@@ -78,8 +78,8 @@
infobox.addChild("div", "class", "infobox-header",
"Unload plugin?");
HTMLNode infoboxContent = infobox.addChild("div",
"class", "infobox-content");
infoboxContent.addChild("#", "Are you sure you wish to
unload " + request.getPartAsString("unload", MAX_PLUGIN_NAME_LENGTH) + '?');
- HTMLNode unloadForm = infoboxContent.addChild("form",
new String[] { "action", "method" }, new String[] { "/plugins/", "post" });
- unloadForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "hidden", "formPassword", core.formPassword
});
+ HTMLNode unloadForm =
+ ctx.addFormChild(infoboxContent, "/plugins/",
"unloadPluginConfirmForm");
unloadForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "submit", "cancel", "Cancel" });
unloadForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "hidden", "unloadconfirm",
request.getPartAsString("unload", MAX_PLUGIN_NAME_LENGTH) });
unloadForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "submit", "confirm", "Unload" });
@@ -202,19 +202,16 @@
visitForm.addChild("input", new
String[] { "type", "name", "value" }, new String[] { "hidden", "formPassword",
core.formPassword });
visitForm.addChild("input", new
String[] { "type", "value" }, new String[] { "submit", "Visit" });
}
- HTMLNode unloadForm =
actionCell.addChild("form", new String[] { "action", "method" }, new String[] {
".", "post" });
- unloadForm.addChild("input", new
String[] { "type", "name", "value" }, new String[] { "hidden", "formPassword",
core.formPassword });
+ HTMLNode unloadForm =
ctx.addFormChild(actionCell, ".", "unloadPluginForm");
unloadForm.addChild("input", new
String[] { "type", "name", "value" }, new String[] { "hidden", "unload",
pi.getThreadName() });
unloadForm.addChild("input", new
String[] { "type", "value" }, new String[] { "submit", "Unload" });
- HTMLNode reloadForm =
actionCell.addChild("form", new String[] { "action", "method" }, new String[] {
".", "post" });
- reloadForm.addChild("input", new
String[] { "type", "name", "value" }, new String[] { "hidden", "formPassword",
core.formPassword });
+ HTMLNode reloadForm =
ctx.addFormChild(actionCell, ".", "reloadPluginForm");
reloadForm.addChild("input", new
String[] { "type", "name", "value" }, new String[] { "hidden", "reload",
pi.getThreadName() });
reloadForm.addChild("input", new
String[] { "type", "value" }, new String[] { "submit", "Reload" });
}
}
- HTMLNode addForm = infoboxContent.addChild("form", new
String[] { "action", "method" }, new String[] { ".", "post" });
- addForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "hidden", "formPassword", core.formPassword
});
+ HTMLNode addForm = ctx.addFormChild(infoboxContent,
".", "addPluginForm");
HTMLNode loadDiv = addForm.addChild("div");
loadDiv.addChild("#", "Load plugin: ");
loadDiv.addChild("input", new String[] { "type",
"name", "size" }, new String[] { "text", "load", "40" });
Modified: trunk/freenet/src/freenet/clients/http/QueueToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/QueueToadlet.java 2006-12-04
16:13:20 UTC (rev 11224)
+++ trunk/freenet/src/freenet/clients/http/QueueToadlet.java 2006-12-04
16:15:14 UTC (rev 11225)
@@ -78,16 +78,17 @@
return;
}
+ boolean logMINOR = Logger.shouldLog(Logger.MINOR, this);
+
String pass = request.getPartAsString("formPassword",
32);
if ((pass.length() == 0) ||
!pass.equals(core.formPassword)) {
MultiValueTable headers = new MultiValueTable();
headers.put("Location", "/queue/");
ctx.sendReplyHeaders(302, "Found", headers,
null, 0);
+ if(logMINOR) Logger.minor(this, "No
formPassword: "+pass);
return;
}
- boolean logMINOR = Logger.shouldLog(Logger.MINOR, this);
-
if(request.isPartSet("remove_request") &&
(request.getPartAsString("remove_request", 32).length() > 0)) {
String identifier =
request.getPartAsString("identifier", MAX_IDENTIFIER_LENGTH);
if(logMINOR) Logger.minor(this, "Removing
"+identifier);
@@ -247,8 +248,7 @@
HTMLNode alertContent = ctx.getPageMaker().getContentNode(alertNode);
alertContent.addChild("#", "The file you want to download is currently not
filtered by Freenet\u2019s content filter! That means that your anonymity can
be compromised by opening the file!");
HTMLNode optionListNode = alertContent.addChild("ul");
-
HTMLNode optionForm = optionListNode.addChild("li").addChild("form", new
String[] { "action", "method", "enctype", "encoding" }, new String[] {
"/queue/", "post", "UTF-8", "multipart/form-data" });
-
optionForm.addChild(ctx.getPageMaker().createFormPasswordInput(core.formPassword));
+
HTMLNode optionForm = ctx.addFormChild(optionListNode, "/queue/",
"queueDownloadNotFilteredConfirmForm");
optionForm.addChild("input", new String[] { "type", "name", "value" }, new
String[] { "hidden", "identifier", identifier });
optionForm.addChild("input", new String[] { "type", "name", "value" }, new
String[] { "hidden", "forceDownload",
String.valueOf(System.currentTimeMillis()) });
optionForm.addChild("input", new String[] { "type", "name", "value" }, new
String[] { "submit", "get", "Download anyway" });
@@ -348,7 +348,7 @@
HTMLNode infobox =
contentNode.addChild(pageMaker.getInfobox("infobox-information", "Global queue
is empty"));
HTMLNode infoboxContent =
pageMaker.getContentNode(infobox);
infoboxContent.addChild("#", "There is no task queued
on the global queue at the moment.");
- contentNode.addChild(createInsertBox(pageMaker));
+ contentNode.addChild(createInsertBox(pageMaker, ctx));
writeReply(ctx, 200, "text/html", "OK",
pageNode.generate());
return;
}
@@ -423,7 +423,7 @@
/* add alert summary box */
contentNode.addChild(core.alerts.createSummary());
/* add file insert box */
- contentNode.addChild(createInsertBox(pageMaker));
+ contentNode.addChild(createInsertBox(pageMaker, ctx));
/* navigation bar */
HTMLNode navigationBar = pageMaker.getInfobox("navbar",
"Request Navigation");
@@ -484,7 +484,7 @@
}
if (reqs.length > 1 &&
SimpleToadletServer.isPanicButtonToBeShown) {
- contentNode.addChild(createPanicBox(pageMaker));
+ contentNode.addChild(createPanicBox(pageMaker, ctx));
}
boolean advancedEnabled = core.isAdvancedDarknetEnabled();
@@ -494,9 +494,9 @@
HTMLNode completedDownloadsTempInfobox =
contentNode.addChild(pageMaker.getInfobox("completed_requests", "Completed:
Downloads to temporary directory (" + completedDownloadToTemp.size() + ')'));
HTMLNode completedDownloadsToTempContent =
pageMaker.getContentNode(completedDownloadsTempInfobox);
if (advancedEnabled) {
-
completedDownloadsToTempContent.addChild(createRequestTable(pageMaker,
completedDownloadToTemp, new int[] { LIST_IDENTIFIER, LIST_SIZE,
LIST_MIME_TYPE, LIST_DOWNLOAD, LIST_PERSISTENCE, LIST_KEY }));
+
completedDownloadsToTempContent.addChild(createRequestTable(pageMaker, ctx,
completedDownloadToTemp, new int[] { LIST_IDENTIFIER, LIST_SIZE,
LIST_MIME_TYPE, LIST_DOWNLOAD, LIST_PERSISTENCE, LIST_KEY }));
} else {
-
completedDownloadsToTempContent.addChild(createRequestTable(pageMaker,
completedDownloadToTemp, new int[] { LIST_SIZE, LIST_MIME_TYPE, LIST_DOWNLOAD,
LIST_PERSISTENCE, LIST_KEY }));
+
completedDownloadsToTempContent.addChild(createRequestTable(pageMaker, ctx,
completedDownloadToTemp, new int[] { LIST_SIZE, LIST_MIME_TYPE, LIST_DOWNLOAD,
LIST_PERSISTENCE, LIST_KEY }));
}
}
@@ -505,9 +505,9 @@
HTMLNode completedToDiskInfobox =
contentNode.addChild(pageMaker.getInfobox("completed_requests", "Completed:
Downloads to download directory (" + completedDownloadToDisk.size() + ')'));
HTMLNode completedToDiskInfoboxContent =
pageMaker.getContentNode(completedToDiskInfobox);
if (advancedEnabled) {
-
completedToDiskInfoboxContent.addChild(createRequestTable(pageMaker,
completedDownloadToDisk, new int[] { LIST_IDENTIFIER, LIST_FILENAME, LIST_SIZE,
LIST_MIME_TYPE, LIST_DOWNLOAD, LIST_PERSISTENCE, LIST_KEY }));
+
completedToDiskInfoboxContent.addChild(createRequestTable(pageMaker, ctx,
completedDownloadToDisk, new int[] { LIST_IDENTIFIER, LIST_FILENAME, LIST_SIZE,
LIST_MIME_TYPE, LIST_DOWNLOAD, LIST_PERSISTENCE, LIST_KEY }));
} else {
-
completedToDiskInfoboxContent.addChild(createRequestTable(pageMaker,
completedDownloadToDisk, new int[] { LIST_FILENAME, LIST_SIZE, LIST_MIME_TYPE,
LIST_DOWNLOAD, LIST_PERSISTENCE, LIST_KEY }));
+
completedToDiskInfoboxContent.addChild(createRequestTable(pageMaker, ctx,
completedDownloadToDisk, new int[] { LIST_FILENAME, LIST_SIZE, LIST_MIME_TYPE,
LIST_DOWNLOAD, LIST_PERSISTENCE, LIST_KEY }));
}
}
@@ -516,9 +516,9 @@
HTMLNode completedUploadInfobox =
contentNode.addChild(pageMaker.getInfobox("completed_requests", "Completed:
Uploads (" + completedUpload.size() + ')'));
HTMLNode completedUploadInfoboxContent =
pageMaker.getContentNode(completedUploadInfobox);
if (advancedEnabled) {
-
completedUploadInfoboxContent.addChild(createRequestTable(pageMaker,
completedUpload, new int[] { LIST_IDENTIFIER, LIST_FILENAME, LIST_SIZE,
LIST_MIME_TYPE, LIST_PERSISTENCE, LIST_KEY }));
+
completedUploadInfoboxContent.addChild(createRequestTable(pageMaker, ctx,
completedUpload, new int[] { LIST_IDENTIFIER, LIST_FILENAME, LIST_SIZE,
LIST_MIME_TYPE, LIST_PERSISTENCE, LIST_KEY }));
} else {
-
completedUploadInfoboxContent.addChild(createRequestTable(pageMaker,
completedUpload, new int[] { LIST_FILENAME, LIST_SIZE, LIST_MIME_TYPE,
LIST_PERSISTENCE, LIST_KEY }));
+
completedUploadInfoboxContent.addChild(createRequestTable(pageMaker, ctx,
completedUpload, new int[] { LIST_FILENAME, LIST_SIZE, LIST_MIME_TYPE,
LIST_PERSISTENCE, LIST_KEY }));
}
}
@@ -527,9 +527,9 @@
HTMLNode completedUploadDirInfobox =
contentNode.addChild(pageMaker.getInfobox("completed_requests", "Completed:
Directory Uploads (" + completedDirUpload.size() + ')'));
HTMLNode completedUploadDirContent =
pageMaker.getContentNode(completedUploadDirInfobox);
if (advancedEnabled) {
-
completedUploadDirContent.addChild(createRequestTable(pageMaker,
completedDirUpload, new int[] { LIST_IDENTIFIER, LIST_FILES, LIST_TOTAL_SIZE,
LIST_PERSISTENCE, LIST_KEY }));
+
completedUploadDirContent.addChild(createRequestTable(pageMaker, ctx,
completedDirUpload, new int[] { LIST_IDENTIFIER, LIST_FILES, LIST_TOTAL_SIZE,
LIST_PERSISTENCE, LIST_KEY }));
} else {
-
completedUploadDirContent.addChild(createRequestTable(pageMaker,
completedDirUpload, new int[] { LIST_FILES, LIST_TOTAL_SIZE, LIST_PERSISTENCE,
LIST_KEY }));
+
completedUploadDirContent.addChild(createRequestTable(pageMaker, ctx,
completedDirUpload, new int[] { LIST_FILES, LIST_TOTAL_SIZE, LIST_PERSISTENCE,
LIST_KEY }));
}
}
@@ -538,9 +538,9 @@
HTMLNode failedInfobox =
contentNode.addChild(pageMaker.getInfobox("failed_requests", "Failed: Downloads
(" + failedDownload.size() + ')'));
HTMLNode failedContent =
pageMaker.getContentNode(failedInfobox);
if (advancedEnabled) {
-
failedContent.addChild(createRequestTable(pageMaker, failedDownload, new int[]
{ LIST_IDENTIFIER, LIST_FILENAME, LIST_SIZE, LIST_MIME_TYPE, LIST_PROGRESS,
LIST_REASON, LIST_PERSISTENCE, LIST_KEY }));
+
failedContent.addChild(createRequestTable(pageMaker, ctx, failedDownload, new
int[] { LIST_IDENTIFIER, LIST_FILENAME, LIST_SIZE, LIST_MIME_TYPE,
LIST_PROGRESS, LIST_REASON, LIST_PERSISTENCE, LIST_KEY }));
} else {
-
failedContent.addChild(createRequestTable(pageMaker, failedDownload, new int[]
{ LIST_FILENAME, LIST_SIZE, LIST_MIME_TYPE, LIST_PROGRESS, LIST_REASON,
LIST_PERSISTENCE, LIST_KEY }));
+
failedContent.addChild(createRequestTable(pageMaker, ctx, failedDownload, new
int[] { LIST_FILENAME, LIST_SIZE, LIST_MIME_TYPE, LIST_PROGRESS, LIST_REASON,
LIST_PERSISTENCE, LIST_KEY }));
}
}
@@ -549,9 +549,9 @@
HTMLNode failedInfobox =
contentNode.addChild(pageMaker.getInfobox("failed_requests", "Failed: Uploads
(" + failedUpload.size() + ')'));
HTMLNode failedContent =
pageMaker.getContentNode(failedInfobox);
if (advancedEnabled) {
-
failedContent.addChild(createRequestTable(pageMaker, failedUpload, new int[] {
LIST_IDENTIFIER, LIST_FILENAME, LIST_SIZE, LIST_MIME_TYPE, LIST_PROGRESS,
LIST_REASON, LIST_PERSISTENCE, LIST_KEY }));
+
failedContent.addChild(createRequestTable(pageMaker, ctx, failedUpload, new
int[] { LIST_IDENTIFIER, LIST_FILENAME, LIST_SIZE, LIST_MIME_TYPE,
LIST_PROGRESS, LIST_REASON, LIST_PERSISTENCE, LIST_KEY }));
} else {
-
failedContent.addChild(createRequestTable(pageMaker, failedUpload, new int[] {
LIST_FILENAME, LIST_SIZE, LIST_MIME_TYPE, LIST_PROGRESS, LIST_REASON,
LIST_PERSISTENCE, LIST_KEY }));
+
failedContent.addChild(createRequestTable(pageMaker, ctx, failedUpload, new
int[] { LIST_FILENAME, LIST_SIZE, LIST_MIME_TYPE, LIST_PROGRESS, LIST_REASON,
LIST_PERSISTENCE, LIST_KEY }));
}
}
@@ -560,9 +560,9 @@
HTMLNode failedInfobox =
contentNode.addChild(pageMaker.getInfobox("failed_requests", "Failed: Directory
Uploads (" + failedDirUpload.size() + ')'));
HTMLNode failedContent =
pageMaker.getContentNode(failedInfobox);
if (advancedEnabled) {
-
failedContent.addChild(createRequestTable(pageMaker, failedDirUpload, new int[]
{ LIST_IDENTIFIER, LIST_FILES, LIST_TOTAL_SIZE, LIST_PROGRESS, LIST_REASON,
LIST_PERSISTENCE, LIST_KEY }));
+
failedContent.addChild(createRequestTable(pageMaker, ctx, failedDirUpload, new
int[] { LIST_IDENTIFIER, LIST_FILES, LIST_TOTAL_SIZE, LIST_PROGRESS,
LIST_REASON, LIST_PERSISTENCE, LIST_KEY }));
} else {
-
failedContent.addChild(createRequestTable(pageMaker, failedDirUpload, new int[]
{ LIST_FILES, LIST_TOTAL_SIZE, LIST_PROGRESS, LIST_REASON, LIST_PERSISTENCE,
LIST_KEY }));
+
failedContent.addChild(createRequestTable(pageMaker, ctx, failedDirUpload, new
int[] { LIST_FILES, LIST_TOTAL_SIZE, LIST_PROGRESS, LIST_REASON,
LIST_PERSISTENCE, LIST_KEY }));
}
}
@@ -571,9 +571,9 @@
HTMLNode uncompletedInfobox =
contentNode.addChild(pageMaker.getInfobox("requests_in_progress", "In Progress:
Downloads (" + uncompletedDownload.size() + ')'));
HTMLNode uncompletedContent =
pageMaker.getContentNode(uncompletedInfobox);
if (advancedEnabled) {
-
uncompletedContent.addChild(createRequestTable(pageMaker, uncompletedDownload,
new int[] { LIST_IDENTIFIER, LIST_PRIORITY, LIST_SIZE, LIST_MIME_TYPE,
LIST_PROGRESS, LIST_PERSISTENCE, LIST_FILENAME, LIST_KEY }));
+
uncompletedContent.addChild(createRequestTable(pageMaker, ctx,
uncompletedDownload, new int[] { LIST_IDENTIFIER, LIST_PRIORITY, LIST_SIZE,
LIST_MIME_TYPE, LIST_PROGRESS, LIST_PERSISTENCE, LIST_FILENAME, LIST_KEY }));
} else {
-
uncompletedContent.addChild(createRequestTable(pageMaker, uncompletedDownload,
new int[] { LIST_FILENAME, LIST_SIZE, LIST_MIME_TYPE, LIST_PROGRESS,
LIST_PERSISTENCE, LIST_KEY }));
+
uncompletedContent.addChild(createRequestTable(pageMaker, ctx,
uncompletedDownload, new int[] { LIST_FILENAME, LIST_SIZE, LIST_MIME_TYPE,
LIST_PROGRESS, LIST_PERSISTENCE, LIST_KEY }));
}
}
@@ -582,9 +582,9 @@
HTMLNode uncompletedInfobox =
contentNode.addChild(pageMaker.getInfobox("requests_in_progress", "In Progress:
Uploads (" + uncompletedUpload.size() + ')'));
HTMLNode uncompletedContent =
pageMaker.getContentNode(uncompletedInfobox);
if (advancedEnabled) {
-
uncompletedContent.addChild(createRequestTable(pageMaker, uncompletedUpload,
new int[] { LIST_IDENTIFIER, LIST_PRIORITY, LIST_SIZE, LIST_MIME_TYPE,
LIST_PROGRESS, LIST_PERSISTENCE, LIST_FILENAME, LIST_KEY }));
+
uncompletedContent.addChild(createRequestTable(pageMaker, ctx,
uncompletedUpload, new int[] { LIST_IDENTIFIER, LIST_PRIORITY, LIST_SIZE,
LIST_MIME_TYPE, LIST_PROGRESS, LIST_PERSISTENCE, LIST_FILENAME, LIST_KEY }));
} else {
-
uncompletedContent.addChild(createRequestTable(pageMaker, uncompletedUpload,
new int[] { LIST_FILENAME, LIST_SIZE, LIST_MIME_TYPE, LIST_PROGRESS,
LIST_PERSISTENCE, LIST_KEY }));
+
uncompletedContent.addChild(createRequestTable(pageMaker, ctx,
uncompletedUpload, new int[] { LIST_FILENAME, LIST_SIZE, LIST_MIME_TYPE,
LIST_PROGRESS, LIST_PERSISTENCE, LIST_KEY }));
}
}
@@ -593,9 +593,9 @@
HTMLNode uncompletedInfobox =
contentNode.addChild(pageMaker.getInfobox("requests_in_progress", "In Progress:
DirUploads (" + uncompletedDirUpload.size() + ')'));
HTMLNode uncompletedContent =
pageMaker.getContentNode(uncompletedInfobox);
if (advancedEnabled) {
-
uncompletedContent.addChild(createRequestTable(pageMaker, uncompletedDirUpload,
new int[] { LIST_IDENTIFIER, LIST_FILES, LIST_PRIORITY, LIST_TOTAL_SIZE,
LIST_PROGRESS, LIST_PERSISTENCE, LIST_KEY }));
+
uncompletedContent.addChild(createRequestTable(pageMaker, ctx,
uncompletedDirUpload, new int[] { LIST_IDENTIFIER, LIST_FILES, LIST_PRIORITY,
LIST_TOTAL_SIZE, LIST_PROGRESS, LIST_PERSISTENCE, LIST_KEY }));
} else {
-
uncompletedContent.addChild(createRequestTable(pageMaker, uncompletedDirUpload,
new int[] { LIST_FILES, LIST_TOTAL_SIZE, LIST_PROGRESS, LIST_PERSISTENCE,
LIST_KEY }));
+
uncompletedContent.addChild(createRequestTable(pageMaker, ctx,
uncompletedDirUpload, new int[] { LIST_FILES, LIST_TOTAL_SIZE, LIST_PROGRESS,
LIST_PERSISTENCE, LIST_KEY }));
}
}
@@ -670,10 +670,9 @@
return filenameCell;
}
- private HTMLNode createPriorityCell(PageMaker pageMaker, String
identifier, short priorityClass) {
+ private HTMLNode createPriorityCell(PageMaker pageMaker, String
identifier, short priorityClass, ToadletContext ctx) {
HTMLNode priorityCell = new HTMLNode("td", "class",
"request-priority nowrap");
- HTMLNode priorityForm = priorityCell.addChild("form", new
String[] { "action", "method", "enctype", "encoding" }, new String[] {
"/queue/", "post", "UTF-8", "multipart/form-data" });
-
priorityForm.addChild(pageMaker.createFormPasswordInput(core.formPassword));
+ HTMLNode priorityForm = ctx.addFormChild(priorityCell,
"/queue/", "queueChangePriorityCell");
priorityForm.addChild("input", new String[] { "type", "name",
"value" }, new String[] { "hidden", "identifier", identifier });
HTMLNode prioritySelect = priorityForm.addChild("select",
"name", "priority");
for (int p = 0; p < RequestStarter.NUMBER_OF_PRIORITY_CLASSES;
p++) {
@@ -687,18 +686,16 @@
return priorityCell;
}
- private HTMLNode createDeleteCell(PageMaker pageMaker, String
identifier, ClientRequest clientRequest) {
+ private HTMLNode createDeleteCell(PageMaker pageMaker, String
identifier, ClientRequest clientRequest, ToadletContext ctx) {
HTMLNode deleteNode = new HTMLNode("td", "class",
"request-delete");
- HTMLNode deleteForm = deleteNode.addChild("form", new String[]
{ "action", "method", "enctype", "encoding" }, new String[] { "/queue/",
"post", "UTF-8", "multipart/form-data" });
-
deleteForm.addChild(pageMaker.createFormPasswordInput(core.formPassword));
+ HTMLNode deleteForm = ctx.addFormChild(deleteNode, "/queue/",
"queueDeleteForm");
deleteForm.addChild("input", new String[] { "type", "name",
"value" }, new String[] { "hidden", "identifier", identifier });
deleteForm.addChild("input", new String[] { "type", "name",
"value" }, new String[] { "submit", "remove_request", "Delete" });
// If it's failed, offer to restart it
if(clientRequest.hasFinished() && !clientRequest.hasSucceeded()
&& clientRequest.canRestart()) {
- HTMLNode retryForm = deleteNode.addChild("form", new
String[] { "action", "method", "enctype", "encoding" }, new String[] {
"/queue/", "post", "UTF-8", "multipart/form-data" });
-
retryForm.addChild(pageMaker.createFormPasswordInput(core.formPassword));
+ HTMLNode retryForm = ctx.addFormChild(deleteNode,
"/queue/", "queueRestartForm");
retryForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "hidden", "identifier", identifier });
retryForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "submit", "restart_request", "Retry" });
}
@@ -706,10 +703,9 @@
return deleteNode;
}
- private HTMLNode createPanicBox(PageMaker pageMaker) {
+ private HTMLNode createPanicBox(PageMaker pageMaker, ToadletContext
ctx) {
HTMLNode panicBox = pageMaker.getInfobox("infobox-alert",
"Panic Button");
- HTMLNode panicForm =
pageMaker.getContentNode(panicBox).addChild("form", new String[] { "action",
"method" }, new String[] { "/queue/", "post" });
-
panicForm.addChild(pageMaker.createFormPasswordInput(core.formPassword));
+ HTMLNode panicForm =
ctx.addFormChild(pageMaker.getContentNode(panicBox), "/queue/",
"queuePanicForm");
panicForm.addChild("input", new String[] { "type", "name",
"value" }, new String[] { "submit", "remove_AllRequests", "Delete everything
without confirmation!" });
return panicBox;
}
@@ -772,12 +768,11 @@
return keyCell;
}
- private HTMLNode createInsertBox(PageMaker pageMaker) {
+ private HTMLNode createInsertBox(PageMaker pageMaker, ToadletContext
ctx) {
/* the insert file box */
HTMLNode insertBox = pageMaker.getInfobox("Insert File");
HTMLNode insertContent = pageMaker.getContentNode(insertBox);
- HTMLNode insertForm = insertContent.addChild("form", new
String[] { "action", "method", "enctype", "encoding" }, new String[] {
"/queue/", "post", "UTF-8", "multipart/form-data" });
-
insertForm.addChild(pageMaker.createFormPasswordInput(core.formPassword));
+ HTMLNode insertForm = ctx.addFormChild(insertContent,
"/queue/", "queueInsertForm");
insertForm.addChild("#", "Insert as: ");
insertForm.addChild("input", new String[] { "type", "name",
"value", "checked" }, new String[] { "radio", "keytype", "chk", "checked" });
insertForm.addChild("#", " CHK \u00a0 ");
@@ -797,7 +792,7 @@
return insertBox;
}
- private HTMLNode createRequestTable(PageMaker pageMaker, List requests,
int[] columns) {
+ private HTMLNode createRequestTable(PageMaker pageMaker, ToadletContext
ctx, List requests, int[] columns) {
HTMLNode table = new HTMLNode("table", "class", "requests");
HTMLNode headerRow = table.addChild("tr", "class",
"table-header");
headerRow.addChild("th");
@@ -833,7 +828,7 @@
ClientRequest clientRequest = (ClientRequest)
requestItems.next();
HTMLNode requestRow = table.addChild("tr", "class",
"priority" + clientRequest.getPriority());
- requestRow.addChild(createDeleteCell(pageMaker,
clientRequest.getIdentifier(), clientRequest));
+ requestRow.addChild(createDeleteCell(pageMaker,
clientRequest.getIdentifier(), clientRequest, ctx));
for (int columnIndex = 0, columnCount = columns.length;
columnIndex < columnCount; columnIndex++) {
int column = columns[columnIndex];
if (column == LIST_IDENTIFIER) {
@@ -875,7 +870,7 @@
requestRow.addChild(createFilenameCell(((ClientPut)
clientRequest).getOrigFilename()));
}
} else if (column == LIST_PRIORITY) {
-
requestRow.addChild(createPriorityCell(pageMaker,
clientRequest.getIdentifier(), clientRequest.getPriority()));
+
requestRow.addChild(createPriorityCell(pageMaker,
clientRequest.getIdentifier(), clientRequest.getPriority(), ctx));
} else if (column == LIST_FILES) {
requestRow.addChild(createNumberCell(((ClientPutDir)
clientRequest).getNumberOfFiles()));
} else if (column == LIST_TOTAL_SIZE) {
Modified: trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java
2006-12-04 16:13:20 UTC (rev 11224)
+++ trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java
2006-12-04 16:15:14 UTC (rev 11225)
@@ -58,6 +58,7 @@
private boolean advancedDarknetEnabled;
private boolean fProxyJavascriptEnabled;
private final PageMaker pageMaker;
+ private final NodeClientCore core;
static boolean isPanicButtonToBeShown;
static final int DEFAULT_FPROXY_PORT = 8888;
@@ -188,6 +189,7 @@
*/
public SimpleToadletServer(SubConfig fproxyConfig, NodeClientCore core)
throws IOException, InvalidConfigValueException {
+ this.core = core;
int configItemOrder = 0;
fproxyConfig.register("enabled", true, configItemOrder++, true,
true, "Enable FProxy?", "Whether to enable FProxy and related HTTP services",
@@ -287,7 +289,7 @@
}
}
- public SimpleToadletServer(int i, String newbindTo, String
allowedHosts, BucketFactory bf, String cssName) throws IOException {
+ public SimpleToadletServer(int i, String newbindTo, String
allowedHosts, BucketFactory bf, String cssName, NodeClientCore core) throws
IOException {
this.port = i;
this.bindTo = newbindTo;
this.allowedHosts = allowedHosts;
@@ -296,6 +298,7 @@
toadlets = new LinkedList();
this.cssName = cssName;
pageMaker = new PageMaker(cssName);
+ this.core = core;
}
public void start() {
@@ -342,7 +345,7 @@
Logger.globalSetThreshold(Logger.MINOR);
Logger.globalAddHook(logger);
logger.start();
- SimpleToadletServer server = new SimpleToadletServer(1111,
"127.0.0.1", "127.0.0.1", new TempBucketFactory(new FilenameGenerator(new
DummyRandomSource(), true, new File("temp-test"), "test-temp-")), "aqua");
+ SimpleToadletServer server = new SimpleToadletServer(1111,
"127.0.0.1", "127.0.0.1", new TempBucketFactory(new FilenameGenerator(new
DummyRandomSource(), true, new File("temp-test"), "test-temp-")), "aqua", null);
server.register(new TrivialToadlet(null), "", true);
server.start();
System.out.println("Bound to port 1111.");
@@ -423,4 +426,8 @@
public synchronized void enableFProxyJavascript(boolean b){
fProxyJavascriptEnabled = b;
}
+
+ public String getFormPassword() {
+ return core.formPassword;
+ }
}
Modified: trunk/freenet/src/freenet/clients/http/Spider.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/Spider.java 2006-12-04 16:13:20 UTC
(rev 11224)
+++ trunk/freenet/src/freenet/clients/http/Spider.java 2006-12-04 16:15:14 UTC
(rev 11225)
@@ -312,7 +312,7 @@
Set visited = new HashSet(visitedURIs);
Set failed = new HashSet(failedURIs);
contentNode.addChild(createNavbar(pageMaker,
runningFetches.size(), queued.size(), visited.size(), failed.size()));
- contentNode.addChild(createAddBox(pageMaker));
+ contentNode.addChild(createAddBox(pageMaker,
context));
contentNode.addChild(createList(pageMaker,
"Running Fetches", "running", runningFetches.keySet(), maxShownURIs));
contentNode.addChild(createList(pageMaker,
"Queued URIs", "queued", queued, maxShownURIs));
contentNode.addChild(createList(pageMaker,
"Visited URIs", "visited", visited, maxShownURIs));
@@ -385,7 +385,7 @@
return backbox;
}
- private HTMLNode createAddBox(PageMaker pageMaker) {
+ private HTMLNode createAddBox(PageMaker pageMaker, ToadletContext ctx) {
HTMLNode addBox = pageMaker.getInfobox("Add a URI");
HTMLNode formNode =
pageMaker.getContentNode(addBox).addChild("form", new String[] { "action",
"method" }, new String[] { "", "get" });
formNode.addChild("input", new String[] { "type", "name",
"value" }, new String[] { "hidden", "action", "add" });
Modified: trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java
2006-12-04 16:13:20 UTC (rev 11224)
+++ trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java
2006-12-04 16:15:14 UTC (rev 11225)
@@ -109,8 +109,7 @@
// Generate a Thread-Dump
if(node.isUsingWrapper()){
HTMLNode infobox =
contentNode.addChild(ctx.getPageMaker().getInfobox("Request a Thread Dump to be
generated"));
- HTMLNode threadDumpForm =
ctx.getPageMaker().getContentNode(infobox).addChild("form", new String[] {
"action", "method" }, new String[] { "/", "POST" });
- threadDumpForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "hidden", "formPassword", core.formPassword
});
+ HTMLNode threadDumpForm =
ctx.addFormChild(ctx.getPageMaker().getContentNode(infobox), "/",
"threadDumpForm");
threadDumpForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "submit", "getThreadDump", "Generate a Thread
Dump" });
}
Modified: trunk/freenet/src/freenet/clients/http/ToadletContainer.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/ToadletContainer.java
2006-12-04 16:13:20 UTC (rev 11224)
+++ trunk/freenet/src/freenet/clients/http/ToadletContainer.java
2006-12-04 16:15:14 UTC (rev 11225)
@@ -24,4 +24,9 @@
* Get the name of the theme to be used by all the Toadlets
*/
public String getCSSName();
+
+ /**
+ * Get the form password
+ */
+ public String getFormPassword();
}
Modified: trunk/freenet/src/freenet/clients/http/ToadletContext.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/ToadletContext.java 2006-12-04
16:13:20 UTC (rev 11224)
+++ trunk/freenet/src/freenet/clients/http/ToadletContext.java 2006-12-04
16:15:14 UTC (rev 11225)
@@ -2,6 +2,7 @@
import java.io.IOException;
+import freenet.support.HTMLNode;
import freenet.support.MultiValueTable;
import freenet.support.io.Bucket;
import freenet.support.io.BucketFactory;
@@ -52,5 +53,15 @@
BucketFactory getBucketFactory();
MultiValueTable getHeaders();
+
+ /**
+ * Add a form node to an HTMLNode under construction. This will have
the correct enctype and
+ * formPassword set already, so all the caller needs to do is add its
specific fields.
+ * @param parentNode The parent HTMLNode.
+ * @param target Where the form should be POSTed to.
+ * @param id HTML name for the form for stylesheet/script access. Will
be added as both id and name.
+ * @return The form HTMLNode.
+ */
+ HTMLNode addFormChild(HTMLNode parentNode, String target, String id);
}
Modified: trunk/freenet/src/freenet/clients/http/ToadletContextImpl.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/ToadletContextImpl.java
2006-12-04 16:13:20 UTC (rev 11224)
+++ trunk/freenet/src/freenet/clients/http/ToadletContextImpl.java
2006-12-04 16:15:14 UTC (rev 11225)
@@ -13,7 +13,9 @@
import java.util.Enumeration;
import java.util.TimeZone;
+import freenet.node.NodeClientCore;
import freenet.support.HTMLEncoder;
+import freenet.support.HTMLNode;
import freenet.support.Logger;
import freenet.support.MultiValueTable;
import freenet.support.URIPreEncoder;
@@ -36,6 +38,7 @@
private final OutputStream sockOutputStream;
private final PageMaker pagemaker;
private final BucketFactory bf;
+ private final ToadletContainer container;
/** Is the context closed? If so, don't allow any more writes. This is
because there
* may be later requests.
@@ -43,12 +46,13 @@
private boolean closed;
private boolean shouldDisconnect;
- public ToadletContextImpl(Socket sock, MultiValueTable headers, String
CSSName, BucketFactory bf, PageMaker pageMaker) throws IOException {
+ public ToadletContextImpl(Socket sock, MultiValueTable headers, String
CSSName, BucketFactory bf, PageMaker pageMaker, ToadletContainer container)
throws IOException {
this.headers = headers;
this.closed = false;
sockOutputStream = sock.getOutputStream();
this.bf = bf;
this.pagemaker = pageMaker;
+ this.container = container;
}
private void close() {
@@ -238,7 +242,7 @@
boolean shouldDisconnect =
shouldDisconnectAfterHandled(split[2].equals("HTTP/1.0"), headers);
- ToadletContextImpl ctx = new
ToadletContextImpl(sock, headers, container.getCSSName(), bf, pageMaker);
+ ToadletContextImpl ctx = new
ToadletContextImpl(sock, headers, container.getCSSName(), bf, pageMaker,
container);
ctx.shouldDisconnect = shouldDisconnect;
/*
@@ -380,4 +384,14 @@
public BucketFactory getBucketFactory() {
return bf;
}
+
+ public HTMLNode addFormChild(HTMLNode parentNode, String target, String
name) {
+ HTMLNode formNode =
+ parentNode.addChild("form", new String[] { "action",
"method", "enctype", "id", "name", "accept-charset" },
+ new String[] { target, "post",
"multipart/form-data", name, name, "utf-8"} );
+ formNode.addChild("input", new String[] { "type", "name",
"value" },
+ new String[] { "hidden", "formPassword",
container.getFormPassword() });
+
+ return formNode;
+ }
}
Modified: trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java 2006-12-04
16:13:20 UTC (rev 11224)
+++ trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java 2006-12-04
16:15:14 UTC (rev 11225)
@@ -105,10 +105,9 @@
HTMLNode infobox =
contentNode.addChild(ctx.getPageMaker().getInfobox("infobox-query", "Node
Update"));
HTMLNode content =
ctx.getPageMaker().getContentNode(infobox);
content.addChild("p").addChild("#", "Are you sure you
wish to update your Freenet node?");
- HTMLNode updateForm =
content.addChild("p").addChild("form", new String[] { "action", "method" }, new
String[] { "/", "post" });
+ HTMLNode updateForm = ctx.addFormChild(content, "/",
"updateConfirmForm");
updateForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "submit", "cancel", "Cancel" });
updateForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "submit", "updateconfirm", "Update" });
- updateForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "hidden", "formPassword", core.formPassword
});
writeReply(ctx, 200, "text/html", "OK",
pageNode.generate());
return;
}else if(request.isPartSet("getThreadDump")) {
@@ -247,8 +246,7 @@
HTMLNode infobox =
contentNode.addChild(ctx.getPageMaker().getInfobox("infobox-query", "Frost
Instant Note insert"));
HTMLNode content =
ctx.getPageMaker().getContentNode(infobox);
content.addChild("p").addChild("#", "Do you
want to insert the following Frost message?");
- HTMLNode postForm =
content.addChild("p").addChild("form", new String[] { "action", "method",
"enctype", "encoding" }, new String[] { "/", "post", "UTF-8",
"multipart/form-data" });
- postForm.addChild("input", new String[] {
"type", "name", "value" }, new String[] { "hidden", "formPassword",
core.formPassword });
+ HTMLNode postForm =
ctx.addFormChild(content.addChild("p"), "/", "finConfirmForm");
HTMLNode table = postForm.addChild("table",
"align", "center");
finInputRow(table, "boardname", "Target Board",
boardName);
@@ -428,12 +426,11 @@
HTMLNode pageNode = ctx.getPageMaker().getPageNode("Add
a Bookmark");
HTMLNode contentNode =
ctx.getPageMaker().getContentNode(pageNode);
HTMLNode infobox =
contentNode.addChild(ctx.getPageMaker().getInfobox("Confirm Bookmark
Addition"));
- HTMLNode addForm =
ctx.getPageMaker().getContentNode(infobox).addChild("form", new String[] {
"action", "method" }, new String[] { "/", "post" });
+ HTMLNode addForm =
ctx.addFormChild(ctx.getPageMaker().getContentNode(infobox), "/",
"bookmarkAddForm");
addForm.addChild("#", "Please confirm that you want to
add the key " + request.getParam("newbookmark") + " to your bookmarks and enter
the description that you would prefer:");
addForm.addChild("br");
addForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "hidden", "key",
request.getParam("newbookmark") });
addForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "text", "name", request.getParam("desc") });
- addForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "hidden", "formPassword", core.formPassword
});
addForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "submit", "addbookmark", "Add bookmark" });
this.writeReply(ctx, 200, "text/html", "OK",
pageNode.generate());
return;
@@ -441,14 +438,13 @@
HTMLNode pageNode =
ctx.getPageMaker().getPageNode("Link to external resources");
HTMLNode contentNode =
ctx.getPageMaker().getContentNode(pageNode);
HTMLNode warnbox =
contentNode.addChild(ctx.getPageMaker().getInfobox("infobox-warning", "External
link"));
- HTMLNode externalLinkForm =
ctx.getPageMaker().getContentNode(warnbox).addChild("form", new String[] {
"action", "method" }, new String[] { "/", "post" });
+ HTMLNode externalLinkForm =
ctx.addFormChild(ctx.getPageMaker().getContentNode(warnbox), "/",
"confirmExternalLinkForm");
// FIXME: has
request.getParam(GenericReadFilterCallback.magicHTTPEscapeString) been
sanityzed ?
final String target =
request.getParam(GenericReadFilterCallback.magicHTTPEscapeString);
externalLinkForm.addChild("#", "Please confirm that you
want to go to " + target + ". WARNING: You are leaving FREENET! Clicking on
this link WILL seriously jeopardize your anonymity!. It is strongly recommended
not to do so!");
externalLinkForm.addChild("br");
externalLinkForm.addChild("input", new String[] {
"type", "name", "value" }, new String[] { "hidden",
GenericReadFilterCallback.magicHTTPEscapeString, target });
- externalLinkForm.addChild("input", new String[] {
"type", "name", "value" }, new String[] { "hidden", "formPassword",
core.formPassword });
externalLinkForm.addChild("input", new String[] {
"type", "name", "value" }, new String[] { "submit", "cancel", "Cancel" });
externalLinkForm.addChild("input", new String[] {
"type", "name", "value" }, new String[] { "submit", "Go", "Go to the specified
link" });
this.writeReply(ctx, 200, "text/html", "OK",
pageNode.generate());
@@ -463,7 +459,7 @@
if (!e.hasMoreElements()) {
infoboxContent.addChild("#", "You currently do
not have any bookmarks defined.");
} else {
- HTMLNode manageForm =
infoboxContent.addChild("form", new String[] { "action", "method" }, new
String[] { ".", "post" });
+ HTMLNode manageForm =
ctx.addFormChild(infoboxContent, ".", "manageBookmarksForm");
HTMLNode bookmarkList =
manageForm.addChild("ul", "id", "bookmarks");
while (e.hasMoreElements()) {
Bookmark b = (Bookmark)e.nextElement();
@@ -473,10 +469,9 @@
bookmark.addChild("input", new String[]
{ "type", "name", "value", "style" }, new String[] { "submit", "edit_" +
b.hashCode(), "Edit", "float: right;" });
bookmark.addChild("a", "href", '/' +
b.getKey(), b.getDesc());
}
- manageForm.addChild("input", new String[] {
"type", "name", "value" }, new String[] { "hidden", "formPassword",
core.formPassword });
manageForm.addChild("input", new String[] {
"type", "name", "value" }, new String[] { "hidden", "managebookmarks", "yes" });
}
-
contentNode.addChild(createBookmarkEditForm(ctx.getPageMaker(), MODE_ADD, null,
"", ""));
+ contentNode.addChild(createBookmarkEditForm(ctx,
MODE_ADD, null, "", ""));
this.writeReply(ctx, 200, "text/html", "OK",
pageNode.generate());
return;
}else if (request.isParameterSet("exit")) {
@@ -485,8 +480,7 @@
HTMLNode infobox =
contentNode.addChild(ctx.getPageMaker().getInfobox("infobox-query", "Node
Shutdown"));
HTMLNode content =
ctx.getPageMaker().getContentNode(infobox);
content.addChild("p").addChild("#", "Are you sure you
wish to shut down your Freenet node?");
- HTMLNode shutdownForm =
content.addChild("p").addChild("form", new String[] { "action", "method" }, new
String[] { "/", "POST" });
- shutdownForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "hidden", "formPassword", core.formPassword
});
+ HTMLNode shutdownForm =
ctx.addFormChild(content.addChild("p"), "/", "confirmShutdownForm");
shutdownForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "submit", "cancel", "Cancel" });
shutdownForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "submit", "shutdownconfirm", "Shut down" });
writeReply(ctx, 200, "text/html", "OK",
pageNode.generate());
@@ -497,8 +491,7 @@
HTMLNode infobox =
contentNode.addChild(ctx.getPageMaker().getInfobox("infobox-query", "Node
Restart"));
HTMLNode content =
ctx.getPageMaker().getContentNode(infobox);
content.addChild("p").addChild("#", "Are you sure you
want to restart your Freenet node?");
- HTMLNode restartForm =
content.addChild("p").addChild("form", new String[] { "action", "method" }, new
String[] { "/", "POST" });
- restartForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "hidden", "formPassword", core.formPassword
});
+ HTMLNode restartForm =
ctx.addFormChild(content.addChild("p"), "/", "confirmRestartForm");
restartForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "submit", "cancel", "Cancel" });
restartForm.addChild("input", new String[] { "type",
"name", "value" }, new String[] { "submit", "restartconfirm", "Restart" });
writeReply(ctx, 200, "text/html", "OK",
pageNode.generate());
@@ -600,15 +593,16 @@
ctx.getPageMaker().getContentNode(errorBox).addChild("#", message);
}
- contentNode.addChild(createBookmarkEditForm(ctx.getPageMaker(),
mode, b, origKey, origDesc));
+ contentNode.addChild(createBookmarkEditForm(ctx, mode, b,
origKey, origDesc));
this.writeReply(ctx, 200, "text/html", "OK",
pageNode.generate());
}
- private HTMLNode createBookmarkEditForm(PageMaker pageMaker, int mode,
Bookmark b, String origKey, String origDesc) {
+ private HTMLNode createBookmarkEditForm(ToadletContext ctx, int mode,
Bookmark b, String origKey, String origDesc) {
+ PageMaker pageMaker = ctx.getPageMaker();
HTMLNode infobox = pageMaker.getInfobox("infobox-normal
bookmark-edit", (mode == MODE_ADD) ? "New Bookmark" : "Update Bookmark");
HTMLNode content = pageMaker.getContentNode(infobox);
- HTMLNode editForm = content.addChild("form", new String[] {
"action", "method" }, new String[] { ".", "post" });
+ HTMLNode editForm = ctx.addFormChild(content, ".", mode ==
MODE_ADD ? "addBookmarkForm" : "editBookmarkForm");
editForm.addChild("#", "Key: ");
editForm.addChild("input", new String[] { "type", "name",
"value" }, new String[] { "text", "key", origKey });
editForm.addChild("br");
@@ -622,7 +616,6 @@
}
editForm.addChild("input", new String[] { "type", "value",
"class" }, new String[] { "submit", "Cancel", "cancel" });
editForm.addChild("input", new String[] { "type", "name",
"value" }, new String[] { "hidden", "managebookmarks", "yes" });
- editForm.addChild("input", new String[] { "type", "name",
"value" }, new String[] { "hidden", "formPassword", core.formPassword });
return infobox;
}