From 8a76f38d269b1d6e9905051769b5fe9ce7c9e052 Mon Sep 17 00:00:00 2001 From: orbiter Date: Wed, 3 Feb 2010 09:31:12 +0000 Subject: [PATCH] Added a new steering servlet that can be used to repeat actions that had been made on the yacy interface. This can be used to: - start again a previously started crawl - submit settings (again). This option will be used to transmit all settings of one peer to another peer if the remote-peer steering function is ready This steering framework will also be used for a 'schedule-everything' which will also include a new scheduler for crawling. git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@6642 6c8d7289-2bf4-0310-a012-ef5d649a1542 --- htroot/Table_API_p.html | 70 ++++++++++++++++ htroot/Table_API_p.java | 115 +++++++++++++++++++++++++++ htroot/env/templates/header.template | 5 +- source/de/anomic/data/Tables.java | 17 ++-- 4 files changed, 200 insertions(+), 7 deletions(-) create mode 100644 htroot/Table_API_p.html create mode 100644 htroot/Table_API_p.java diff --git a/htroot/Table_API_p.html b/htroot/Table_API_p.html new file mode 100644 index 000000000..2835aa766 --- /dev/null +++ b/htroot/Table_API_p.html @@ -0,0 +1,70 @@ + + + + YaCy '#[clientname]#': Peer Steering + #(showtable)#:: + + #(/showtable)# + #%env/templates/metas.template%# + + + #%env/templates/header.template%# + +

Steering of API Actions

+

This table shows actions that had been issued on the YaCy interface + to change the configuration or to request crawl actions. + These recorded actions can be used to repeat specific actions and to send them + to a scheduler for a periodic execution. +

+ #(showtable)#:: +
+
+ + + + + + + + + + #{list}# + + + + + + + + #{/list}# +
 DateTypeCommentURL
#[date]##[type]##[comment]##[url]#
+

+ + + +

+
+
+ #(/showtable)# + #(showexec)#:: +
+
+ + + + + + + #{list}# + + + + + #{/list}# +
StatusURL
#[status]##[url]#
+
+
+ #(/showexec)# + #%env/templates/footer.template%# + + diff --git a/htroot/Table_API_p.java b/htroot/Table_API_p.java new file mode 100644 index 000000000..42f6f843d --- /dev/null +++ b/htroot/Table_API_p.java @@ -0,0 +1,115 @@ +// Table_API_p.java +// ----------------------- +// (C) 2010 by Michael Peter Christen; mc@yacy.net +// first published 01.02.2010 in Frankfurt, Germany on http://yacy.net +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +import java.io.IOException; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.Map; + +import net.yacy.kelondro.logging.Log; + +import de.anomic.data.Tables; +import de.anomic.http.client.Client; +import de.anomic.http.server.RequestHeader; +import de.anomic.http.server.ResponseContainer; +import de.anomic.search.Switchboard; +import de.anomic.server.serverObjects; +import de.anomic.server.serverSwitch; + +public class Table_API_p { + + public static serverObjects respond(final RequestHeader header, final serverObjects post, final serverSwitch env) { + final Switchboard sb = (Switchboard) env; + final serverObjects prop = new serverObjects(); + + if (post != null && post.get("deleterows", "").length() > 0) { + for (Map.Entry entry: post.entrySet()) { + if (entry.getKey().startsWith("mark_") && entry.getValue().equals("on")) { + sb.tables.delete(Tables.API_TABLENAME, entry.getKey().substring(5).getBytes()); + } + } + } + + prop.put("showexec", 0); + prop.put("showtable", 0); + + if (post != null && post.get("execrows", "").length() > 0) { + final RequestHeader reqHeader = new RequestHeader(); + final Client client = new Client(120000, reqHeader); + ResponseContainer result; + LinkedHashMap l = new LinkedHashMap(); + for (Map.Entry entry: post.entrySet()) { + if (entry.getKey().startsWith("mark_") && entry.getValue().equals("on")) { + Map map = sb.tables.select(Tables.API_TABLENAME, entry.getKey().substring(5).getBytes()); + String url = "http://localhost:" + sb.getConfig("port", "8080") + new String(map.get(Tables.API_COL_URL)); + try { + result = client.GET(url); + l.put(url, result.getStatusCode()); + } catch (IOException e) { + Log.logException(e); + } + } + } + // construct result table + prop.put("showexec", 1); + + final Iterator> resultIterator = l.entrySet().iterator(); + Map.Entry record; + int count = 0; + boolean dark = true; + while (resultIterator.hasNext()) { + record = resultIterator.next(); + if (record == null) continue; + prop.put("showexec_list_" + count + "_dark", ((dark) ? 1 : 0) ); dark=!dark; + prop.put("showexec_list_" + count + "_status", record.getValue()); + prop.put("showexec_list_" + count + "_url", record.getKey()); + count++; + } + prop.put("showexec_list", count); + } + + // generate table + prop.put("showtable", 1); + + // insert rows + final int maxCount = Math.min(1000, sb.tables.size(Tables.API_TABLENAME)); + final Iterator>> mapIterator = sb.tables.iterator(Tables.API_TABLENAME); + Map.Entry> record; + Map map; + int count = 0; + boolean dark = true; + while ((mapIterator.hasNext()) && (count < maxCount)) { + record = mapIterator.next(); + if (record == null) continue; + map = record.getValue(); + prop.put("showtable_list_" + count + "_dark", ((dark) ? 1 : 0) ); dark=!dark; + prop.put("showtable_list_" + count + "_pk", new String(record.getKey())); + prop.put("showtable_list_" + count + "_date", map.get(Tables.API_COL_DATE)); + prop.put("showtable_list_" + count + "_type", map.get(Tables.API_COL_TYPE)); + prop.put("showtable_list_" + count + "_comment", map.get(Tables.API_COL_COMMENT)); + prop.put("showtable_list_" + count + "_url", "http://" + sb.myPublicIP() + ":" + sb.getConfig("port", "8080") + new String(map.get(Tables.API_COL_URL))); + count++; + } + prop.put("showtable_list", count); + + // return rewrite properties + return prop; + } + +} diff --git a/htroot/env/templates/header.template b/htroot/env/templates/header.template index 6564c8869..61ef14855 100644 --- a/htroot/env/templates/header.template +++ b/htroot/env/templates/header.template @@ -82,14 +82,15 @@
  • Web Visualization
  • Access Tracker
  • Server Log
  • +
  • MessagesNew Messages
  • +
  • Terminal