All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.openshift.client.OpenShiftConnectionFactory Maven / Gradle / Ivy

The newest version!
/******************************************************************************* 
 * Copyright (c) 2012-2014 Red Hat, Inc. 
 * Distributed under license by Red Hat, Inc. All rights reserved. 
 * This program is made available under the terms of the 
 * Eclipse Public License v1.0 which accompanies this distribution, 
 * and is available at http://www.eclipse.org/legal/epl-v10.html 
 * 
 * Contributors: 
 * Red Hat, Inc. - initial API and implementation 
 ******************************************************************************/
package com.openshift.client;

import java.io.FileNotFoundException;
import java.io.IOException;

import com.openshift.client.IHttpClient.ISSLCertificateCallback;
import com.openshift.client.configuration.AbstractOpenshiftConfiguration.ConfigurationOptions;
import com.openshift.client.configuration.IOpenShiftConfiguration;
import com.openshift.client.configuration.OpenShiftConfiguration;
import com.openshift.client.utils.SSLUtils;
import com.openshift.internal.client.AbstractOpenShiftConnectionFactory;
import com.openshift.internal.client.IRestService;
import com.openshift.internal.client.RestService;
import com.openshift.internal.client.httpclient.UrlConnectionHttpClientBuilder;
import com.openshift.internal.client.httpclient.request.JsonMediaType;
import com.openshift.internal.client.response.OpenShiftJsonDTOFactory;
import com.openshift.internal.client.utils.Assert;

/**
 * Connection Factory, used to establish a connection and retrieve a user.
 * 
 * @author Xavier Coulon
 * @author Andre Dietisheim
 * @author Corey Daley
 * @author Sean Kavanagh
 * 
 * @deprecated use ConnectionBuilder instead
 * 
 */
@Deprecated
public class OpenShiftConnectionFactory extends AbstractOpenShiftConnectionFactory {
	private IOpenShiftConfiguration configuration;

	/**
	 * Establish a connection with the clientId along with user's password.
	 * User's login and Server URL are retrieved from the local configuration
	 * file (in see $USER_HOME/.openshift/express.conf)
	 * 
	 * @param clientId
	 *            http client id
	 * @param password
	 *            user's password
	 * @return a valid connection
	 * @throws FileNotFoundException
	 * @throws IOException
	 * @throws OpenShiftException
	 */
	public IOpenShiftConnection getConnection(final String clientId, final String password) throws OpenShiftException {
		IOpenShiftConfiguration configuration = getConfiguration();
		return getConnection(clientId, configuration.getRhlogin(), password, configuration.getLibraServer());
	}

	/**
	 * Establish a connection with the clientId along with user's login and
	 * password. Server URL is retrieved from the local configuration file (in
	 * see $USER_HOME/.openshift/express.conf)
	 * 
	 * @param clientId
	 *            http client id
	 * @param username
	 *            user's login
	 * @param password
	 *            user's password
	 * @return a valid connection
	 * @throws FileNotFoundException
	 * @throws IOException
	 * @throws OpenShiftException
	 */
	public IOpenShiftConnection getConnection(final String clientId, final String username, final String password)
			throws OpenShiftException {
		return getConnection(clientId, username, password, getConfiguration().getLibraServer());
	}

	/**
	 * Establish a connection with the clientId along with user's login and
	 * password.
	 * 
	 * @param clientId
	 *            http client id
	 * @param username
	 *            user's login.
	 * @param password
	 *            user's password.
	 * @param serverUrl
	 *            the server url.
	 * @return a valid connection
	 * @throws FileNotFoundException
	 * @throws IOException
	 * @throws OpenShiftException
	 */
	public IOpenShiftConnection getConnection(final String clientId, final String username, final String password,
			final String serverUrl) throws OpenShiftException {
		return getConnection(clientId, username, password, serverUrl, (ISSLCertificateCallback) null);
	}

	public IOpenShiftConnection getConnection(final String clientId, final String username, final String password,
			final String serverUrl, ISSLCertificateCallback sslCallback) throws OpenShiftException {
		return getConnection(clientId, username, password, null, null, null, serverUrl, sslCallback);
	}

	public IOpenShiftConnection getConnection(final String clientId, final String token,
			final String serverUrl, ISSLCertificateCallback sslCallback) throws OpenShiftException {
		return getConnection(clientId, null, null, null, null, token, serverUrl, sslCallback);
	}

	public IOpenShiftConnection getConnection(final String clientId, final String username, final String password,
			final String authKey, final String authIV, final String serverUrl) throws OpenShiftException {
		return getConnection(clientId, username, password, null, null, null, serverUrl, null);
	}

	public IOpenShiftConnection getConnection(final String clientId, final String username, final String password,
			final String authKey, final String authIV, final String token, final String serverUrl,
			final ISSLCertificateCallback sslCertificateCallback) throws OpenShiftException {
		return getConnection(clientId, username, password, authKey, authIV, token, serverUrl, sslCertificateCallback,
				createCipherExclusionRegex(getConfiguration()));
	}

