2008-09-15 11:17:05 +02:00
// 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
//
2009-09-27 00:07:40 +02:00
// $LastChangedDate$
// $LastChangedRevision$
// $LastChangedBy$
2008-09-15 11:17:05 +02:00
//
// LICENSE
2011-11-22 01:03:20 +01:00
//
2008-09-15 11:17:05 +02:00
// 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
2013-10-26 00:33:36 +02:00
import java.util.LinkedHashMap ;
2008-09-15 11:17:05 +02:00
import java.util.Map ;
2010-08-23 14:32:02 +02:00
import net.yacy.cora.protocol.RequestHeader ;
2011-09-25 18:59:06 +02:00
import net.yacy.search.Switchboard ;
2012-09-21 15:48:16 +02:00
import net.yacy.server.serverObjects ;
import net.yacy.server.serverSwitch ;
import net.yacy.server.servletProperties ;
2010-08-23 14:32:02 +02:00
2008-09-15 11:17:05 +02:00
public class compare_yacy {
2011-11-22 01:03:20 +01:00
2013-10-26 00:33:36 +02:00
public static final String defaultsearchL = " YaCy " ;
public static final String defaultsearchR = " startpage.com " ;
private static final Map < String , String > searchengines = new LinkedHashMap < String , String > ( ) ;
2008-09-15 11:17:05 +02:00
static {
2011-11-22 01:03:20 +01:00
searchengines . put ( defaultsearchL , " yacysearch.html?display=2&resource=global&query= " ) ;
searchengines . put ( " YaCy (local) " , " yacysearch.html?display=2&resource=local&query= " ) ;
2013-10-26 00:33:36 +02:00
//searchengines.put("google.com", "https://www.google.com/#q=");
searchengines . put ( " startpage.com " , " https://startpage.com/do/search?cat=web&query= " ) ;
2016-08-17 16:13:46 +02:00
searchengines . put ( " bing.com " , " https://www.bing.com/search?q= " ) ;
searchengines . put ( " metager.de " , " https://www.metager.de/meta/cgi-bin/meta.ger1?eingabe= " ) ;
searchengines . put ( " metager2.de (web) " , " https://www.metager2.de/search.php?ses=web&q= " ) ;
searchengines . put ( " metager2.de (international) " , " https://www.metager2.de/search.php?ses=international&q= " ) ;
//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
2016-02-04 00:47:42 +01:00
//searchengines.put("dbpedia", "http://dbpedia.neofonie.de/browse/~:"); // no search service 2016-01-02
2016-08-17 16:13:46 +02:00
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
2008-09-15 11:17:05 +02:00
}
2011-11-22 01:03:20 +01:00
2009-07-19 22:37:44 +02:00
public static serverObjects respond ( final RequestHeader header , final serverObjects post , final serverSwitch env ) {
final Switchboard sb = ( Switchboard ) env ;
2008-09-15 11:17:05 +02:00
final boolean authenticated = sb . adminAuthenticated ( header ) > = 2 ;
final int display = ( ( post = = null ) | | ( ! authenticated ) ) ? 0 : post . getInt ( " display " , 0 ) ;
final servletProperties prop = new servletProperties ( ) ;
2011-11-22 01:03:20 +01:00
2008-09-15 11:17:05 +02:00
prop . put ( " display " , display ) ;
2011-11-22 01:03:20 +01:00
String default_left = sb . getConfig ( " compare_yacy.left " , defaultsearchL ) ;
2011-11-23 16:17:46 +01:00
if ( ! searchengines . containsKey ( default_left ) ) default_left = defaultsearchL ;
2011-11-22 01:03:20 +01:00
String default_right = sb . getConfig ( " compare_yacy.right " , defaultsearchR ) ;
2011-11-23 16:17:46 +01:00
if ( ! searchengines . containsKey ( default_right ) ) default_right = defaultsearchR ;
2011-11-22 01:03:20 +01:00
2008-09-15 11:17:05 +02:00
if ( post ! = null ) {
2008-09-15 11:43:51 +02:00
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 ) ;
}
2008-09-15 11:17:05 +02:00
}
2011-11-22 01:03:20 +01:00
2013-10-26 00:33:36 +02:00
prop . put ( " searchengines " , searchengines . size ( ) ) ;
int i = 0 ;
for ( String name : searchengines . keySet ( ) ) {
2008-09-15 11:17:05 +02:00
prop . putHTML ( " searchengines_ " + i + " _searchengine " , name ) ;
2008-09-15 11:43:51 +02:00
prop . put ( " searchengines_ " + i + " _leftengine " , name . equals ( default_left ) ? 1 : 0 ) ;
prop . put ( " searchengines_ " + i + " _rightengine " , name . equals ( default_right ) ? 1 : 0 ) ;
2013-10-26 00:33:36 +02:00
i + + ;
2008-09-15 11:17:05 +02:00
}
2008-09-15 11:43:51 +02:00
prop . putHTML ( " search_left " , searchengines . get ( default_left ) ) ;
prop . putHTML ( " search_right " , searchengines . get ( default_right ) ) ;
2011-11-22 01:03:20 +01:00
2012-07-10 22:59:03 +02:00
if ( post = = null | | post . get ( " query " , " " ) . isEmpty ( ) ) {
2008-09-15 11:43:51 +02:00
prop . put ( " search " , 0 ) ;
prop . put ( " search_query " , " " ) ;
return prop ;
}
2011-11-22 01:03:20 +01:00
2008-09-15 11:43:51 +02:00
prop . put ( " search " , 1 ) ;
prop . putHTML ( " search_query " , post . get ( " query " , " " ) ) ;
2011-11-22 01:03:20 +01:00
2008-09-15 11:17:05 +02:00
// return rewrite properties
return prop ;
}
}