Author: zothar
Date: 2006-06-25 04:29:57 +0000 (Sun, 25 Jun 2006)
New Revision: 9383

Modified:
   trunk/freenet/src/freenet/node/TextModeClientInterface.java
Log:
Add ENABLEPEER and DISABLEPEER to TMCI.

Modified: trunk/freenet/src/freenet/node/TextModeClientInterface.java
===================================================================
--- trunk/freenet/src/freenet/node/TextModeClientInterface.java 2006-06-25 
04:17:44 UTC (rev 9382)
+++ trunk/freenet/src/freenet/node/TextModeClientInterface.java 2006-06-25 
04:29:57 UTC (rev 9383)
@@ -151,6 +151,8 @@
         sb.append("DISCONNECT:<ip:port|name> - see 
REMOVEPEER:<ip:port|name|identity> below\r\n");
         sb.append("ADDPEER:<filename|URL> - add a peer from its ref in a 
file/url.\r\n");
         sb.append("ADDPEER:\\r\\n<noderef including an End on a line by 
itself> - add a peer by entering a noderef directly.\r\n");
+        sb.append("DISABLEPEER:<ip:port|name|identity> - disable a peer by 
providing it's ip+port, name, or identity\r\n");
+        sb.append("ENABLEPEER:<ip:port|name|identity> - enable a peer by 
providing it's ip+port, name, or identity\r\n");
         sb.append("HAVEPEER:<ip:port|name|identity> - report true/false on 
having a peer by providing it's ip+port, name, or identity\r\n");
         sb.append("REMOVEPEER:<ip:port|name|identity> - remove a peer by 
providing it's ip+port, name, or identity\r\n");
         sb.append("PEER:<ip:port|name|identity> - report the noderef of a peer 
(without metadata) by providing it's ip+port, name, or identity\r\n");
@@ -611,6 +613,32 @@
                Logger.error(this, "Error setting node's name");
                }
                n.config.store();
+        } else if(uline.startsWith("DISABLEPEER:")) {
+               String nodeIdentifier = 
(line.substring("DISABLEPEER:".length())).trim();
+               if(!havePeer(nodeIdentifier)) {
+                       out.write(("no peer for 
"+nodeIdentifier+"\r\n").getBytes());
+                       out.flush();
+                       return false;
+               }
+               if(disablePeer(nodeIdentifier)) {
+                       outsb.append("disable succeeded for "+nodeIdentifier);
+               } else {
+                       outsb.append("disable failed for "+nodeIdentifier);
+               }
+               outsb.append("\r\n");
+        } else if(uline.startsWith("ENABLEPEER:")) {
+               String nodeIdentifier = 
(line.substring("ENABLEPEER:".length())).trim();
+               if(!havePeer(nodeIdentifier)) {
+                       out.write(("no peer for 
"+nodeIdentifier+"\r\n").getBytes());
+                       out.flush();
+                       return false;
+               }
+               if(enablePeer(nodeIdentifier)) {
+                       outsb.append("enable succeeded for "+nodeIdentifier);
+               } else {
+                       outsb.append("enable failed for "+nodeIdentifier);
+               }
+               outsb.append("\r\n");
         } else if(uline.startsWith("HAVEPEER:")) {
                String nodeIdentifier = 
(line.substring("HAVEPEER:".length())).trim();
                if(havePeer(nodeIdentifier)) {
@@ -858,6 +886,52 @@
        }
        return null;
     }
+
+       /**
+        * Disable connecting to a peer given its ip and port, name or 
identity, as a String
+        * Report peer success as boolean
+        */
+       private boolean disablePeer(String nodeIdentifier) {
+               PeerNode[] pn = n.peers.myPeers;
+               for(int i=0;i<pn.length;i++)
+               {
+                       Peer peer = pn[i].getDetectedPeer();
+                       String nodeIpAndPort = "";
+                       if(peer != null) {
+                               nodeIpAndPort = peer.toString();
+                       }
+                       String name = pn[i].myName;
+                       String identity = pn[i].getIdentityString();
+                       if(identity.equals(nodeIdentifier) || 
nodeIpAndPort.equals(nodeIdentifier) || name.equals(nodeIdentifier)) {
+                               pn[i].disablePeer();
+                               return true;
+                       }
+               }
+               return false;
+       }
+
+       /**
+        * Enable connecting to a peer given its ip and port, name or identity, 
as a String
+        * Report peer success as boolean
+        */
+       private boolean enablePeer(String nodeIdentifier) {
+               PeerNode[] pn = n.peers.myPeers;
+               for(int i=0;i<pn.length;i++)
+               {
+                       Peer peer = pn[i].getDetectedPeer();
+                       String nodeIpAndPort = "";
+                       if(peer != null) {
+                               nodeIpAndPort = peer.toString();
+                       }
+                       String name = pn[i].myName;
+                       String identity = pn[i].getIdentityString();
+                       if(identity.equals(nodeIdentifier) || 
nodeIpAndPort.equals(nodeIdentifier) || name.equals(nodeIdentifier)) {
+                               pn[i].enablePeer();
+                               return true;
+                       }
+               }
+               return false;
+       }

     /**
      * Check for a peer of the node given its ip and port, name or identity, 
as a String


Reply via email to