All Downloads are FREE. Search and download functionalities are using the official Maven repository.
Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
org.ovirt.engine.sdk4.internal.ConnectionBuilder42 Maven / Gradle / Ivy
package org.ovirt.engine.sdk4.internal;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.Principal;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import org.apache.http.auth.AuthSchemeRegistry;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.Credentials;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.params.AuthPolicy;
import org.apache.http.client.params.ClientPNames;
import org.apache.http.client.params.CookiePolicy;
import org.apache.http.conn.scheme.PlainSocketFactory;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.auth.BasicSchemeFactory;
import org.apache.http.impl.auth.SPNegoSchemeFactory;
import org.apache.http.impl.client.DecompressingHttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.PoolingClientConnectionManager;
import org.apache.http.params.HttpConnectionParams;
import org.ovirt.engine.sdk4.ConnectionBuilder;
import org.ovirt.engine.sdk4.Error;
import org.ovirt.engine.sdk4.HttpClient;
public class ConnectionBuilder42 extends ConnectionBuilder {
private static final String UNRECOVERABLE_KEY_ERROR = "Unrecoverable key error has occured.";
public ConnectionBuilder42() {
}
/**
* Creates HttpClient
*/
@Override
protected HttpClient createHttpClient() {
int port = getPort();
Credentials credentials = null;
AuthSchemeRegistry schemeRegistry = new AuthSchemeRegistry();
AuthScope authScope = new AuthScope(getHost(), port, AuthScope.ANY_REALM, AuthScope.ANY_SCHEME);
// Create credentials:
if (user != null && user.length() > 0) {
schemeRegistry.register(AuthPolicy.BASIC, new BasicSchemeFactory());
credentials = new UsernamePasswordCredentials(user, password);
}
else if (kerberos) {
schemeRegistry.register(AuthPolicy.SPNEGO, new SPNegoSchemeFactory(true));
credentials = new Credentials() {
@Override
public Principal getUserPrincipal() {
return null;
}
@Override
public String getPassword() {
return null;
}
};
}
// Create http client:
DefaultHttpClient client = new DefaultHttpClient(
new PoolingClientConnectionManager(createConnectionSocketFactoryRegistry())
);
client.setAuthSchemes(schemeRegistry);
client.getCredentialsProvider().setCredentials(authScope, credentials);
client.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.IGNORE_COOKIES);
// Set request timeout:
if (timeout != -1) {
HttpConnectionParams.setSoTimeout(client.getParams(), timeout);
}
// Compress/decompress entities if compressing enabled:
if (compress) {
return new HttpClient42(new DecompressingHttpClient(client));
}
return new HttpClient42(client);
}
private SchemeRegistry createConnectionSocketFactoryRegistry() {
SchemeRegistry schemeRegistry = new SchemeRegistry();
SSLSocketFactory sf;
// Create SSL/TLS or plain connection:
if (HTTP_PROTOCOL.equals(getProtocol())) {
schemeRegistry.register(
new Scheme(
HTTP_PROTOCOL,
getPort(),
PlainSocketFactory.getSocketFactory()
)
);
}
else if (HTTPS_PROTOCOL.equals(getProtocol())) {
try {
if (this.insecure) {
SSLContext sslcontext = SSLContext.getInstance("TLS");
sslcontext.init(null, new TrustManager[]{noCaTrustManager}, null);
sf = new SSLSocketFactory(
sslcontext,
SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER
);
}
else {
KeyStore truststore = null;
InputStream in = null;
if (this.trustStoreFile != null) {
truststore = KeyStore.getInstance(KeyStore.getDefaultType());
try {
in = new FileInputStream(this.trustStoreFile);
truststore.load(
in,
this.trustStorePassword != null ?
this.trustStorePassword.toCharArray()
:
null);
}
finally {
if (in != null) {
in.close();
}
}
}
sf = new SSLSocketFactory(SSLSocketFactory.TLS,
null,
null,
truststore,
null,
null,
SSLSocketFactory.STRICT_HOSTNAME_VERIFIER);
}
schemeRegistry.register(new Scheme(HTTPS_PROTOCOL, getPort(), sf));
}
catch (NoSuchAlgorithmException e) {
throw new Error(NO_TLS_ERROR, e);
}
catch (KeyManagementException e) {
throw new Error(BAD_KEY_ERROR, e);
}
catch (KeyStoreException e) {
throw new Error(KEY_STORE_ERROR, e);
}
catch (FileNotFoundException e) {
throw new Error(KEY_STORE_FILE_NOT_FOUND_ERROR, e);
}
catch (CertificateException e) {
throw new Error(CERTIFICATE_ERROR, e);
}
catch (IOException e) {
throw new Error(IO_ERROR, e);
}
catch (UnrecoverableKeyException e) {
throw new Error(UNRECOVERABLE_KEY_ERROR, e);
}
}
return schemeRegistry;
}
}