From ed5ac0f81a6526c2b9a64dca62fa3c44d3115433 Mon Sep 17 00:00:00 2001 From: theli Date: Sun, 22 Jan 2006 14:06:43 +0000 Subject: [PATCH] *) adding servlet that is needed by the yacy screensaver git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@1399 6c8d7289-2bf4-0310-a012-ef5d649a1542 --- htroot/ScreenSaver.java | 136 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 htroot/ScreenSaver.java diff --git a/htroot/ScreenSaver.java b/htroot/ScreenSaver.java new file mode 100644 index 000000000..5f3acfecf --- /dev/null +++ b/htroot/ScreenSaver.java @@ -0,0 +1,136 @@ +//autoconfig.pac +//----------------------- +//part of YaCy +//(C) by Michael Peter Christen; mc@anomic.de +//first published on http://www.anomic.de +//Frankfurt, Germany, 2004 +//last major change: 12.07.2004 +// +//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 +// +//Using this software in any meaning (reading, learning, copying, compiling, +//running) means that you agree that the Author(s) is (are) not responsible +//for cost, loss of data or any harm that may be caused directly or indirectly +//by usage of this softare or this documentation. The usage of this software +//is on your own risk. The installation and usage (starting/running) of this +//software may allow other people or application to access your computer and +//any attached devices and is highly dependent on the configuration of the +//software which must be done by the user of the software; the author(s) is +//(are) also not responsible for proper configuration and usage of the +//software, even if provoked by documentation provided together with +//the software. +// +//Any changes to this file according to the GPL as documented in the file +//gpl.txt aside this file in the shipment you received can be done to the +//lines that follows this copyright notice here, but changes must not be +//done inside the copyright notive above. A re-distribution must contain +//the intact and unchanged copyright notice. +//Contributions and changes to the program code must be marked as such. + +//you must compile this file with +//javac -classpath .:../Classes Status.java +//if the shell's current path is HTROOT + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.PrintWriter; +import java.util.ArrayList; + +import de.anomic.http.httpHeader; +import de.anomic.plasma.plasmaSwitchboard; +import de.anomic.plasma.plasmaSwitchboardQueue; +import de.anomic.server.serverObjects; +import de.anomic.server.serverSwitch; +import de.anomic.yacy.yacyCore; +import de.anomic.yacy.yacySeed; + +public class ScreenSaver { + + /** + * Generates a proxy-autoconfig-file (application/x-ns-proxy-autoconfig) + * See: Proxy Auto-Config File Format + * @param header + * @param post + * @param env + * @return + * @throws IOException + */ + public static serverObjects respond(httpHeader header, serverObjects post, serverSwitch env) { + + plasmaSwitchboard sb = (plasmaSwitchboard)env; + boolean crawlingStarted = false; + try { + InputStream input = (InputStream) header.get("INPUTSTREAM"); + OutputStream output = (OutputStream) header.get("OUTPUTSTREAM"); + + String line = null; + BufferedReader inputReader = new BufferedReader(new InputStreamReader(input)); + PrintWriter outputWriter = new PrintWriter(output); + while ((line = inputReader.readLine()) != null) { + yacyCore.peerActions.updateMySeed(); + if (line.equals("")) { + continue; + } else if (line.startsWith("PPM")) { + String currentPPM = yacyCore.seedDB.mySeed.get(yacySeed.ISPEED, "-1"); + outputWriter.println(currentPPM); + } else if (line.startsWith("LINKS")) { + String currentLinks = yacyCore.seedDB.mySeed.get(yacySeed.LCOUNT, "-1"); + outputWriter.println(currentLinks); + } else if (line.startsWith("WORDS")) { + String currentWords = yacyCore.seedDB.mySeed.get(yacySeed.ICOUNT, "-1"); + outputWriter.println(currentWords); + } else if (line.equals("CURRENTURL")) { + String currentURL = ""; + ArrayList entryList = new ArrayList(); + synchronized (sb.indexingTasksInProcess) { + if (sb.indexingTasksInProcess.size() > 0) { + entryList.addAll(sb.indexingTasksInProcess.values()); + } + } + if (entryList.size() > 0) { + plasmaSwitchboardQueue.Entry pcentry = (plasmaSwitchboardQueue.Entry) entryList.get(0); + currentURL = pcentry.url().toString(); + } + + outputWriter.println(currentURL); + } else if (line.equals("CONTINUECRAWLING")) { + if (sb.crawlingIsPaused()) { + crawlingStarted = true; + sb.continueCrawling(); + } + } else if (line.equals("EXIT")) { + outputWriter.println("OK"); + outputWriter.flush(); + return null; + } else { + outputWriter.println("Unknown command"); + } + outputWriter.flush(); + } + + return null; + } catch (Exception e) { + return null; + } finally { + if (crawlingStarted) { + sb.pauseCrawling(); + } + } + } + +}