Author: nextgens
Date: 2006-05-07 11:57:43 +0000 (Sun, 07 May 2006)
New Revision: 8639

Modified:
   trunk/freenet/src/freenet/clients/http/PageMaker.java
   trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java
   trunk/freenet/src/freenet/node/MeaningfulNodeNameUserAlert.java
   trunk/freenet/src/freenet/node/PeerManagerUserAlert.java
   trunk/freenet/src/freenet/node/UserAlert.java
   trunk/freenet/src/freenet/node/UserAlertManager.java
Log:
UserAlerts are now dissmissable from fproxy

the infamous NPE caused by URL missdecoding is silently discarded : waiting for 
Bombe's input

Modified: trunk/freenet/src/freenet/clients/http/PageMaker.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/PageMaker.java       2006-05-07 
11:15:53 UTC (rev 8638)
+++ trunk/freenet/src/freenet/clients/http/PageMaker.java       2006-05-07 
11:57:43 UTC (rev 8639)
@@ -13,6 +13,8 @@
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;

+import freenet.support.Logger;
+
 /** Simple class to output standard heads and tail for web interface pages. 
 */
 public class PageMaker {
@@ -95,14 +97,19 @@
                        URL url = getClass().getResource("staticfiles/themes/");
                        URLConnection urlConnection = url.openConnection();
                        if (url.getProtocol().equals("file")) {
-                               File themesDirectory = new 
File(URLDecoder.decode(url.getPath(), "ISO-8859-1").replaceAll("|", ":"));
-                               File[] themeDirectories = 
themesDirectory.listFiles();
-                               for (int themeIndex = 0; themeIndex < 
themeDirectories.length; themeIndex++) {
-                                       File themeDirectory = 
themeDirectories[themeIndex];
-                                       if (themeDirectory.isDirectory() && 
!themeDirectory.getName().startsWith(".")) {
-                                               
themes.add(themeDirectory.getName());
-                                       }
+                               try{
+                                       File themesDirectory = new 
File(URLDecoder.decode(url.getPath(), "ISO-8859-1").replaceAll("|", ":"));
+                                       File[] themeDirectories = 
themesDirectory.listFiles();
+                                       for (int themeIndex = 0; themeIndex < 
themeDirectories.length; themeIndex++) {
+                                               File themeDirectory = 
themeDirectories[themeIndex];
+                                               if 
(themeDirectory.isDirectory() && !themeDirectory.getName().startsWith(".")) {
+                                                       
themes.add(themeDirectory.getName());
+                                               }
+                                       }       
+                               }catch(Exception e){
+                                       Logger.error(this,"Error getting theme 
list. "+e);
                                }
+                               
                        } else if (urlConnection instanceof JarURLConnection) {
                                JarURLConnection jarUrlConnection = 
(JarURLConnection) urlConnection;
                                JarFile jarFile = jarUrlConnection.getJarFile();

Modified: trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java  2006-05-07 
11:15:53 UTC (rev 8638)
+++ trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java  2006-05-07 
11:57:43 UTC (rev 8639)
@@ -9,6 +9,7 @@
 import freenet.client.HighLevelSimpleClient;
 import freenet.config.SubConfig;
 import freenet.node.Node;
+import freenet.node.UserAlert;
 import freenet.node.Version;
 import freenet.pluginmanager.HTTPRequest;
 import freenet.support.Bucket;
@@ -141,7 +142,25 @@
                        } catch (URISyntaxException ex) {

                        }
-               } else {
+               }else if(request.isParameterSet("disable")){
+                       UserAlert[] alerts=node.alerts.getAlerts();
+                       for(int i=0;i<alerts.length;i++){
+                               
if(request.getIntParam("disable")==alerts[i].hashCode()){
+                                       // Won't be dismissed if it's not 
allowed anyway
+                                       Logger.normal(this,"Disabling the 
userAlert "+alerts[i].hashCode());
+                                       alerts[i].isValid(false);
+
+                                       ctx.getPageMaker().makeHead(buf, 
"Configuration Applied");
+                                       buf.append("<div class=\"infobox\">\n");
+                                       buf.append("Your configuration changes 
were applied successfully<br />\n");
+                                       buf.append("<a href=\"/\" title=\"Node 
Homepage\">Homepage</a>\n");
+                                       buf.append("</div>\n");
+                                       
+                                       ctx.getPageMaker().makeTail(buf);
+                                       writeReply(ctx, 200, "text/html", "OK", 
buf.toString());
+                               }
+                       }
+               }else {
                        this.handleGet(uri, ctx);
                }
        }

Modified: trunk/freenet/src/freenet/node/MeaningfulNodeNameUserAlert.java
===================================================================
--- trunk/freenet/src/freenet/node/MeaningfulNodeNameUserAlert.java     
2006-05-07 11:15:53 UTC (rev 8638)
+++ trunk/freenet/src/freenet/node/MeaningfulNodeNameUserAlert.java     
2006-05-07 11:57:43 UTC (rev 8639)
@@ -1,6 +1,7 @@
 package freenet.node;

 public class MeaningfulNodeNameUserAlert implements UserAlert {
+       private boolean isValid=true;

        public boolean userCanDismiss() {
                return true;
@@ -22,6 +23,10 @@
        }

        public boolean isValid() {
-               return true;
+               return isValid;
        }
+       
+       public void isValid(boolean b){
+               if(userCanDismiss()) isValid=b;
+       }
 }

Modified: trunk/freenet/src/freenet/node/PeerManagerUserAlert.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerManagerUserAlert.java    2006-05-07 
11:15:53 UTC (rev 8638)
+++ trunk/freenet/src/freenet/node/PeerManagerUserAlert.java    2006-05-07 
11:57:43 UTC (rev 8639)
@@ -5,6 +5,7 @@
        final Node n;
        int conns;
        int peers;
+       boolean isValid=true;

        PeerManagerUserAlert(Node n) {
                this.n = n;
@@ -25,7 +26,7 @@
                        return "Only 2 open connections";
                else throw new IllegalArgumentException("Not valid");
        }
-
+       
        public String getText() {
                String s;
                if(peers == 0) {
@@ -60,7 +61,10 @@
        }

        public boolean isValid() {
-               return peers == 0 || conns <= 2;
+               return (peers == 0 || conns <= 2)&&isValid;
        }

+       public void isValid(boolean b){
+               if(userCanDismiss()) isValid=b;
+       }
 }

Modified: trunk/freenet/src/freenet/node/UserAlert.java
===================================================================
--- trunk/freenet/src/freenet/node/UserAlert.java       2006-05-07 11:15:53 UTC 
(rev 8638)
+++ trunk/freenet/src/freenet/node/UserAlert.java       2006-05-07 11:57:43 UTC 
(rev 8639)
@@ -29,6 +29,8 @@
         */
        public boolean isValid();

+       public void isValid(boolean validity);
+       
        /** An error which prevents normal operation */
        public final static short CRITICAL_ERROR = 0;
        /** An error which prevents normal operation but might be temporary */

Modified: trunk/freenet/src/freenet/node/UserAlertManager.java
===================================================================
--- trunk/freenet/src/freenet/node/UserAlertManager.java        2006-05-07 
11:15:53 UTC (rev 8638)
+++ trunk/freenet/src/freenet/node/UserAlertManager.java        2006-05-07 
11:57:43 UTC (rev 8639)
@@ -60,6 +60,9 @@
                                else if(level <= UserAlert.MINOR)
                                        buf.append("<span 
class=\"alert-minor\">");
                                buf.append(a[i].getTitle());
+                               if(a[i].userCanDismiss())
+                                       buf.append("<form method=\"post\" 
action=\".\"><input type=\"hidden\" name=\"disable\" value=\""+
+                                               a[i].hashCode()+"\" /><input 
type=\"submit\" value=\"Hide\" /></form>");
                                if(level <= UserAlert.MINOR)
                                        buf.append("</span>");
                                buf.append("</b><br />\n");


Reply via email to