- add localpeername.yacy to list of local address detection for AbstractRemoteHandler

- use proxy via header info as in legacy proxy handler
pull/1/head
reger 11 years ago
parent 2226189743
commit 705f147820

@ -68,7 +68,10 @@ abstract public class AbstractRemoteHandler extends AbstractHandler implements H
localVirtualHostNames.add(localInetAddress.getCanonicalHostName());
}
}
localVirtualHostNames.add(sb.peers.mySeed().getIP());
if (sb.peers != null) {
localVirtualHostNames.add(sb.peers.mySeed().getIP());
localVirtualHostNames.add(sb.peers.myAlternativeAddress()); // add the "peername.yacy" address
}
}
abstract public void handleRemote(String target, Request baseRequest, HttpServletRequest request,

@ -36,6 +36,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.yacy.cora.document.id.DigestURL;
import net.yacy.cora.protocol.ClientIdentification;
import net.yacy.cora.protocol.HeaderFramework;
import net.yacy.cora.protocol.RequestHeader;
import net.yacy.cora.protocol.ResponseHeader;
@ -49,6 +50,7 @@ import org.eclipse.jetty.server.Request;
import net.yacy.crawler.data.Cache;
import net.yacy.crawler.retrieval.Response;
import net.yacy.peers.operation.yacyBuildProperties;
import net.yacy.server.http.MultiOutputStream;
/**
@ -89,7 +91,8 @@ public class ProxyHandler extends AbstractRemoteHandler implements Handler {
HttpServletResponse response) throws IOException, ServletException {
RequestHeader proxyHeaders = convertHeaderFromJetty(request);
proxyHeaders.add(RequestHeader.VIA, "YaCy");
final String httpVer = (String) request.getHeader(HeaderFramework.CONNECTION_PROP_HTTP_VER);
setViaHeader (proxyHeaders, httpVer);
proxyHeaders.remove(RequestHeader.KEEP_ALIVE);
proxyHeaders.remove(RequestHeader.CONTENT_LENGTH);
@ -235,6 +238,31 @@ public class ProxyHandler extends AbstractRemoteHandler implements Handler {
// we handled this request, break out of handler chain
baseRequest.setHandled(true);
}
private void setViaHeader(final HeaderFramework header, final String httpVer) {
if (!sb.getConfigBool("proxy.sendViaHeader", true)) return;
final String myAddress = (sb.peers == null) ? null : sb.peers.myAlternativeAddress();
if (myAddress != null) {
// getting header set by other proxies in the chain
final StringBuilder viaValue = new StringBuilder(80);
if (header.containsKey(HeaderFramework.VIA)) {
viaValue.append(header.get(HeaderFramework.VIA));
}
if (viaValue.length() > 0) {
viaValue.append(", ");
}
// appending info about this peer
viaValue
.append(httpVer).append(" ")
.append(myAddress).append(" ")
.append("(YaCy ").append(yacyBuildProperties.getVersion()).append(")");
// storing header back
header.put(HeaderFramework.VIA, viaValue.toString());
}
}
}

Loading…
Cancel
Save