Author: batosai
Date: 2008-08-04 18:59:59 +0000 (Mon, 04 Aug 2008)
New Revision: 21600

Modified:
   trunk/apps/WoT/src/plugins/WoT/WoTplugin.java
Log:
Added Homepage and OwnIdentities pages.

Modified: trunk/apps/WoT/src/plugins/WoT/WoTplugin.java
===================================================================
--- trunk/apps/WoT/src/plugins/WoT/WoTplugin.java       2008-08-03 16:24:28 UTC 
(rev 21599)
+++ trunk/apps/WoT/src/plugins/WoT/WoTplugin.java       2008-08-04 18:59:59 UTC 
(rev 21600)
@@ -6,10 +6,15 @@

 package plugins.WoT;

+import com.db4o.Db4o;
+import com.db4o.ObjectContainer;
+import com.db4o.ObjectSet;
+
 import freenet.client.HighLevelSimpleClient;
 import freenet.clients.http.PageMaker;
 import freenet.config.Config;
 import freenet.config.SubConfig;
+import freenet.keys.FreenetURI;
 import freenet.node.fcp.FCPServer;
 import freenet.pluginmanager.FredPlugin;
 import freenet.pluginmanager.FredPluginHTTP;
@@ -27,26 +32,31 @@
  */
 public class WoTplugin implements FredPlugin, FredPluginHTTP, 
FredPluginThreadless, FredPluginVersioned {

-       public static String SELF_URI = "/plugins/plugins.WoT.WoTplugin/";
+       public static String SELF_URI = "/plugins/plugins.WoT.WoTplugin";
        private PluginRespirator pr;
        private PageMaker pm;
        private HighLevelSimpleClient client;
        private FCPServer fcp;
+       private ObjectContainer db;

        public void runPlugin(PluginRespirator pr) {

                Logger.error(this, "Start");

                this.pr = pr;
+               db = Db4o.openFile("WoT.db4o");

                Config nc = pr.getNode().config;
                SubConfig fc = nc.get("fproxy");
                String cssName = fc.getString("css");

                pm = new PageMaker(cssName);
+               
+               pm.addNavigationLink(SELF_URI, "Home", "Home page", false, 
null);
+               pm.addNavigationLink(SELF_URI + "/ownidentities", "Own 
Identities", "Manage your own identities", false, null);
+               pm.addNavigationLink(SELF_URI + "/test", "Test", "Testing 
page", false, null);
+               pm.addNavigationLink("/plugins/", "Plugins page", "Back to 
Plugins page", false, null);

-               pm.addNavigationLink("/", "Fproxy", "Back to Fproxy", false, 
null);
-
                client = pr.getHLSimpleClient();

                fcp = pr.getNode().clientCore.getFCPServer();
@@ -54,16 +64,33 @@
        }

        public void terminate() {
+               db.close();
        }

        @Override
        public String handleHTTPGet(HTTPRequest request) throws 
PluginHTTPException {
-               return makeHomePage();
+               
+               String page = request.getPath().substring(SELF_URI.length());
+               if(page.equals("/ownidentities")) {
+                       return makeOwnIdentitiesPage();
+               }
+               else {
+                       return makeHomePage();
+               }
        }

        @Override
        public String handleHTTPPost(HTTPRequest request) throws 
PluginHTTPException {
-               return null;
+               
+               String page = request.getPath().substring(SELF_URI.length());
+               if(page.equals("/createIdentity")) {
+                       FreenetURI[] keypair = client.generateKeyPair("WoT");
+                       FreenetURI insertURI = 
keypair[0].setKeyType("USK").setSuggestedEdition(0);
+                       FreenetURI requestURI = 
keypair[1].setKeyType("USK").setSuggestedEdition(0);
+                       
+                       return insertURI + "<br>" + requestURI;
+               }
+               else return makeHomePage();
        }

        @Override
@@ -72,17 +99,56 @@
        }

        private String makeHomePage() {
+               
+               int nbOwnIdentities;
+               int nbIdentities;
+               
+               HTMLNode list = new HTMLNode("ul");
+               
+               ObjectSet<OwnIdentity> ownIdentities = 
db.queryByExample(OwnIdentity.class);
+               nbOwnIdentities = ownIdentities.size();
+               list.addChild(new HTMLNode("li", "Own Identities : " + 
nbOwnIdentities));
+               
+               ObjectSet<Identity> identities = 
db.queryByExample(Identity.class);
+               nbIdentities = identities.size();
+               list.addChild(new HTMLNode("li", "Known Identities : " + 
nbIdentities));
+               
+               
                HTMLNode pageNode = getPageNode();
                HTMLNode contentNode = pm.getContentNode(pageNode);
+               HTMLNode box = pm.getInfobox("Summary");

-               HTMLNode box = pm.getInfobox("Summary");
                HTMLNode boxContent = pm.getContentNode(box);
-               boxContent.addChild("#", "The WoT plugin is running...");
+               boxContent.addChild(list);

                contentNode.addChild(box);
                return pageNode.generate();
        }
+       
+       private String makeOwnIdentitiesPage() {

+               HTMLNode pageNode = getPageNode();
+               HTMLNode contentNode = pm.getContentNode(pageNode);
+               HTMLNode box = pm.getInfobox("Own Identities");
+               HTMLNode boxContent = pm.getContentNode(box);
+               
+               ObjectSet<OwnIdentity> ownIdentities = 
db.queryByExample(OwnIdentity.class);
+               if(ownIdentities.size() == 0) {
+                       boxContent.addChild("p", "You have no own identites 
yet, you should create one...");
+               }
+               else {
+                       while(ownIdentities.hasNext()) {
+                               boxContent.addChild(new HTMLNode("p", 
ownIdentities.next().getRequestURI()));
+                       }
+               }
+               
+               HTMLNode createForm = pr.addFormChild(boxContent, SELF_URI + 
"/createIdentity", "createForm");
+               createForm.addChild("input", new String[] { "type", "name", 
"value" }, new String[] { "submit", "create", "Create a new identity !" });
+               
+               contentNode.addChild(box);
+               return pageNode.generate();
+       }
+
        private HTMLNode getPageNode() {
                return pm.getPageNode("Web of Trust", null);
        }


Reply via email to