package lucee.runtime.net.http.sni;
import java.io.IOException;
import java.net.Socket;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.protocol.HttpContext;
public class SSLConnectionSocketFactoryImpl extends SSLConnectionSocketFactory {
public static final String ENABLE_SNI = "*.disable.sni";
/*
* Implement any constructor you need for your particular application -
* SSLConnectionSocketFactory has many variants
*/
public SSLConnectionSocketFactoryImpl(final SSLContext sslContext, final HostnameVerifier verifier) {
super(sslContext, verifier);
}
public SSLConnectionSocketFactoryImpl(final SSLContext sslContext) {
super(sslContext);
}
@Override
public Socket createLayeredSocket(
final Socket socket,
final String target,
final int port,
final HttpContext context) throws IOException {
Boolean enableSniValue = (Boolean) context.getAttribute(ENABLE_SNI);
boolean enableSni = enableSniValue == null || enableSniValue;
return super.createLayeredSocket(socket, enableSni ? target : ENABLE_SNI, port, context);
}
}