// compare_yacy.java // (C) 2008 by Marc Nause // first published 13.09.2008 on http://yacy.net // // This is a part of YaCy, a peer-to-peer based web search engine // // $LastChangedDate$ // $LastChangedRevision$ // $LastChangedBy$ // // LICENSE // // 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.util.LinkedHashMap; import java.util.Map; import net.yacy.cora.protocol.RequestHeader; import net.yacy.search.Switchboard; import net.yacy.server.serverObjects; import net.yacy.server.serverSwitch; import net.yacy.server.servletProperties; public class compare_yacy { public static final String defaultsearchL = "YaCy"; public static final String defaultsearchR = "startpage.com"; private static final Map searchengines = new LinkedHashMap(); static { searchengines.put(defaultsearchL, "yacysearch.html?display=2&resource=global&query="); searchengines.put("YaCy (local)", "yacysearch.html?display=2&resource=local&query="); //searchengines.put("google.com", "https://www.google.com/#q="); searchengines.put("startpage.com", "https://startpage.com/do/search?cat=web&query="); searchengines.put("bing.com", "https://www.bing.com/search?q="); searchengines.put("metager.de", "https://metager.de/meta/meta.ger3?eingabe="); // see https://gitlab.metager.de/open-source/MetaGer/-/blob/development/resources/lang/de/help/help-functions.php#L37 //searchengines.put("yahoo.com", "https://search.yahoo.com/search?p="); // no search service in iframe 2016-08-17 : "Load denied by X-Frame-Options: does not permit cross-origin framing." //searchengines.put("romso.de", "http://romso.de/?q="); // no search service 2016-01-02 searchengines.put("Wikipedia English", "https://en.wikipedia.org/wiki/"); searchengines.put("Wikipedia Deutsch", "https://de.wikipedia.org/wiki/"); //searchengines.put("Sciencenet", "http://sciencenet.fzk.de:8080/yacysearch.html?verify=true&resource=global&nav=all&display=2&meanCount=5&query="); // no search service 2016-08-17 //searchengines.put("dbpedia", "http://dbpedia.neofonie.de/browse/~:"); // no search service 2016-01-02 searchengines.put("wolfram alpha", "https://www.wolframalpha.com/input/?i="); searchengines.put("OAIster@OCLC", "https://oaister.worldcat.org/search?q="); //searchengines.put("oai.yacy.net", "http://oai.yacy.net/yacysearch.html?verify=true&resource=local&nav=all&display=2&meanCount=5&query="); // no search service 2016-08-17 } public static serverObjects respond(final RequestHeader header, final serverObjects post, final serverSwitch env) { final Switchboard sb = (Switchboard) env; final boolean authenticated = sb.adminAuthenticated(header) >= 2; final int display = ((post == null) || (!authenticated)) ? 0 : post.getInt("display", 0); final servletProperties prop = new servletProperties(); prop.put("display", display); String default_left = sb.getConfig("compare_yacy.left", defaultsearchL); if (!searchengines.containsKey(default_left)) default_left = defaultsearchL; String default_right = sb.getConfig("compare_yacy.right", defaultsearchR); if (!searchengines.containsKey(default_right)) default_right = defaultsearchR; if (post != null) { if (searchengines.get(post.get("left", default_left)) != null) { default_left = post.get("left", default_left); sb.setConfig("compare_yacy.left", default_left); } if (searchengines.get(post.get("right", default_right)) != null) { default_right = post.get("right", default_right); sb.setConfig("compare_yacy.right", default_right); } } prop.put("searchengines", searchengines.size()); int i = 0; for (String name: searchengines.keySet()) { prop.putHTML("searchengines_" + i + "_searchengine", name); prop.put("searchengines_" + i + "_leftengine", name.equals(default_left) ? 1 : 0); prop.put("searchengines_" + i + "_rightengine", name.equals(default_right) ? 1 : 0); i++; } prop.putHTML("search_left", searchengines.get(default_left)); prop.putHTML("search_right", searchengines.get(default_right)); if (post == null || post.get("query", "").isEmpty()) { prop.put("search", 0); prop.put("search_query", ""); return prop; } prop.put("search", 1); prop.putHTML("search_query", post.get("query", "")); // return rewrite properties return prop; } }