Is this safe by default? Are you planning to deal with UP&P based on this code 
too?

On Wednesday 30 May 2007 20:12, nextgens at freenetproject.org wrote:
> Author: nextgens
> Date: 2007-05-30 19:12:37 +0000 (Wed, 30 May 2007)
> New Revision: 13395
>
> Modified:
>    trunk/freenet/src/freenet/clients/http/FirstTimeWizardToadlet.java
>    trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties
> Log:
> New step for network configuration in the wizard ... I'm not proud of it:
> suggestions are welcome.
>
> Modified:
> trunk/freenet/src/freenet/clients/http/FirstTimeWizardToadlet.java
> =================================================================== ---
> trunk/freenet/src/freenet/clients/http/FirstTimeWizardToadlet.java    2007-05-
>29 22:24:23 UTC (rev 13394) +++
> trunk/freenet/src/freenet/clients/http/FirstTimeWizardToadlet.java    2007-05-
>30 19:12:37 UTC (rev 13395) @@ -4,7 +4,10 @@
>  package freenet.clients.http;
>
>  import java.io.IOException;
> +import java.net.InetAddress;
> +import java.net.NetworkInterface;
>  import java.net.URI;
> +import java.util.Enumeration;
>
>  import freenet.client.HighLevelSimpleClient;
>  import freenet.config.Config;
> @@ -45,7 +48,7 @@
>               int currentStep = request.getIntParam("step");
>
>               if(currentStep == 1) {
> -                     HTMLNode pageNode = 
> ctx.getPageMaker().getPageNode(l10n("step1Title"),
> ctx); +                       HTMLNode pageNode =
> ctx.getPageMaker().getPageNode(l10n("step1Title"), false, ctx); HTMLNode
> contentNode = ctx.getPageMaker().getContentNode(pageNode);
>
>                       HTMLNode languageInfobox = contentNode.addChild("div", 
> "class",
> "infobox infobox-normal"); @@ -70,7 +73,7 @@
>                       this.writeReply(ctx, 200, "text/html; charset=utf-8", 
> "OK",
> pageNode.generate()); return;
>               } else if(currentStep == 2) {
> -                     HTMLNode pageNode = 
> ctx.getPageMaker().getPageNode(l10n("step2Title"),
> ctx); +                       HTMLNode pageNode =
> ctx.getPageMaker().getPageNode(l10n("step2Title"), false, ctx); HTMLNode
> contentNode = ctx.getPageMaker().getContentNode(pageNode);
>
>                       HTMLNode bandwidthInfobox = contentNode.addChild("div", 
> "class",
> "infobox infobox-normal"); @@ -95,7 +98,7 @@
>                       this.writeReply(ctx, 200, "text/html; charset=utf-8", 
> "OK",
> pageNode.generate()); return;
>               } else if(currentStep == 3) {
> -                     HTMLNode pageNode = 
> ctx.getPageMaker().getPageNode(l10n("step3Title"),
> ctx); +                       HTMLNode pageNode =
> ctx.getPageMaker().getPageNode(l10n("step3Title"), false, ctx); HTMLNode
> contentNode = ctx.getPageMaker().getContentNode(pageNode);
>
>                       HTMLNode bandwidthInfobox = contentNode.addChild("div", 
> "class",
> "infobox infobox-normal"); @@ -121,17 +124,67 @@
>                       bandwidthForm.addChild("input", new String[] { "type", 
> "name", "value"
> }, new String[] { "submit", "cancel", L10n.getString("Toadlet.cancel")});
> this.writeReply(ctx, 200, "text/html; charset=utf-8", "OK",
> pageNode.generate()); return;
> +             } else if(currentStep == 4) {
> +                     HTMLNode pageNode = 
> ctx.getPageMaker().getPageNode(l10n("step4Title"),
> false, ctx); +                        HTMLNode contentNode =
> ctx.getPageMaker().getContentNode(pageNode); +
> +                     HTMLNode bandwidthInfobox = contentNode.addChild("div", 
> "class",
> "infobox infobox-normal"); +                  HTMLNode bandwidthnfoboxHeader =
> bandwidthInfobox.addChild("div", "class", "infobox-header"); +                
>         HTMLNode
> bandwidthInfoboxContent = bandwidthInfobox.addChild("div", "class",
> "infobox-content"); +
> +                     Enumeration interfaces = 
> NetworkInterface.getNetworkInterfaces();
> +                     HTMLNode bandwidthForm = 
> ctx.addFormChild(bandwidthInfoboxContent, ".",
> "networkForm"); +                     // We always want that... don't we ?
> +                     bandwidthForm.addChild("input", new String[] { "type", 
> "name",
> "value"}, new String[] { "hidden", "127.0.0.1", "true" }); +
> +                     short ifCount = 0;
> +                     HTMLNode ifList = new HTMLNode("div", "class", 
> "interface");
> +                     while(interfaces.hasMoreElements()) {
> +                             NetworkInterface currentInterface = 
> (NetworkInterface)
> interfaces.nextElement(); +                           if((currentInterface == 
> null) ||
> (currentInterface.isLoopback())) continue; +
> +                             Enumeration ipAddresses = 
> currentInterface.getInetAddresses();
> +                             while(ipAddresses.hasMoreElements()) {
> +                                     InetAddress ip = (InetAddress) 
> ipAddresses.nextElement();
> +                                     if(ip == null) continue;
> +                                     ifCount++;
> +                                     HTMLNode ipDiv = ifList.addChild("div", 
> "class", "ipAddress");
> +                                     ipDiv.addChild("#", 
> L10n.getString("FirstTimeWizardToadlet.iDoTrust",
> new String[] { "interface", "ip" }, new String[] {
> currentInterface.getName(), ip.getHostAddress() }));
> +                                     ipDiv.addChild("input", new String[] { 
> "type", "name", "value"}, new
> String[] { "radio", ip.getHostAddress(), "true" },
> L10n.getString("Toadlet.yes")); +                                     
> ipDiv.addChild("input", new String[]
> { "type", "name", "value", "checked"}, new String[] { "radio",
> ip.getHostAddress(), "false", "checked" }, L10n.getString("Toadlet.no"));
> +                             }
> +                     }
> +
> +                     if(ifCount > 0) {
> +                             bandwidthnfoboxHeader.addChild("#", 
> l10n("isNetworkTrusted"));
> +                             bandwidthInfoboxContent.addChild("#", 
> l10n("isNetworkTrustedLong"));
> +                             bandwidthForm.addChild(ifList);
> +                     } else {
> +                             bandwidthnfoboxHeader.addChild("#", 
> l10n("noNetworkIF"));
> +                             bandwidthInfoboxContent.addChild("#", 
> l10n("noNetworkIFLong"));
> +                     }
> +
> +                     bandwidthForm.addChild("input", new String[] { "type", 
> "name", "value"
> }, new String[] { "submit", "networkF",
> L10n.getString("Toadlet.clickHere")}); +                      
> bandwidthForm.addChild("input",
> new String[] { "type", "name", "value" }, new String[] { "submit",
> "cancel", L10n.getString("Toadlet.cancel")}); +                       
> this.writeReply(ctx, 200,
> "text/html; charset=utf-8", "OK", pageNode.generate()); +                     
> return;
>               }
>
> -             HTMLNode pageNode =
> ctx.getPageMaker().getPageNode(l10n("homepageTitle"), ctx); +         HTMLNode
> pageNode = ctx.getPageMaker().getPageNode(l10n("homepageTitle"), false,
> ctx); HTMLNode contentNode = ctx.getPageMaker().getContentNode(pageNode);
>
>               HTMLNode welcomeInfobox = contentNode.addChild("div", "class", 
> "infobox
> infobox-normal"); HTMLNode welcomeInfoboxHeader =
> welcomeInfobox.addChild("div", "class", "infobox-header"); HTMLNode
> welcomeInfoboxContent = welcomeInfobox.addChild("div", "class",
> "infobox-content"); welcomeInfoboxHeader.addChild("#",
> l10n("welcomeInfoboxTitle")); -               
> welcomeInfoboxContent.addChild("#",
> l10n("welcomeInfoboxContent1")); -            
> welcomeInfoboxContent.addChild("a",
> "href", "?step=1").addChild("#", L10n.getString("Toadlet.clickHere")); +
> +             HTMLNode firstParagraph = welcomeInfoboxContent.addChild("p");
> +             firstParagraph.addChild("#", l10n("welcomeInfoboxContent1") + ' 
> ');
> +             firstParagraph.addChild("a", "href", "?step=1").addChild("#",
> L10n.getString("Toadlet.clickHere")); +
> +             HTMLNode secondParagraph = welcomeInfoboxContent.addChild("p");
> +             secondParagraph.addChild("a", "href", "/").addChild("#",
> l10n("skipWizard")); +
>               this.writeReply(ctx, 200, "text/html; charset=utf-8", "OK",
> pageNode.generate()); }
>
> @@ -183,8 +236,48 @@
>                       }
>                       super.writeTemporaryRedirect(ctx, "step3", 
> TOADLET_URL+"?step=4");
>                       return;
> +             } else if(request.isPartSet("networkF")) {
> +                     StringBuffer sb = new StringBuffer();
> +                     short ifCount = 0;
> +
> +                     Enumeration interfaces = 
> NetworkInterface.getNetworkInterfaces();
> +                     while(interfaces.hasMoreElements()) {
> +                             NetworkInterface currentIF = (NetworkInterface)
> interfaces.nextElement(); +                           if(currentIF == null) 
> continue;
> +
> +                             Enumeration ipAddresses = 
> currentIF.getInetAddresses();
> +                             while(ipAddresses.hasMoreElements()) {
> +                                     InetAddress currentInetAddress = 
> (InetAddress)
> ipAddresses.nextElement(); +                                  
> if(currentInetAddress == null) continue;
> +                                     String isIFSelected
> =request.getPartAsString(currentInetAddress.getHostAddress(), 255);
> +                                     if((isIFSelected != null) && 
> (isIFSelected.equals("true"))) {
> +                                             
> sb.append(currentInetAddress.getHostAddress());
> +                                             sb.append(',');
> +                                             ifCount++;
> +                                             // The trailling comma is going 
> to be sanitized by the config
> framework anyway +                                    }
> +                             }
> +                     }
> +
> +                     if(ifCount > 1) { // One is loopback => default
> +                             try {
> +                                     // Java doesn't provide a way to get 
> the netmask : workaround and
> bind only to trusted if +                                     
> config.get("fcp").set("bindTo",
> sb.toString()); // FIXME: Would break ipv6?
> +                                     config.get("fcp").set("allowedHosts", 
> "*");
> +                                     
> config.get("fcp").set("allowedHostsFullAccess", "*");
> +
> +                                     config.get("fproxy").set("bindTo", 
> sb.toString()); // FIXME: Would
> break ipv6? +                                 
> config.get("fproxy").set("allowedHosts", "*");
> +                                     
> config.get("fproxy").set("allowedHostsFullAccess", "*");
> +
> +                                     Logger.normal(this, "Network allowance 
> list has been set to "+
> sb.toString()); +                             } catch 
> (InvalidConfigValueException e) {
> +                                     Logger.error(this, "Should not happen, 
> please report!" + e);
> +                             }
> +                     }
> +                     super.writeTemporaryRedirect(ctx, "step4", 
> TOADLET_URL+"?step=5");
> +                     return;
>               }
> -
>
>               super.writeTemporaryRedirect(ctx, "invalid/unhandled data",
> TOADLET_URL); }
>
> Modified: trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties
> ===================================================================
> --- trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties 2007-05-29
> 22:24:23 UTC (rev 13394) +++
> trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties     2007-05-30
> 19:12:37 UTC (rev 13395) @@ -172,9 +172,16 @@
>  FirstTimeWizardToadlet.bandwidthLimitLong=Please select your connection
> type from the dropdown menu below.
> FirstTimeWizardToadlet.datastoreSize=Datastore size
>  FirstTimeWizardToadlet.datastoreSizeLong=Please select a size for your
> datastore. +FirstTimeWizardToadlet.isNetworkTrusted=Is your local network
> trusted ? +FirstTimeWizardToadlet.isNetworkTrustedLong=Is your local
> network trusted ? If you don't answer the default option all the services
> provided by your node will be wide open to everyone willing to access them.
> If you want to do more selective access controls you can proceed later on
> from the configuration page. +FirstTimeWizardToadlet.noNetworkIF=No
> additionnal network interface found
> +FirstTimeWizardToadlet.noNetworkIFLong=Freenet hasn't found any
> additionnal network interface. It will assume that you will connect to it
> from your computer and only from it. +FirstTimeWizardToadlet.iDoTrust=Do
> you trust people connected to ${interface} (${ip}) ?
> FirstTimeWizardToadlet.step1Title=Freenet first time wizard! - Choose your
> language FirstTimeWizardToadlet.step2Title=Freenet first time wizard! -
> Bandwidth limits FirstTimeWizardToadlet.step3Title=Freenet first time
> wizard! - Datastore size +FirstTimeWizardToadlet.step4Title=Freenet first
> time wizard! - Network configuration +FirstTimeWizardToadlet.skipWizard=I
> am not a newbie, please skip the wizard!
> FProxyToadlet.abortToHomepage=Abort and return to the FProxy home page
> FProxyToadlet.backToFProxy=${link}Click here${/link} to go to the FProxy
> home page. FProxyToadlet.backToReferrer=${link}Click here${/link} to go
> back to the referring page. @@ -782,6 +789,8 @@
>  TextModeClientInterfaceServer.enabledLong=Whether to enable the TMCI
>  TextModeClientInterfaceServer.telnetPortNumber=Telnet port
>  TextModeClientInterfaceServer.telnetPortNumberLong=Telnet port number
> +Toadlet.yes=Yes
> +Toadlet.no=No
>  Toadlet.cancel=Cancel
>  Toadlet.clickHere=Click here
>  Toadlet.internalErrorPleaseReport=Internal error: please report
>
> _______________________________________________
> cvs mailing list
> cvs at freenetproject.org
> http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: 
<https://emu.freenetproject.org/pipermail/devl/attachments/20070530/b26baaf9/attachment.pgp>

Reply via email to