Please see comments below.

On Saturday 28 March 2009 15:31:48 sashee at freenetproject.org wrote:
> Author: sashee
> Date: 2009-03-28 15:31:47 +0000 (Sat, 28 Mar 2009)
> New Revision: 26255
> 
> Modified:
>    trunk/freenet/src/freenet/clients/http/ConnectionsToadlet.java
>    trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties
> Log:
> Improved the peer adder module:
> -It is now possible to add multiple peers, instead of just 1. A result page 
will notify about the successes/failures
> -The 2000 byte limit for uploading peers via file is removed
> 
> Modified: trunk/freenet/src/freenet/clients/http/ConnectionsToadlet.java
> ===================================================================
> --- trunk/freenet/src/freenet/clients/http/ConnectionsToadlet.java    
2009-03-28 12:42:05 UTC (rev 26254)
> +++ trunk/freenet/src/freenet/clients/http/ConnectionsToadlet.java    
2009-03-28 15:31:47 UTC (rev 26255)
> @@ -145,6 +145,7 @@
>       protected final PeerManager peers;
>       protected boolean isReversed = false;
>       protected final DecimalFormat fix1 = new DecimalFormat("##0.0%");
> +     public enum PeerAdditionReturnCodes{ OK, WRONG_ENCODING, CANT_PARSE, 
INTERNAL_ERROR, INVALID_SIGNATURE, TRY_TO_ADD_SELF, ALREADY_IN_REFERENCE}
>       
>       @Override
>       public String supportedMethods() {
> @@ -511,7 +512,7 @@
>                       String reftext = request.getPartAsString("ref", 
> Integer.MAX_VALUE);
>                       reftext = reftext.trim();
>                       if (reftext.length() < 200) {
> -                             reftext = request.getPartAsString("reffile", 
> 2000);
> +                             reftext = request.getPartAsString("reffile", 
> Integer.MAX_VALUE);
>                               reftext = reftext.trim();
>                       }
>                       String privateComment = null;
> @@ -551,60 +552,47 @@
>                       ref = new StringBuilder(ref.toString().trim());
>  
>                       request.freeParts();
> -                     // we have a node reference in ref
> -                     SimpleFieldSet fs;
> -                     
> -                     try {
> -                             fs = new SimpleFieldSet(ref.toString(), false, 
> true);
> -                             if(!fs.getEndMarker().endsWith("End")) {
> -                                     sendErrorPage(ctx, 200, 
> l10n("failedToAddNodeTitle"),
> -                                                     
> L10n.getString("DarknetConnectionsToadlet.cantParseWrongEnding", new 
String[] { "end" }, new String[] { fs.getEndMarker() }));
> -                                     return;
> +
> +                     //Split the references string, because the peers are 
> added individually
> +                     String[] nodesToAdd=ref.toString().split("End");
> +                     //The peer's additions results
> +                     Map<PeerAdditionReturnCodes,Integer> results=new 
HashMap<PeerAdditionReturnCodes, Integer>();
> +                     for(int i=0;i<nodesToAdd.length;i++){
> +                             //We need to trim then concat 'End' to the 
> node's reference, this way 
we have a normal reference(the split() removes the 'End'-s!)
> +                             PeerAdditionReturnCodes 
result=addNewNode(nodesToAdd[i].trim().concat("\nEnd"), privateComment);
> +                             //Store the result
> +                             if(results.containsKey(result)==false){
> +                                     results.put(result, new Integer(0));
>                               }
> -                             fs.setEndMarker("End"); // It's always End ; 
> the regex above doesn't 
always grok this
> -                     } catch (IOException e) {
> -                             this.sendErrorPage(ctx, 200, 
> l10n("failedToAddNodeTitle"), 
> -                                             
> L10n.getString("DarknetConnectionsToadlet.cantParseTryAgain", new 
String[] { "error" }, new String[] { e.toString() }));
> -                             return;
> -                     } catch (Throwable t) {
> -                             this.sendErrorPage(ctx, 
> l10n("failedToAddNodeInternalErrorTitle"), 
l10n("failedToAddNodeInternalError"), t);
> -                             return;
> +                             results.put(result, results.get(result)+1);
>                       }
> -                     PeerNode pn;
> -                     try {
> -                             if(isOpennet()) {
> -                                     pn = node.createNewOpennetNode(fs);
> -                             } else {
> -                                     pn = node.createNewDarknetNode(fs);
> -                                     
> ((DarknetPeerNode)pn).setPrivateDarknetCommentNote(privateComment);
> +                     
> +                     HTMLNode pageNode = 
ctx.getPageMaker().getPageNode(l10n("reportOfNodeAddition"), ctx);
> +                     HTMLNode contentNode = 
> ctx.getPageMaker().getContentNode(pageNode);
> +                     
> +                     //We create a table to show the results
> +                     HTMLNode detailedStatusBox=new HTMLNode("table");
> +                     //Header of the table
> +                     detailedStatusBox.addChild(new 
> HTMLNode("tr")).addChildren(new 
HTMLNode[]{new HTMLNode("th",l10n("resultName")),new 
HTMLNode("th",l10n("numOfResults"))});
> +                     HTMLNode statusBoxTable=detailedStatusBox.addChild(new 
HTMLNode("tbody"));
> +                     //Iterate through the return codes
> +                     for(PeerAdditionReturnCodes 
> returnCode:PeerAdditionReturnCodes.values())
{
> +                             if(results.containsKey(returnCode)){
> +                                     //Add a <tr> and 2 <td> with the name 
> of the code and the number of 
occasions it happened. If the code is OK, we use green, red elsewhere.
> +                                     statusBoxTable.addChild(new 
HTMLNode("tr","style","color:"+(returnCode==PeerAdditionReturnCodes.OK?"green":"red"))).addChildren(new
 
HTMLNode[]{new 
HTMLNode("td",l10n("peerAdditionCode."+returnCode.toString())),new 
HTMLNode("td",results.get(returnCode).toString())});
>                               }
> -                     } catch (FSParseException e1) {
> -                             this.sendErrorPage(ctx, 200, 
> l10n("failedToAddNodeTitle"),
> -                                             
> L10n.getString("DarknetConnectionsToadlet.cantParseTryAgain", new 
String[] { "error" }, new String[] { e1.toString() }));
> -                             return;
> -                     } catch (PeerParseException e1) {
> -                             this.sendErrorPage(ctx, 200, 
> l10n("failedToAddNodeTitle"), 
> -                                             
> L10n.getString("DarknetConnectionsToadlet.cantParseTryAgain", new 
String[] { "error" }, new String[] { e1.toString() }));
> -                             return;
> -                     } catch (ReferenceSignatureVerificationException e1){
> -                             HTMLNode node = new HTMLNode("div");
> -                             node.addChild("#", 
L10n.getString("DarknetConnectionsToadlet.invalidSignature", new String[] 
{ "error" }, new String[] { e1.toString() }));
> -                             node.addChild("br");
> -                             this.sendErrorPage(ctx, 200, 
> l10n("failedToAddNodeTitle"), node);
> -                             return;
> -                     } catch (Throwable t) {
> -                             this.sendErrorPage(ctx, 
> l10n("failedToAddNodeInternalErrorTitle"), 
l10n("failedToAddNodeInternalError"), t);
> -                             return;
>                       }
> -                     if(Arrays.equals(pn.getIdentity(), 
> node.getDarknetIdentity())) {
> -                             this.sendErrorPage(ctx, 200, 
> l10n("failedToAddNodeTitle"), 
l10n("triedToAddSelf"));
> -                             return;
> -                     }
> -                     if(!this.node.addPeerConnection(pn)) {
> -                             this.sendErrorPage(ctx, 200, 
> l10n("failedToAddNodeTitle"), 
l10n("alreadyInReferences"));
> -                             return;
> -                     }
> +
> +                     HTMLNode infobox = 
contentNode.addChild(ctx.getPageMaker().getInfobox("infobox",l10n("reportOfNodeAddition")));
> +                     HTMLNode infoboxContent = 
> ctx.getPageMaker().getContentNode(infobox);
> +                     infoboxContent.addChild(detailedStatusBox);
> +                     infoboxContent.addChild("br");
> +                     infoboxContent.addChild("a", "href", ".", 
> l10n("returnToPrevPage"));
> +                     infoboxContent.addChild("br");
> +                     addHomepageLink(infoboxContent);
>                       
> +                     writeHTMLReply(ctx, 500, l10n("reportOfNodeAddition"), 
pageNode.generate());
> +                     
>                       MultiValueTable<String, String> headers = new 
> MultiValueTable<String, 
String>();
>                       headers.put("Location", defaultRedirectLocation());
>                       ctx.sendReplyHeaders(302, "Found", headers, null, 0);

This looks like you are sending the reply twice, this can cause bad bugs. 
Please fix it. Otherwise looks great, welcome aboard, this will help your SoC 
applications...

> Modified: trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties
> ===================================================================
> --- trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties 2009-03-28 
12:42:05 UTC (rev 26254)
> +++ trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties 2009-03-28 
15:31:47 UTC (rev 26255)
> @@ -168,7 +168,7 @@
>  ContentFilter.textPlainWriteAdvice=Plain text - not dangerous unless you 
include compromizing information
>  DarknetConnectionsToadlet.activityTitle=Current Activity
>  DarknetConnectionsToadlet.add=Add
> -DarknetConnectionsToadlet.addPeerTitle=Add another peer
> +DarknetConnectionsToadlet.addPeerTitle=Add another peers

"Add more peers" in english.

>  DarknetConnectionsToadlet.alreadyInReferences=We already have the given 
reference.
>  DarknetConnectionsToadlet.backedOff=Connected but backed off: These peers 
are connected but we're backed off from them, so the node is not routing 
requests to them.
>  DarknetConnectionsToadlet.backedOffShort=Backed off
> @@ -254,6 +254,17 @@
>  DarknetConnectionsToadlet.updateChangedPrivnotes=Update changed private 
notes
>  DarknetConnectionsToadlet.urlReference=OR enter the URL of the node 
reference here:
>  DarknetConnectionsToadlet.versionTitle=Version
> +DarknetConnectionsToadlet.reportOfNodeAddition=Report of node additions
> +DarknetConnectionsToadlet.returnToPrevPage=Return to previous page
> +DarknetConnectionsToadlet.peerAdditionCode.OK=Added successfully
> +DarknetConnectionsToadlet.peerAdditionCode.TRY_TO_ADD_SELF=Tried to add 
self
> +DarknetConnectionsToadlet.peerAdditionCode.WRONG_ENCODING=Wrong encoding
> +DarknetConnectionsToadlet.peerAdditionCode.CANT_PARSE=Can't parse
> +DarknetConnectionsToadlet.peerAdditionCode.INTERNAL_ERROR=Internal error
> +DarknetConnectionsToadlet.peerAdditionCode.INVALID_SIGNATURE=Invalid 
signature
> +DarknetConnectionsToadlet.peerAdditionCode.ALREADY_IN_REFERENCE=Already in 
reference
> +DarknetConnectionsToadlet.resultName=Name of result

Just "Result" would probably be better.

> +DarknetConnectionsToadlet.numOfResults=Number of results
>  ExtOldAgeUserAlert.extTooOld=Your freenet-ext.jar file seems to be 
outdated: we strongly advise you to update it using 
http://downloads.freenetproject.org/alpha/freenet-ext.jar.
>  ExtOldAgeUserAlert.extTooOldTitle=Freenet-ext too old
>  ExtOldAgeUserAlert.extTooOldShort=Your freenet-ext.jar is out of date. 
Please upgrade.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 835 bytes
Desc: This is a digitally signed message part.
URL: 
<https://emu.freenetproject.org/pipermail/devl/attachments/20090401/f61451a5/attachment.pgp>

Reply via email to