mirror of
https://github.com/yacy/yacy_search_server.git
synced 2024-09-19 00:01:41 +02:00
Switched even more URLs to pure relative ones.
Thus a YaCy peer can run behind a reverse proxy subfolder without need for the reverse proxy to rewrite HTML links (a CPU costly operation). Tested on Debian Jessie with an apache2 reverse proxy. See related mantis issues http://mantis.tokeek.de/view.php?id=106 and http://mantis.tokeek.de/view.php?id=701
This commit is contained in:
parent
042c2868df
commit
7296e3884f
|
@ -289,8 +289,8 @@ promoteSearchPageGreeting.useNetworkName = false
|
|||
# the following attributes can be used to define a custom image, alternative text and home page on the search page
|
||||
promoteSearchPageGreeting.homepage = http://yacy.net
|
||||
promoteSearchPageGreeting.imageAlt = YaCy project web site
|
||||
promoteSearchPageGreeting.largeImage = /env/grafics/YaCyLogo_120ppi.png
|
||||
promoteSearchPageGreeting.smallImage = /env/grafics/YaCyLogo_60ppi.png
|
||||
promoteSearchPageGreeting.largeImage = env/grafics/YaCyLogo_120ppi.png
|
||||
promoteSearchPageGreeting.smallImage = env/grafics/YaCyLogo_60ppi.png
|
||||
|
||||
# the path to the public reverse word index for text files (web pages)
|
||||
# the primary path is relative to the data root, the secondary path is an absolute path
|
||||
|
@ -1149,7 +1149,7 @@ content.phpbb3.dumpfile =
|
|||
# search engine teaser: an about box in search results
|
||||
# this is only shown, if the about.body is filled
|
||||
about.headline=Please support YaCy!
|
||||
about.body=<iframe src="env/donate.html" width="100%" height="90" border="0" frameborder="0" scrolling="no" hspace="0" vspace="0" name="donate"></iframe><br/><div style="padding:8px;">If you run a YaCy server, feel free to replace our donation plea with your own support message, use the <a href="/ConfigPortal.html">Portal Configuration</a> servlet.</div>
|
||||
about.body=<iframe src="env/donate.html" width="100%" height="90" border="0" frameborder="0" scrolling="no" hspace="0" vspace="0" name="donate"></iframe><br/><div style="padding:8px;">If you run a YaCy server, feel free to replace our donation plea with your own support message, use the <a href="ConfigPortal.html">Portal Configuration</a> servlet.</div>
|
||||
|
||||
donation.iframesource=http://yacy.net/include/donate.html
|
||||
donation.iframetarget=env/donate.html
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
#(forwardToConfigBasic)#::<meta http-equiv="REFRESH" content="0; url=/ConfigBasic.html" />#(/forwardToConfigBasic)#
|
||||
#(forwardToConfigBasic)#::<meta http-equiv="REFRESH" content="0; url=ConfigBasic.html" />#(/forwardToConfigBasic)#
|
||||
<title>YaCy '#[clientname]#': Console Status</title>
|
||||
#%env/templates/metas.template%#
|
||||
<script type="text/javascript">
|
||||
|
|
2
htroot/env/templates/embeddedheader.template
vendored
2
htroot/env/templates/embeddedheader.template
vendored
|
@ -3,7 +3,7 @@
|
|||
<div class="container-fluid">
|
||||
<div class="navbar-header">
|
||||
<a class="navbar-brand" id="navbar-brand" href="#[promoteSearchPageGreeting.homepage]#" style="position:absolute;top:-6px;display:inline;white-space:nowrap;">
|
||||
<img id="greeting-icon" class="yacylogo" src="#[promoteSearchPageGreeting.smallImage]#" alt="#[promoteSearchPageGreeting.imageAlt]#" style="height:auto; width:auto; max-width:200px; max-height:32px;vertical-align:middle"> <span id="greeting"></span>
|
||||
<img id="greeting-icon" class="yacylogo" src="#[relativeBase]##[promoteSearchPageGreeting.smallImage]#" alt="#[promoteSearchPageGreeting.imageAlt]#" style="height:auto; width:auto; max-width:200px; max-height:32px;vertical-align:middle"> <span id="greeting"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
4
htroot/env/templates/header.template
vendored
4
htroot/env/templates/header.template
vendored
|
@ -8,8 +8,8 @@
|
|||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" id="navbar-brand" href="/" style="position:absolute;top:-6px;display:inline;white-space:nowrap;">
|
||||
<img id="greeting-icon" class="yacylogo" src="/env/grafics/yacy.png" alt="YaCy" style="height:auto; width:auto; max-width:200px; max-height:32px;vertical-align:middle;float:left;">
|
||||
<a class="navbar-brand" id="navbar-brand" href="./" style="position:absolute;top:-6px;display:inline;white-space:nowrap;">
|
||||
<img id="greeting-icon" class="yacylogo" src="env/grafics/yacy.png" alt="YaCy" style="height:auto; width:auto; max-width:200px; max-height:32px;vertical-align:middle;float:left;">
|
||||
<span style="position:absolute;top:50%;float:left;"> Administration</span>
|
||||
</a>
|
||||
<form class="navbar-form" method="get" accept-charset="UTF-8" action="yacysearch.html" style="padding-left:200px;max-width:400px;">
|
||||
|
|
28
htroot/env/templates/metas.template
vendored
28
htroot/env/templates/metas.template
vendored
|
@ -1,5 +1,5 @@
|
|||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
|
||||
<link rel="shortcut icon" type="image/x-icon" href="#[relativeBase]#favicon.ico" />
|
||||
<meta name="Content-Language" content="English, Englisch" />
|
||||
<meta name="keywords" content="YaCy HTTP search engine spider indexer java network open free download Mac Windows Linux Software development" />
|
||||
<meta name="description" content="Software HTTP Freeware Home Page" />
|
||||
|
@ -9,8 +9,8 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<!-- Bootstrap core CSS -->
|
||||
<link href="/env/bootstrap/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="/env/bootstrap/css/bootstrap-switch.min.css" rel="stylesheet">
|
||||
<link href="#[relativeBase]#env/bootstrap/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="#[relativeBase]#env/bootstrap/css/bootstrap-switch.min.css" rel="stylesheet">
|
||||
|
||||
<script>
|
||||
/*
|
||||
|
@ -40,29 +40,29 @@ for the JavaScript code in this page.
|
|||
*/
|
||||
</script>
|
||||
|
||||
<script src="/env/bootstrap/js/jquery.min.js"></script>
|
||||
<script src="/env/bootstrap/js/bootstrap.min.js"></script>
|
||||
<script src="/env/bootstrap/js/bootstrap-switch.min.js"></script>
|
||||
<script src="#[relativeBase]#env/bootstrap/js/jquery.min.js"></script>
|
||||
<script src="#[relativeBase]#env/bootstrap/js/bootstrap.min.js"></script>
|
||||
<script src="#[relativeBase]#env/bootstrap/js/bootstrap-switch.min.js"></script>
|
||||
|
||||
<!-- Custom styles for this template, i.e. navigation (move this to base.css) -->
|
||||
<link href="/env/bootstrap-base.css" rel="stylesheet">
|
||||
<link href="#[relativeBase]#env/bootstrap-base.css" rel="stylesheet">
|
||||
|
||||
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="/env/bootstrap/js/html5shiv.js"></script>
|
||||
<script src="/env/bootstrap/js/respond.min.js"></script>
|
||||
<script src="#[relativeBase]#env/bootstrap/js/html5shiv.js"></script>
|
||||
<script src="#[relativeBase]#env/bootstrap/js/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
<!-- old css styles -->
|
||||
<link rel="stylesheet" type="text/css" media="all" href="/env/base.css" />
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="/env/style.css" />
|
||||
<link rel="stylesheet" type="text/css" media="all" href="#[relativeBase]#env/base.css" />
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="#[relativeBase]#env/style.css" />
|
||||
<!--[if lt IE 6]>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="/env/oldie.css" />
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="#[relativeBase]#env/oldie.css" />
|
||||
<![endif]-->
|
||||
<!--[if lte IE 6.0]>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="/env/ie6.css" />
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="#[relativeBase]#env/ie6.css" />
|
||||
<![endif]-->
|
||||
<!--[if lte IE 7.0]>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="/env/ie7.css" />
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="#[relativeBase]#env/ie7.css" />
|
||||
<![endif]-->
|
||||
<!-- (C), Architecture: Michael Peter Christen; Contact: mc <at> yacy.net -->
|
||||
|
|
10
htroot/env/templates/simpleheader.template
vendored
10
htroot/env/templates/simpleheader.template
vendored
|
@ -27,11 +27,11 @@
|
|||
<li> <i>Example Calls to the Search API:</i></li>
|
||||
<li><a href="yacysearch.json?query=www" target="_blank"><i>API</i> YaCy JSON</a></li>
|
||||
<li><a href="yacysearch.rss?query=www" target="_blank"><i>API</i> YaCy RSS/Opensearch</a></li>
|
||||
<li><a href="/solr/select?hl=false&wt=opensearch&facet=true&facet.mincount=1&facet.field=url_file_ext_s&start=0&rows=10&sort=load_date_dt+desc&q=description_txt:%5B*%20TO%20*%5D" target="_blank"><i>API</i> Solr RSS/Opensearch</a></li>
|
||||
<li><a href="/solr/select?hl=false&wt=yjson&facet=true&facet.mincount=1&facet.field=url_file_ext_s&start=0&rows=10&query=www" target="_blank"><i>API</i> Solr Default Core / JSON</a></li>
|
||||
<li><a href="/solr/collection1/select?q=*:*&defType=edismax&start=0&rows=3" target="_blank"><i>API</i> Solr Default Core / XML</a></li>
|
||||
<li><a href="/solr/webgraph/select?q=*:*&defType=edismax&start=0&rows=3" target="_blank"><i>API</i> Solr Webgraph Core / XML</a></li>
|
||||
<li><a href="/gsa/search?q=www&num=3" target="_blank"><i>API</i> Google Appliance API / XML</a></li>
|
||||
<li><a href="solr/select?hl=false&wt=opensearch&facet=true&facet.mincount=1&facet.field=url_file_ext_s&start=0&rows=10&sort=load_date_dt+desc&q=description_txt:%5B*%20TO%20*%5D" target="_blank"><i>API</i> Solr RSS/Opensearch</a></li>
|
||||
<li><a href="solr/select?hl=false&wt=yjson&facet=true&facet.mincount=1&facet.field=url_file_ext_s&start=0&rows=10&query=www" target="_blank"><i>API</i> Solr Default Core / JSON</a></li>
|
||||
<li><a href="solr/collection1/select?q=*:*&defType=edismax&start=0&rows=3" target="_blank"><i>API</i> Solr Default Core / XML</a></li>
|
||||
<li><a href="solr/webgraph/select?q=*:*&defType=edismax&start=0&rows=3" target="_blank"><i>API</i> Solr Webgraph Core / XML</a></li>
|
||||
<li><a href="gsa/search?q=www&num=3" target="_blank"><i>API</i> Google Appliance API / XML</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li id="header_help" class="dropdown">
|
||||
|
|
|
@ -121,35 +121,35 @@ public class HTMLResponseWriter implements QueryResponseWriter {
|
|||
//writer.write("<link rel=\"transformation\" href=\"http://www-sop.inria.fr/acacia/soft/RDFa2RDFXML.xsl\"/>\n");
|
||||
|
||||
writer.write("<!-- Bootstrap core CSS -->\n");
|
||||
writer.write("<link href=\"/env/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\">\n");
|
||||
writer.write("<link href=\"/env/bootstrap/css/bootstrap-switch.min.css\" rel=\"stylesheet\">\n");
|
||||
//writer.write("<script src=\"/env/bootstrap/js/jquery.min.js\"></script>\n");
|
||||
//writer.write("<script src=\"/env/bootstrap/js/bootstrap.min.js\"></script>\n");
|
||||
//writer.write("<script src=\"/env/bootstrap/js/bootstrap-switch.min.js\"></script>\n");
|
||||
writer.write("<link href=\"../env/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\">\n");
|
||||
writer.write("<link href=\"../env/bootstrap/css/bootstrap-switch.min.css\" rel=\"stylesheet\">\n");
|
||||
//writer.write("<script src=\"../env/bootstrap/js/jquery.min.js\"></script>\n");
|
||||
//writer.write("<script src=\"../env/bootstrap/js/bootstrap.min.js\"></script>\n");
|
||||
//writer.write("<script src=\"../env/bootstrap/js/bootstrap-switch.min.js\"></script>\n");
|
||||
writer.write("<!-- Custom styles for this template, i.e. navigation (move this to base.css) -->\n");
|
||||
writer.write("<link href=\"/env/bootstrap-base.css\" rel=\"stylesheet\">\n");
|
||||
writer.write("<link href=\"../env/bootstrap-base.css\" rel=\"stylesheet\">\n");
|
||||
//writer.write("<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->\n");
|
||||
//writer.write("<!--[if lt IE 9]>\n");
|
||||
//writer.write(" <script src=\"/env/bootstrap/js/html5shiv.js\"></script>\n");
|
||||
//writer.write(" <script src=\"/env/bootstrap/js/respond.min.js\"></script>\n");
|
||||
//writer.write(" <script src=\"../env/bootstrap/js/html5shiv.js\"></script>\n");
|
||||
//writer.write(" <script src=\"../env/bootstrap/js/respond.min.js\"></script>\n");
|
||||
//writer.write("<![endif]-->\n");
|
||||
writer.write("<!-- old css styles -->\n");
|
||||
writer.write("<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"/env/base.css\" />\n");
|
||||
writer.write("<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"/env/style.css\" />\n");
|
||||
writer.write("<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"../env/base.css\" />\n");
|
||||
writer.write("<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"../env/style.css\" />\n");
|
||||
writer.write("<!--[if lt IE 6]>\n");
|
||||
writer.write(" <link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"/env/oldie.css\" />\n");
|
||||
writer.write(" <link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"../env/oldie.css\" />\n");
|
||||
writer.write("<![endif]-->\n");
|
||||
writer.write("<!--[if lte IE 6.0]>\n");
|
||||
writer.write(" <link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"/env/ie6.css\" />\n");
|
||||
writer.write(" <link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"../env/ie6.css\" />\n");
|
||||
writer.write("<![endif]-->\n");
|
||||
writer.write("<!--[if lte IE 7.0]>\n");
|
||||
writer.write(" <link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"/env/ie7.css\" />\n");
|
||||
writer.write(" <link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"../env/ie7.css\" />\n");
|
||||
writer.write("<![endif]-->\n");
|
||||
writer.write("<!-- (C), Architecture: Michael Peter Christen; Contact: mc <at> yacy.net -->\n");
|
||||
|
||||
NamedList<Object> paramsList = request.getOriginalParams().toNamedList();
|
||||
paramsList.remove("wt");
|
||||
String xmlquery = dqp.matcher("/solr/select?" + SolrParams.toSolrParams(paramsList).toString()).replaceAll("%22");
|
||||
String xmlquery = dqp.matcher("../solr/select?" + SolrParams.toSolrParams(paramsList).toString()).replaceAll("%22");
|
||||
|
||||
DocList response = ((ResultContext) values.get("response")).docs;
|
||||
final int sz = response.size();
|
||||
|
@ -194,7 +194,7 @@ public class HTMLResponseWriter implements QueryResponseWriter {
|
|||
|
||||
// add a link to re-crawl this url (in case it is a remote metadata only entry)
|
||||
String sku = tdoc.get(CollectionSchema.sku.getSolrFieldName());
|
||||
final String jsc= "javascript:w = window.open('/QuickCrawlLink_p.html?indexText=on&indexMedia=on&crawlingQ=on&followFrames=on&obeyHtmlRobotsNoindex=on&obeyHtmlRobotsNofollow=off&xdstopw=on&title='+escape('"+title+"')+'&url='+escape('"+sku+"'),'_blank','height=250,width=600,resizable=yes,scrollbar=no,directory=no,menubar=no,location=no');w.focus();";
|
||||
final String jsc= "javascript:w = window.open('../QuickCrawlLink_p.html?indexText=on&indexMedia=on&crawlingQ=on&followFrames=on&obeyHtmlRobotsNoindex=on&obeyHtmlRobotsNofollow=off&xdstopw=on&title='+escape('"+title+"')+'&url='+escape('"+sku+"'),'_blank','height=250,width=600,resizable=yes,scrollbar=no,directory=no,menubar=no,location=no');w.focus();";
|
||||
writer.write("<div class='btn btn-default btn-sm' style='float:right' onclick=\""+jsc+"\">re-crawl url</div>\n");
|
||||
|
||||
writer.write("<h1 property=\"dc:Title\">" + title + "</h1>\n");
|
||||
|
|
|
@ -1064,6 +1064,7 @@ public class YaCyDefaultServlet extends HttpServlet {
|
|||
templatePatterns.putHTML(servletProperties.PEER_STAT_CLIENTNAME, sb.peers.mySeed().getName());
|
||||
templatePatterns.putHTML(servletProperties.PEER_STAT_CLIENTID, sb.peers.myID());
|
||||
templatePatterns.put(servletProperties.PEER_STAT_MYTIME, GenericFormatter.SHORT_SECOND_FORMATTER.format());
|
||||
templatePatterns.put(servletProperties.RELATIVE_BASE, YaCyDefaultServlet.getRelativeBase(target));
|
||||
Seed myPeer = sb.peers.mySeed();
|
||||
templatePatterns.put("newpeer", myPeer.getAge() >= 1 ? 0 : 1);
|
||||
templatePatterns.putHTML("newpeer_peerhash", myPeer.hash);
|
||||
|
@ -1117,6 +1118,30 @@ public class YaCyDefaultServlet extends HttpServlet {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the relative path prefix necessary to reach htroot from the deepest level of targetPath.<br>
|
||||
* Example : targetPath="api/citation.html" returns "../"
|
||||
* targetPath is supposed to have been cleaned earlier from special chars such as "?", spaces, "//".
|
||||
* @param targetPath target path relative to htroot
|
||||
* @return the relative path prefix, eventually empty
|
||||
*/
|
||||
protected static String getRelativeBase(String targetPath) {
|
||||
StringBuilder relativeBase = new StringBuilder();
|
||||
if(targetPath != null) {
|
||||
/* Normalize target path : it is relative to htroot, starting with a slash or not */
|
||||
if(targetPath.startsWith("/")) {
|
||||
targetPath = targetPath.substring(1, targetPath.length());
|
||||
}
|
||||
|
||||
int slashIndex = targetPath.indexOf('/', 0);
|
||||
while(slashIndex >= 0) {
|
||||
relativeBase.append("../");
|
||||
slashIndex = targetPath.indexOf('/', slashIndex + 1);
|
||||
}
|
||||
}
|
||||
return relativeBase.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Eventually update response headers for image resources
|
||||
|
|
|
@ -32,6 +32,9 @@ public class servletProperties extends serverObjects {
|
|||
public static final String PEER_STAT_MYTIME = "mytime";
|
||||
public static final String PEER_STAT_CLIENTNAME = "clientname";
|
||||
public static final String PEER_STAT_CLIENTID = "clientid";
|
||||
/** Key of the relative path part from requested file to reach htroot, to be used in templates such as metas.template.
|
||||
* Example : target="api/citation.html" -> relativeBase="../" */
|
||||
public static final String RELATIVE_BASE = "relativeBase";
|
||||
|
||||
private String prefix="";
|
||||
|
||||
|
|
|
@ -116,5 +116,26 @@ public class YaCyDefaultServletTest {
|
|||
assertEquals("http://myhost.com:8090", YaCyDefaultServlet.getContext(header, null));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests on getRelativeBase()
|
||||
*/
|
||||
@Test
|
||||
public void testGetRelativeBase() {
|
||||
assertEquals("", YaCyDefaultServlet.getRelativeBase(null));
|
||||
assertEquals("", YaCyDefaultServlet.getRelativeBase(""));
|
||||
assertEquals("", YaCyDefaultServlet.getRelativeBase("/"));
|
||||
assertEquals("", YaCyDefaultServlet.getRelativeBase("/file.html"));
|
||||
assertEquals("", YaCyDefaultServlet.getRelativeBase("file.html"));
|
||||
assertEquals("", YaCyDefaultServlet.getRelativeBase("resource"));
|
||||
assertEquals("../", YaCyDefaultServlet.getRelativeBase("folder/file.html"));
|
||||
assertEquals("../", YaCyDefaultServlet.getRelativeBase("folder/resource"));
|
||||
assertEquals("../", YaCyDefaultServlet.getRelativeBase("/folder/resource"));
|
||||
assertEquals("../", YaCyDefaultServlet.getRelativeBase("a/b"));
|
||||
assertEquals("../../", YaCyDefaultServlet.getRelativeBase("folder/subfolder/resource"));
|
||||
assertEquals("../../", YaCyDefaultServlet.getRelativeBase("/folder/subfolder/resource"));
|
||||
assertEquals("../", YaCyDefaultServlet.getRelativeBase("folder/"));
|
||||
assertEquals("../../", YaCyDefaultServlet.getRelativeBase("folder/subfolder/"));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user