*/
@Override
protected ServerSocket newServerSocket(String host, int port, int backlog) throws IOException {
System.err.println("Creating new KrbServerSocket for: " + host);
logIfDebug("Creating new KrbServerSocket for: " + host);
SSLServerSocket ss = null;
if (useCerts) // Get the server socket from the SSL super impl
ss = (SSLServerSocket) super.newServerSocket(host, port, backlog);
else { // Create a default server socket
try {
ss = (SSLServerSocket) super.newServerSocket(host, port, backlog);
} catch (Exception e) {
LOG.warn("Could not create KRB5 Listener", e);
throw new IOException("Could not create KRB5 Listener: " + e.toString());
}
}
// Add Kerberos ciphers to this socket server if needed.
if (useKrb) {
ss.setNeedClientAuth(true);
String[] combined;
if (useCerts) { // combine the cipher suites
String[] certs = ss.getEnabledCipherSuites();
combined = new String[certs.length + KRB5_CIPHER_SUITES.size()];
System.arraycopy(certs, 0, combined, 0, certs.length);
System.arraycopy(KRB5_CIPHER_SUITES.toArray(new String[0]), 0, combined, certs.length, KRB5_CIPHER_SUITES.size());
} else { // Just enable Kerberos auth
combined = KRB5_CIPHER_SUITES.toArray(new String[0]);
}
ss.setEnabledCipherSuites(combined);
}
System.err.println("New socket created");
return ss;
};