From eb80405a16fc08e7e3b4a92b9efe30a48476162c Mon Sep 17 00:00:00 2001
From: Michael Peter Christen <mc@yacy.net>
Date: Tue, 5 Feb 2013 12:47:20 +0100
Subject: [PATCH] added a disable function in RemoteCrawl_p servlet which
 prevents setting of remote crawl if peer is not a senior or principal peer

---
 htroot/RemoteCrawl_p.html               | 4 +++-
 htroot/RemoteCrawl_p.java               | 8 +++++---
 source/net/yacy/search/Switchboard.java | 4 ++--
 3 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/htroot/RemoteCrawl_p.html b/htroot/RemoteCrawl_p.html
index 55cb58f85..70e32c903 100644
--- a/htroot/RemoteCrawl_p.html
+++ b/htroot/RemoteCrawl_p.html
@@ -17,9 +17,11 @@
       </legend>
     <form id="ConfigForm" method="post" action="RemoteCrawl_p.html" enctype="multipart/form-data" accept-charset="UTF-8">
       <dl>
+        #(disabled)#::<dt></dt><dd><span class="error">Your peer cannot accept remote crawls because you need senior or principal peer status for that!</span></dd>#(/disabled)#
+        <dt>
         <dt>
           <label for="crawlResponse">Accept Remote Crawl Requests</label>
-          <input type="checkbox" id="crawlResponse" name="crawlResponse" onclick="window.location.href='RemoteCrawl_p.html?#(crawlResponse)#crawlResponse=on::crawlResponse=off#(/crawlResponse)#'" #(crawlResponse)#::checked="checked" #(/crawlResponse)#/>
+          <input type="checkbox" #(disabled)#::disabled="disabled"#(/disabled)# id="crawlResponse" name="crawlResponse" onclick="window.location.href='RemoteCrawl_p.html?#(crawlResponse)#crawlResponse=on::crawlResponse=off#(/crawlResponse)#'" #(crawlResponse)#::checked="checked" #(/crawlResponse)#/>
         </dt>
         <dd>
           Perform web indexing upon request of another peer.<br />
diff --git a/htroot/RemoteCrawl_p.java b/htroot/RemoteCrawl_p.java
index b855a266e..09ad581f7 100644
--- a/htroot/RemoteCrawl_p.java
+++ b/htroot/RemoteCrawl_p.java
@@ -69,14 +69,16 @@ public class RemoteCrawl_p {
             }
         }
 
+        // set seed information directly
+        sb.peers.mySeed().setFlagAcceptRemoteCrawl(sb.getConfigBool("crawlResponse", false));
+        
         // write remote crawl request settings
-        prop.put("crawlResponse", sb.getConfigBool("crawlResponse", false) ? "1" : "0");
+        prop.put("disabled", !sb.peers.mySeed().isActive() && !sb.peers.mySeed().getFlagAcceptRemoteCrawl() ? 1 : 0);
+        prop.put("crawlResponse", sb.peers.mySeed().getFlagAcceptRemoteCrawl() ? 1 : 0);
         long RTCbusySleep = Math.max(1, env.getConfigLong(SwitchboardConstants.CRAWLJOB_REMOTE_TRIGGERED_CRAWL_BUSYSLEEP, 100));
         final int RTCppm = (int) (60000L / RTCbusySleep);
         prop.put("acceptCrawlLimit", RTCppm);
 
-        // set seed information directly
-        sb.peers.mySeed().setFlagAcceptRemoteCrawl(sb.getConfigBool("crawlResponse", false));
 
         // -------------------------------------------------------------------------------------
         // write network list
diff --git a/source/net/yacy/search/Switchboard.java b/source/net/yacy/search/Switchboard.java
index 1f78ba0d2..d6e8db437 100644
--- a/source/net/yacy/search/Switchboard.java
+++ b/source/net/yacy/search/Switchboard.java
@@ -3522,8 +3522,8 @@ public final class Switchboard extends serverSwitch {
         this.peers.mySeed().setFlagDirectConnect(true);
         this.peers.mySeed().setLastSeenUTC();
         this.peers.mySeed().put(Seed.UTC, GenericFormatter.UTCDiffString());
-        this.peers.mySeed().setFlagAcceptRemoteCrawl(getConfig("crawlResponse", "").equals("true"));
-        this.peers.mySeed().setFlagAcceptRemoteIndex(getConfig("allowReceiveIndex", "").equals("true"));
+        this.peers.mySeed().setFlagAcceptRemoteCrawl(getConfigBool("crawlResponse", true));
+        this.peers.mySeed().setFlagAcceptRemoteIndex(getConfigBool("allowReceiveIndex", true));
         //mySeed.setFlagAcceptRemoteIndex(true);
     }