Author: nextgens Date: 2006-05-14 15:47:11 +0000 (Sun, 14 May 2006) New Revision: 8702
Removed: trunk/freenet/src/freenet/clients/http/BlackOpsToadlet.java Modified: trunk/freenet/src/freenet/clients/http/FproxyToadlet.java trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java trunk/freenet/src/freenet/node/Version.java Log: 707: NIMs support I've made up my mind on how it should be done : here is the result. SIMPLER as possible :p 1) We don't do MIME type detection based on filenames (unreliable, not worthy) we assume text/plain if not specified 2) We don't allow any insert bigger than 1MB for now (NIMs inserting is blocking would be "long") A wiki page has been created : http://wiki.freenetproject.org/FreenetNIMs Deleted: trunk/freenet/src/freenet/clients/http/BlackOpsToadlet.java =================================================================== --- trunk/freenet/src/freenet/clients/http/BlackOpsToadlet.java 2006-05-14 12:29:36 UTC (rev 8701) +++ trunk/freenet/src/freenet/clients/http/BlackOpsToadlet.java 2006-05-14 15:47:11 UTC (rev 8702) @@ -1,95 +0,0 @@ -package freenet.clients.http; - -import java.io.IOException; -import java.net.URI; - -import freenet.client.ClientMetadata; -import freenet.client.HighLevelSimpleClient; -import freenet.client.InsertBlock; -import freenet.client.InserterException; -import freenet.config.SubConfig; -import freenet.keys.FreenetURI; -import freenet.node.Node; -import freenet.support.Bucket; -import freenet.support.MultiValueTable; - - -public class BlackOpsToadlet extends Toadlet { - Node node; - SubConfig config; - - BlackOpsToadlet(HighLevelSimpleClient client, Node n) { - super(client); - this.node = n; - } - - public void handlePost(URI uri, Bucket data, ToadletContext ctx) throws ToadletContextClosedException, IOException { - - HTTPRequest request = new HTTPRequest(uri,data,ctx); - if(request==null) return; - - StringBuffer buf = new StringBuffer(); - - - FreenetURI key = new FreenetURI(request.getPartAsString("key",128)); - String type = request.getPartAsString("content-type",128); - if(type==null) type = "text/plain"; - ClientMetadata contentType = new ClientMetadata(type); - - Bucket bucket = request.getPart("filename"); - - InsertBlock block = new InsertBlock(bucket, contentType, key); - try { - ctx.getPageMaker().makeHead(buf, "Insertion"); - buf.append("<div class=\"infobox\">\n"); - key = this.insert(block, false); - buf.append("The key : <a href=\"/" + key.getKeyType() + "@" + key.getGuessableKey() + "\">" + - key.getKeyType() + "@" + key.getGuessableKey() +"</a> ("+bucket.getName()+") has been inserted successfully.<br>"); - } catch (InserterException e) { - - buf.append("Error: "+e.getMessage()+"<br>"); - if(e.uri != null) - buf.append("URI would have been: "+e.uri+"<br>"); - int mode = e.getMode(); - if(mode == InserterException.FATAL_ERRORS_IN_BLOCKS || mode == InserterException.TOO_MANY_RETRIES_IN_BLOCKS) { - buf.append("Splitfile-specific error:\n"+e.errorCodes.toVerboseString()+"<br>"); - } - } - - - buf.append("<br><a href=\"javascript:back()\" title=\"Back\">Back</a>\n"); - buf.append("<br><a href=\"/\" title=\"Node Homepage\">Homepage</a>\n"); - buf.append("</div>\n"); - - ctx.getPageMaker().makeTail(buf); - writeReply(ctx, 200, "text/html", "OK", buf.toString()); - request.freeParts(); - bucket.free(); - } - - public void handleGet(URI uri, ToadletContext ctx) throws ToadletContextClosedException, IOException { - StringBuffer buf = new StringBuffer(); - - ctx.getPageMaker().makeHead(buf, "Basic NIM form"); - - buf.append("<div><form action=\"/system/\" method=\"POST\" enctype=\"multipart/form-data\">"); - buf.append("key : <input type=\"text\" value=\"KSK at key\" ><br>"); - buf.append("metadata : <select name=\"content-type\">"); - buf.append("<option value=\"text/plain\">text/plain</option>"); - buf.append("<option value=\"text/html\">text/html</option>"); - buf.append("<option value=\"audio/mpeg\">MP3 music</option>"); - buf.append("<option value=\"application/octet-stream\">application/octet-stream</option>"); - buf.append("</select><br>"); - buf.append("file: <input type=\"file\" name=\"filename\" value=\"/path/to/file\"><br>"); - buf.append("<input type=\"submit\"><input type=\"reset\"><br>"); - buf.append("</form><div>"); - - ctx.getPageMaker().makeTail(buf); - - this.writeReply(ctx, 200, "text/html", "OK", buf.toString()); - } - - public String supportedMethods() { - return "GET, POST"; - } -} \ No newline at end of file Modified: trunk/freenet/src/freenet/clients/http/FproxyToadlet.java =================================================================== --- trunk/freenet/src/freenet/clients/http/FproxyToadlet.java 2006-05-14 12:29:36 UTC (rev 8701) +++ trunk/freenet/src/freenet/clients/http/FproxyToadlet.java 2006-05-14 15:47:11 UTC (rev 8702) @@ -327,10 +327,6 @@ QueueToadlet queueToadlet = new QueueToadlet(node.getFCPServer(), client); server.register(queueToadlet, "/queue/", true); - - BlackOpsToadlet servletoadlet = new BlackOpsToadlet(client, node); - server.register(servletoadlet, "/system/", true); - } catch (IOException ioe) { Logger.error(node,"Failed to start fproxy: "+ioe, ioe); Modified: trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java =================================================================== --- trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java 2006-05-14 12:29:36 UTC (rev 8701) +++ trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java 2006-05-14 15:47:11 UTC (rev 8702) @@ -6,8 +6,12 @@ import java.net.URISyntaxException; import java.util.Enumeration; +import freenet.client.ClientMetadata; import freenet.client.HighLevelSimpleClient; +import freenet.client.InsertBlock; +import freenet.client.InserterException; import freenet.config.SubConfig; +import freenet.keys.FreenetURI; import freenet.node.Node; import freenet.node.UserAlert; import freenet.node.Version; @@ -152,6 +156,41 @@ writeReply(ctx, 200, "text/html", "OK", buf.toString()); } } + }else if(request.isPartSet("key")&&request.isPartSet("filename")){ + + FreenetURI key = new FreenetURI(request.getPartAsString("key",128)); + String type = request.getPartAsString("content-type",128); + if(type==null) type = "text/plain"; + ClientMetadata contentType = new ClientMetadata(type); + + Bucket bucket = request.getPart("filename"); + + InsertBlock block = new InsertBlock(bucket, contentType, key); + try { + ctx.getPageMaker().makeHead(buf, "Insertion"); + buf.append("<div class=\"infobox\">\n"); + key = this.insert(block, false); + buf.append("The key : <a href=\"/" + key.getKeyType() + "@" + key.getGuessableKey() + "\">" + + key.getKeyType() + "@" + key.getGuessableKey() +"</a> has been inserted successfully.<br>"); + } catch (InserterException e) { + + buf.append("Error: "+e.getMessage()+"<br>"); + if(e.uri != null) + buf.append("URI would have been: "+e.uri+"<br>"); + int mode = e.getMode(); + if(mode == InserterException.FATAL_ERRORS_IN_BLOCKS || mode == InserterException.TOO_MANY_RETRIES_IN_BLOCKS) { + buf.append("Splitfile-specific error:\n"+e.errorCodes.toVerboseString()+"<br>"); + } + } + + buf.append("<br><a href=\"javascript:back()\" title=\"Back\">Back</a>\n"); + buf.append("<br><a href=\"/\" title=\"Node Homepage\">Homepage</a>\n"); + buf.append("</div>\n"); + + ctx.getPageMaker().makeTail(buf); + writeReply(ctx, 200, "text/html", "OK", buf.toString()); + request.freeParts(); + bucket.free(); }else { this.handleGet(uri, ctx); } Modified: trunk/freenet/src/freenet/node/Version.java =================================================================== --- trunk/freenet/src/freenet/node/Version.java 2006-05-14 12:29:36 UTC (rev 8701) +++ trunk/freenet/src/freenet/node/Version.java 2006-05-14 15:47:11 UTC (rev 8702) @@ -18,7 +18,7 @@ public static final String protocolVersion = "1.0"; /** The build number of the current revision */ - private static final int buildNumber = 707; + private static final int buildNumber = 708; /** Oldest build of Fred we will talk to */ private static final int lastGoodBuild = 591;
