mirror of
https://github.com/yacy/yacy_search_server.git
synced 2024-09-19 00:01:41 +02:00
update to Jetty 9 jars
- include javax.servlet 3.0
This commit is contained in:
parent
bd71b14d25
commit
f7f86d8a5d
16
build.xml
16
build.xml
|
@ -161,13 +161,14 @@
|
|||
<path id="project.class.path">
|
||||
<pathelement location="${build}" />
|
||||
<pathelement location="${htroot}" />
|
||||
<pathelement location="${lib}/jetty-http-7.3.0.v20110203.jar" />
|
||||
<pathelement location="${lib}/jetty-io-7.3.0.v20110203.jar" />
|
||||
<pathelement location="${lib}/jetty-security-7.3.0.v20110203.jar" />
|
||||
<pathelement location="${lib}/jetty-server-7.3.0.v20110203.jar" />
|
||||
<pathelement location="${lib}/jetty-servlet-7.3.0.v20110203.jar" />
|
||||
<pathelement location="${lib}/jetty-servlets-7.3.0.v20110203.jar" />
|
||||
<pathelement location="${lib}/jetty-util-7.3.0.v20110203.jar" />
|
||||
<pathelement location="${lib}/jetty-http-9.0.5.v20130815.jar" />
|
||||
<pathelement location="${lib}/jetty-io-9.0.5.v20130815.jar" />
|
||||
<pathelement location="${lib}/jetty-security-9.0.5.v20130815.jar" />
|
||||
<pathelement location="${lib}/jetty-server-9.0.5.v20130815.jar" />
|
||||
<pathelement location="${lib}/jetty-servlet-9.0.5.v20130815.jar" />
|
||||
<pathelement location="${lib}/jetty-servlets-9.0.5.v20130815.jar" />
|
||||
<pathelement location="${lib}/jetty-util-9.0.5.v20130815.jar" />
|
||||
<pathelement location="${lib}/javax.servlet-3.0.0.v201112011016.jar" />
|
||||
<pathelement location="${lib}/activation.jar" />
|
||||
<pathelement location="${lib}/apache-mime4j-0.6.jar" />
|
||||
<pathelement location="${lib}/arq-2.8.7.jar" />
|
||||
|
@ -222,7 +223,6 @@
|
|||
<pathelement location="${lib}/poi-3.6-20091214.jar" />
|
||||
<pathelement location="${lib}/poi-scratchpad-3.6-20091214.jar" />
|
||||
<pathelement location="${lib}/sax-2.0.1.jar" />
|
||||
<pathelement location="${lib}/servlet-api-2.5-20081211.jar" />
|
||||
<pathelement location="${lib}/slf4j-api-1.7.2.jar" />
|
||||
<pathelement location="${lib}/slf4j-jdk14-1.7.2.jar" />
|
||||
<pathelement location="${lib}/solr-core-4.4.0.jar" />
|
||||
|
|
BIN
lib/javax.servlet-3.0.0.v201112011016.jar
Normal file
BIN
lib/javax.servlet-3.0.0.v201112011016.jar
Normal file
Binary file not shown.
Binary file not shown.
BIN
lib/jetty-continuation-9.0.5.v20130815.jar
Normal file
BIN
lib/jetty-continuation-9.0.5.v20130815.jar
Normal file
Binary file not shown.
Binary file not shown.
BIN
lib/jetty-http-9.0.5.v20130815.jar
Normal file
BIN
lib/jetty-http-9.0.5.v20130815.jar
Normal file
Binary file not shown.
Binary file not shown.
BIN
lib/jetty-io-9.0.5.v20130815.jar
Normal file
BIN
lib/jetty-io-9.0.5.v20130815.jar
Normal file
Binary file not shown.
Binary file not shown.
BIN
lib/jetty-security-9.0.5.v20130815.jar
Normal file
BIN
lib/jetty-security-9.0.5.v20130815.jar
Normal file
Binary file not shown.
Binary file not shown.
BIN
lib/jetty-server-9.0.5.v20130815.jar
Normal file
BIN
lib/jetty-server-9.0.5.v20130815.jar
Normal file
Binary file not shown.
Binary file not shown.
BIN
lib/jetty-servlet-9.0.5.v20130815.jar
Normal file
BIN
lib/jetty-servlet-9.0.5.v20130815.jar
Normal file
Binary file not shown.
Binary file not shown.
BIN
lib/jetty-servlets-9.0.5.v20130815.jar
Normal file
BIN
lib/jetty-servlets-9.0.5.v20130815.jar
Normal file
Binary file not shown.
Binary file not shown.
BIN
lib/jetty-util-9.0.5.v20130815.jar
Normal file
BIN
lib/jetty-util-9.0.5.v20130815.jar
Normal file
Binary file not shown.
Binary file not shown.
|
@ -1,202 +0,0 @@
|
|||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
|
@ -277,7 +277,7 @@ public class ContentScraper extends AbstractScraper implements Scraper {
|
|||
break location;
|
||||
}
|
||||
// find tags inside text
|
||||
String b = cleanLine(super.stripAllTags(newtext));
|
||||
String b = cleanLine(stripAllTags(newtext));
|
||||
if ((insideTag != null) && (!(insideTag.equals("a")))) {
|
||||
// texts inside tags sometimes have no punctuation at the line end
|
||||
// this is bad for the text semantics, because it is not possible for the
|
||||
|
|
|
@ -33,6 +33,7 @@ public class CrashProtectionHandler extends HandlerWrapper implements Handler, H
|
|||
} catch (Exception e) {
|
||||
// handle all we can
|
||||
writeResponse(request, response, e);
|
||||
baseRequest.setHandled(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -44,9 +45,5 @@ public class CrashProtectionHandler extends HandlerWrapper implements Handler, H
|
|||
exc.printStackTrace(out);
|
||||
response.setContentType("text/plain");
|
||||
response.setStatus(500);
|
||||
|
||||
// we handled this request, break out of handler chain
|
||||
Request base_request = (request instanceof Request) ? (Request)request:HttpConnection.getCurrentConnection().getRequest();
|
||||
base_request.setHandled(true);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,44 +26,42 @@ package net.yacy.http;
|
|||
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.SocketException;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import net.yacy.cora.util.ConcurrentLog;
|
||||
import net.yacy.search.Switchboard;
|
||||
|
||||
import org.eclipse.jetty.server.Handler;
|
||||
import org.eclipse.jetty.server.Server;
|
||||
import org.eclipse.jetty.server.ServerConnector;
|
||||
import org.eclipse.jetty.server.handler.ContextHandler;
|
||||
import org.eclipse.jetty.server.handler.DefaultHandler;
|
||||
import org.eclipse.jetty.server.handler.HandlerList;
|
||||
import org.eclipse.jetty.server.handler.ResourceHandler;
|
||||
import org.eclipse.jetty.server.nio.SelectChannelConnector;
|
||||
|
||||
/**
|
||||
* class to embedded jetty http server into YaCy
|
||||
*/
|
||||
public class HttpServer {
|
||||
|
||||
private Server server = new Server();
|
||||
private Server server;
|
||||
|
||||
/**
|
||||
* @param port TCP Port to listen for http requests
|
||||
*/
|
||||
public HttpServer(int port) {
|
||||
Switchboard sb = Switchboard.getSwitchboard();
|
||||
|
||||
SelectChannelConnector connector = new SelectChannelConnector();
|
||||
server = new Server();
|
||||
ServerConnector connector = new ServerConnector(server);
|
||||
connector.setPort(port);
|
||||
connector.setName("httpd:"+Integer.toString(port));
|
||||
//connector.setThreadPool(new QueuedThreadPool(20));
|
||||
server.addConnector(connector);
|
||||
|
||||
|
||||
YacyDomainHandler domainHandler = new YacyDomainHandler();
|
||||
domainHandler.setAlternativeResolver(sb.peers);
|
||||
|
||||
ResourceHandler resource_handler = new ResourceHandler();
|
||||
resource_handler.setDirectoriesListed(true);
|
||||
resource_handler.setWelcomeFiles(new String[]{"index.html"});
|
||||
|
||||
resource_handler.setResourceBase("htroot/");
|
||||
|
||||
HandlerList handlers = new HandlerList();
|
||||
|
@ -134,15 +132,7 @@ public class HttpServer {
|
|||
}
|
||||
|
||||
public int getJobCount() {
|
||||
return getMaxSessionCount()-server.getThreadPool().getIdleThreads(); // TODO:
|
||||
return getMaxSessionCount() - server.getThreadPool().getIdleThreads(); // TODO:
|
||||
}
|
||||
|
||||
/**
|
||||
* just for testing and debugging
|
||||
*/
|
||||
public static void main(String[] args) throws Exception {
|
||||
HttpServer server = new HttpServer(8090);
|
||||
server.start();
|
||||
server.stop();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,13 +22,12 @@
|
|||
// along with this program in the file lgpl21.txt
|
||||
// If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
|
||||
package net.yacy.http;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
|
@ -37,70 +36,63 @@ import net.yacy.cora.protocol.ResponseHeader;
|
|||
import net.yacy.kelondro.data.meta.DigestURI;
|
||||
|
||||
import org.eclipse.jetty.server.Handler;
|
||||
import org.eclipse.jetty.server.HttpConnection;
|
||||
import org.eclipse.jetty.server.Request;
|
||||
|
||||
import net.yacy.crawler.data.Cache;
|
||||
import net.yacy.crawler.retrieval.Response;
|
||||
|
||||
/**
|
||||
* jetty http handler
|
||||
* serves pages from cache if available and valid
|
||||
* jetty http handler serves pages from cache if available and valid
|
||||
*/
|
||||
public class ProxyCacheHandler extends AbstractRemoteHandler implements Handler {
|
||||
|
||||
|
||||
private void handleRequestFromCache(HttpServletRequest request, HttpServletResponse response, ResponseHeader cachedResponseHeader, byte[] content) throws IOException {
|
||||
System.err.println("handle from cache");
|
||||
// TODO: check if-modified
|
||||
for(Entry<String, String> entry: cachedResponseHeader.entrySet()) {
|
||||
response.addHeader(entry.getKey(), entry.getValue());
|
||||
}
|
||||
response.setStatus(HttpServletResponse.SC_NON_AUTHORITATIVE_INFORMATION);
|
||||
response.getOutputStream().write(content);
|
||||
private void handleRequestFromCache(HttpServletRequest request, HttpServletResponse response, ResponseHeader cachedResponseHeader, byte[] content) throws IOException {
|
||||
System.err.println("handle from cache");
|
||||
// TODO: check if-modified
|
||||
for (Entry<String, String> entry : cachedResponseHeader.entrySet()) {
|
||||
response.addHeader(entry.getKey(), entry.getValue());
|
||||
}
|
||||
response.setStatus(HttpServletResponse.SC_NON_AUTHORITATIVE_INFORMATION);
|
||||
response.getOutputStream().write(content);
|
||||
// we handled this request, break out of handler chain
|
||||
Request base_request = (request instanceof Request) ? (Request)request:HttpConnection.getCurrentConnection().getRequest();
|
||||
base_request.setHandled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleRemote(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
|
||||
if (request.getMethod().equals("GET")) {
|
||||
String queryString = request.getQueryString() != null ? "?" + request.getQueryString() : "";
|
||||
DigestURI url = new DigestURI(request.getRequestURL().toString() + queryString);
|
||||
ResponseHeader cachedResponseHeader = Cache.getResponseHeader(url.hash());
|
||||
|
||||
@Override
|
||||
public void handleRemote(String target, Request baseRequest,
|
||||
HttpServletRequest request, HttpServletResponse response)
|
||||
throws IOException, ServletException {
|
||||
if(request.getMethod().equals("GET")) {
|
||||
String queryString = request.getQueryString()!=null ? "?" + request.getQueryString() : "";
|
||||
DigestURI url = new DigestURI(request.getRequestURL().toString() + queryString);
|
||||
ResponseHeader cachedResponseHeader = Cache.getResponseHeader(url.hash());
|
||||
|
||||
if(cachedResponseHeader != null) {
|
||||
RequestHeader proxyHeaders = ProxyHandler.convertHeaderFromJetty(request);
|
||||
// TODO: this convertion is only necessary
|
||||
final net.yacy.crawler.retrieval.Request yacyRequest = new net.yacy.crawler.retrieval.Request(
|
||||
null,
|
||||
url,
|
||||
proxyHeaders.referer() == null ? null : new DigestURI(proxyHeaders.referer().toString()).hash(),
|
||||
"",
|
||||
if (cachedResponseHeader != null) {
|
||||
RequestHeader proxyHeaders = ProxyHandler.convertHeaderFromJetty(request);
|
||||
// TODO: this convertion is only necessary
|
||||
final net.yacy.crawler.retrieval.Request yacyRequest = new net.yacy.crawler.retrieval.Request(
|
||||
null,
|
||||
url,
|
||||
proxyHeaders.referer() == null ? null : new DigestURI(proxyHeaders.referer().toString()).hash(),
|
||||
"",
|
||||
cachedResponseHeader.lastModified(),
|
||||
sb.crawler.defaultProxyProfile.handle(),
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0);
|
||||
|
||||
final Response cachedResponse = new Response(
|
||||
yacyRequest,
|
||||
proxyHeaders,
|
||||
yacyRequest,
|
||||
proxyHeaders,
|
||||
cachedResponseHeader,
|
||||
sb.crawler.defaultProxyProfile,
|
||||
false
|
||||
);
|
||||
false);
|
||||
byte[] cacheContent = Cache.getContent(url.hash());
|
||||
if (cacheContent != null && cachedResponse.isFreshForProxy()) {
|
||||
handleRequestFromCache(request, response, cachedResponseHeader, cacheContent);
|
||||
handleRequestFromCache(request, response, cachedResponseHeader, cacheContent);
|
||||
baseRequest.setHandled(true);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -45,7 +45,6 @@ import net.yacy.kelondro.data.meta.DigestURI;
|
|||
import org.apache.http.Header;
|
||||
import org.apache.http.HttpResponse;
|
||||
import org.eclipse.jetty.server.Handler;
|
||||
import org.eclipse.jetty.server.HttpConnection;
|
||||
import org.eclipse.jetty.server.Request;
|
||||
|
||||
import net.yacy.crawler.data.Cache;
|
||||
|
@ -234,8 +233,7 @@ public class ProxyHandler extends AbstractRemoteHandler implements Handler {
|
|||
}
|
||||
|
||||
// we handled this request, break out of handler chain
|
||||
Request base_request = (request instanceof Request) ? (Request)request:HttpConnection.getCurrentConnection().getRequest();
|
||||
base_request.setHandled(true);
|
||||
baseRequest.setHandled(true);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -193,10 +193,8 @@ public class TemplateHandler extends AbstractHandler implements Handler {
|
|||
public void handle(String target, Request baseRequest, HttpServletRequest request,
|
||||
HttpServletResponse response) throws IOException, ServletException {
|
||||
Switchboard sb = Switchboard.getSwitchboard();
|
||||
|
||||
System.err.println("Page: " + target);
|
||||
|
||||
String localeSelection = "default";
|
||||
String localeSelection = Switchboard.getSwitchboard().getConfig("locale.language","default");
|
||||
File targetFile = getLocalizedFile(target, localeSelection);
|
||||
File targetClass = rewriteClassFile(new File(htDefaultPath, target));
|
||||
String targetExt = target.substring(target.lastIndexOf('.') + 1, target.length());
|
||||
|
|
|
@ -27,8 +27,8 @@ package net.yacy.http;
|
|||
import net.yacy.cora.order.Base64Order;
|
||||
import net.yacy.cora.order.Digest;
|
||||
import net.yacy.kelondro.util.MapTools;
|
||||
import org.eclipse.jetty.util.security.Credential;
|
||||
|
||||
import org.eclipse.jetty.http.security.Credential;
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
@ -31,10 +31,10 @@ import javax.security.auth.Subject;
|
|||
|
||||
import net.yacy.search.Switchboard;
|
||||
|
||||
import org.eclipse.jetty.http.security.Credential;
|
||||
import org.eclipse.jetty.security.IdentityService;
|
||||
import org.eclipse.jetty.security.MappedLoginService;
|
||||
import org.eclipse.jetty.server.UserIdentity;
|
||||
import org.eclipse.jetty.util.security.Credential;
|
||||
|
||||
/**
|
||||
* jetty login service, provides one admin user
|
||||
|
|
|
@ -30,6 +30,7 @@ import java.net.MalformedURLException;
|
|||
import net.yacy.cora.protocol.Domains;
|
||||
import net.yacy.kelondro.data.meta.DigestURI;
|
||||
import net.yacy.search.Switchboard;
|
||||
import org.eclipse.jetty.security.RoleInfo;
|
||||
|
||||
import org.eclipse.jetty.security.SecurityHandler;
|
||||
import org.eclipse.jetty.server.Request;
|
||||
|
@ -42,46 +43,50 @@ import org.eclipse.jetty.server.UserIdentity;
|
|||
*/
|
||||
public class YaCySecurityHandler extends SecurityHandler {
|
||||
|
||||
@Override
|
||||
protected boolean checkUserDataPermissions(String pathInContext, Request request,
|
||||
Response response, Object constraintInfo) throws IOException {
|
||||
// check the SecurityHandler code, denying here does not provide authentication
|
||||
return true;
|
||||
}
|
||||
@Override
|
||||
protected boolean checkUserDataPermissions(String pathInContext, Request request,
|
||||
Response response, RoleInfo constraintInfo) throws IOException {
|
||||
// check the SecurityHandler code, denying here does not provide authentication
|
||||
return constraintInfo.isChecked();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean checkWebResourcePermissions(String pathInContext, Request request,
|
||||
Response response, Object constraintInfo, UserIdentity userIdentity) throws IOException {
|
||||
// deny and request for authentication, if necessary
|
||||
Boolean authMand = (Boolean)constraintInfo;
|
||||
return !authMand || request.isUserInRole("admin");
|
||||
}
|
||||
@Override
|
||||
protected boolean checkWebResourcePermissions(String pathInContext, Request request,
|
||||
Response response, Object constraintInfo, UserIdentity userIdentity) throws IOException {
|
||||
// deny and request for authentication, if necessary
|
||||
boolean auth = ((RoleInfo) constraintInfo).isChecked();
|
||||
return auth || request.isUserInRole("admin");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isAuthMandatory(Request base_request, Response base_response, Object constraintInfo) {
|
||||
Boolean authMand = (Boolean)constraintInfo;
|
||||
return authMand;
|
||||
}
|
||||
@Override
|
||||
protected boolean isAuthMandatory(Request base_request, Response base_response, Object constraintInfo) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Object prepareConstraintInfo(String pathInContext, Request request) {
|
||||
final Switchboard sb = Switchboard.getSwitchboard();
|
||||
@Override
|
||||
protected RoleInfo prepareConstraintInfo(String pathInContext, Request request) {
|
||||
final Switchboard sb = Switchboard.getSwitchboard();
|
||||
final boolean adminAccountForLocalhost = sb.getConfigBool("adminAccountForLocalhost", false);
|
||||
final String adminAccountBase64MD5 = sb.getConfig(YaCyLegacyCredential.ADMIN_ACCOUNT_B64MD5, "");
|
||||
|
||||
String refererHost;
|
||||
try {
|
||||
refererHost = new DigestURI(request.getHeader("Referer")).getHost();
|
||||
} catch (MalformedURLException e) {
|
||||
refererHost = null;
|
||||
}
|
||||
try {
|
||||
refererHost = new DigestURI(request.getHeader("Referer")).getHost();
|
||||
} catch (MalformedURLException e) {
|
||||
refererHost = null;
|
||||
}
|
||||
final boolean accessFromLocalhost = Domains.isLocalhost(request.getRemoteHost()) && (refererHost == null || refererHost.length() == 0 || Domains.isLocalhost(refererHost));
|
||||
final boolean grantedForLocalhost = adminAccountForLocalhost && accessFromLocalhost;
|
||||
final boolean protectedPage = pathInContext.indexOf("_p.") > 0;
|
||||
final boolean accountEmpty = adminAccountBase64MD5.length() == 0;
|
||||
final boolean yacyBot = request.getHeader("User-Agent").startsWith("yacybot");
|
||||
|
||||
return protectedPage && ((!grantedForLocalhost && !accountEmpty) || yacyBot);
|
||||
}
|
||||
|
||||
RoleInfo roleinfo = new RoleInfo();
|
||||
if (protectedPage) { // TODO: handle admin authentication & none public site
|
||||
roleinfo.setChecked(((grantedForLocalhost && !accountEmpty) || yacyBot));
|
||||
} else {
|
||||
roleinfo.setChecked(true);
|
||||
}
|
||||
return roleinfo;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -331,7 +331,7 @@ public final class yacy {
|
|||
try {
|
||||
|
||||
// start jetty http server
|
||||
HttpServer httpServer = new HttpServer((int)port);
|
||||
HttpServer httpServer = new HttpServer(port);
|
||||
httpServer.start();
|
||||
//final HTTPDemon protocolHandler = new HTTPDemon(sb);
|
||||
//final serverCore server = new serverCore(
|
||||
|
|
|
@ -12,14 +12,13 @@ import org.apache.solr.common.SolrDocument;
|
|||
import org.apache.solr.common.SolrDocumentList;
|
||||
import org.apache.solr.common.SolrException;
|
||||
import org.apache.solr.common.SolrInputDocument;
|
||||
import org.eclipse.jetty.server.Server;
|
||||
import org.eclipse.jetty.servlet.FilterHolder;
|
||||
import org.eclipse.jetty.servlet.ServletContextHandler.Context;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import static org.junit.Assert.*;
|
||||
import org.mortbay.jetty.Handler;
|
||||
import org.mortbay.jetty.Server;
|
||||
import org.mortbay.jetty.servlet.Context;
|
||||
import org.mortbay.jetty.servlet.FilterHolder;
|
||||
|
||||
public class EmbeddedSolrConnectorTest {
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user