	protected String createCipherExclusionRegex(IOpenShiftConfiguration configuration) {
		if (configuration.getDisableBadSSLCiphers() == ConfigurationOptions.YES
				|| (configuration.getDisableBadSSLCiphers() == ConfigurationOptions.AUTO)
				&& !SSLUtils.supportsDHECipherKeysOf(1024 + 64)) {
			// jdk < 1.8 only support DHE cipher keys <= 1024 bit
			// https://issues.jboss.org/browse/JBIDE-18454
			return SSLUtils.CIPHER_DHE_REGEX;
		} else {
			return null;
		}
	}

	/**
	 * Establish a connection with the clientId along with user's login and
	 * password.
	 * 
	 * @param clientId
	 *            http client id
	 * @param username
	 *            user's login.
	 * @param password
	 *            user's password.
	 * @param token
	 *            authorization token.
	 * @param serverUrl
	 *            the server url.
	 * @return a valid connection
	 * @throws FileNotFoundException
	 * @throws IOException
	 * @throws OpenShiftException
	 */
	public IOpenShiftConnection getConnection(final String clientId, final String username, final String password,
			final String authKey, final String authIV, final String token, final String serverUrl,
			final ISSLCertificateCallback sslCertificateCallback, String exludeSSLCipherRegex)
			throws OpenShiftException {

		Assert.notNull(clientId);
		if (token == null || token.trim().length() == 0) {
			Assert.notNull(username);
			Assert.notNull(password);
		}
		Assert.notNull(serverUrl);

		IHttpClient httpClient = createClient(
				clientId, username, password, authKey, authIV, token, serverUrl, sslCertificateCallback,
				exludeSSLCipherRegex);
		try {
			return getConnection(clientId, username, password, token, serverUrl, httpClient);
		} catch (IOException e) {
			throw new OpenShiftException(e, "Failed to establish connection for user ''{0}}''", username);
		}
	}

	protected IHttpClient createClient(final String clientId, final String username, final String password,
			final String authKey, final String authIV, final String token, final String serverUrl,
			final ISSLCertificateCallback sslCertificateCallback, String exludeSSLCipherRegex) {
		return new UrlConnectionHttpClientBuilder()
				.setCredentials(username, password, authKey, authIV, token)
				.setSSLCertificateCallback(sslCertificateCallback)
				.setConfigTimeout(getConfiguration().getTimeout())
				.excludeSSLCipher(exludeSSLCipherRegex)
				.client();
	}

	protected IOpenShiftConnection getConnection(final String clientId, final String username, final String password,
			final String token, final String serverUrl, IHttpClient httpClient) throws OpenShiftException, IOException {
		Assert.notNull(clientId);
		Assert.notNull(serverUrl);
		Assert.notNull(httpClient);

		IRestService service = new RestService(serverUrl, clientId, new JsonMediaType(),
				IHttpClient.MEDIATYPE_APPLICATION_JSON, new OpenShiftJsonDTOFactory(), httpClient);
		return getConnection(service, username, password, token);
	}

	/**
	 * Establish a connection with the clientId along with a user's
	 * authorization token
	 *
	 * @param clientId
	 *            http client id
	 * @param token
	 *            authorization token.
	 * @param serverUrl
	 *            the server url.
	 * @return a valid connection
	 * @throws FileNotFoundException
	 * @throws IOException
	 * @throws OpenShiftException
	 */
	public IOpenShiftConnection getAuthTokenConnection(final String clientId, final String token, final String serverUrl)
			throws OpenShiftException {
		return getConnection(clientId, null, null, null, null, token, serverUrl, null);
	}

	/**
	 * Establish a connection with the clientId along with a user's
	 * authorization token. Server URL is retrieved from the local configuration
	 * file (in see $USER_HOME/.openshift/express.conf)
	 *
	 * @param clientId
	 *            http client id
	 * @param token
	 *            authorization token.
	 * @return a valid connection
	 * @throws FileNotFoundException
	 * @throws IOException
	 * @throws OpenShiftException
	 */
	public IOpenShiftConnection getAuthTokenConnection(final String clientId, final String token)
			throws OpenShiftException {
		return getConnection(clientId, null, null, null, null, token, getConfiguration().getLibraServer(), null);
	}

	protected IOpenShiftConfiguration getConfiguration() throws OpenShiftException {
		if (this.configuration == null) {
			this.configuration = createConfiguration();
		}
		return this.configuration;
	}

	protected IOpenShiftConfiguration createConfiguration() throws OpenShiftException {
		try {
			return new OpenShiftConfiguration();
		} catch (IOException e) {
			throw new OpenShiftException(e, "Failed to load OpenShift configuration file.");
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy