/**
*
*/
package com.taobao.jetty.apr;
import java.io.IOException;
import org.eclipse.jetty.ajp.Ajp13Connection;
import org.eclipse.jetty.ajp.Ajp13Packet;
import org.eclipse.jetty.ajp.Ajp13Request;
import org.eclipse.jetty.http.HttpSchemes;
import org.eclipse.jetty.io.Connection;
import org.eclipse.jetty.io.EndPoint;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.util.log.Log;
/**
* @author lovingprince
*
*/
public class Ajp13AprSocketConnector extends AprSocketConnector {
static String __secretWord = null;
static boolean __allowShutdown = false;
public Ajp13AprSocketConnector() {
super.setRequestHeaderSize(Ajp13Packet.MAX_PACKET_SIZE);
super.setResponseHeaderSize(Ajp13Packet.MAX_PACKET_SIZE);
super.setRequestBufferSize(Ajp13Packet.MAX_PACKET_SIZE);
super.setResponseBufferSize(Ajp13Packet.MAX_PACKET_SIZE);
// IN AJP protocol the socket stay open, so
// by default the time out is set to -1 seconds
super.setMaxIdleTime(-1);
}
@Override
protected void doStart() throws Exception {
super.doStart();
Log.info("AJP13 is not a secure protocol. Please protect port {}",
Integer.toString(getLocalPort()));
}
/* ------------------------------------------------------------ */
/*
* (non-Javadoc)
*
* @see
* org.eclipse.jetty.server.bio.SocketConnector#customize(org.eclipse.io
* .EndPoint, org.eclipse.jetty.server.Request)
*/
@Override
public void customize(EndPoint endpoint, Request request)
throws IOException {
super.customize(endpoint, request);
if (request.isSecure())
request.setScheme(HttpSchemes.HTTPS);
}
/* ------------------------------------------------------------ */
@Override
protected Connection newConnection(EndPoint endpoint) {
return new Ajp13Connection(this, endpoint, getServer());
}
/* ------------------------------------------------------------ */
// Secured on a packet by packet bases not by connection
@Override
public boolean isConfidential(Request request) {
return ((Ajp13Request) request).isSslSecure();
}
/* ------------------------------------------------------------ */
// Secured on a packet by packet bases not by connection
@Override
public boolean isIntegral(Request request) {
return ((Ajp13Request) request).isSslSecure();
}
/* ------------------------------------------------------------ */
@Deprecated
public void setHeaderBufferSize(int headerBufferSize) {
Log.debug(Log.IGNORED);
}
/* ------------------------------------------------------------ */
@Override
public void setRequestBufferSize(int requestBufferSize) {
Log.debug(Log.IGNORED);
}
/* ------------------------------------------------------------ */
@Override
public void setResponseBufferSize(int responseBufferSize) {
Log.debug(Log.IGNORED);
}
/* ------------------------------------------------------------ */
public void setAllowShutdown(boolean allowShutdown) {
Log.warn("AJP13: Shutdown Request is: " + allowShutdown);
__allowShutdown = allowShutdown;
}
/* ------------------------------------------------------------ */
public void setSecretWord(String secretWord) {
Log.warn("AJP13: Shutdown Request secret word is : " + secretWord);
__secretWord = secretWord;
}
}