Package org.sonatype.nexus.rest.global

Source Code of org.sonatype.nexus.rest.global.AbstractGlobalConfigurationPlexusResource

/*
* Sonatype Nexus (TM) Open Source Version
* Copyright (c) 2007-2014 Sonatype, Inc.
* All rights reserved. Includes the third-party code listed at http://links.sonatype.com/products/nexus/oss/attributions.
*
* This program and the accompanying materials are made available under the terms of the Eclipse Public License Version 1.0,
* which accompanies this distribution and is available at http://www.eclipse.org/legal/epl-v10.html.
*
* Sonatype Nexus (TM) Professional Version is available from Sonatype, Inc. "Sonatype" and "Sonatype Nexus" are trademarks
* of Sonatype, Inc. Apache Maven is a trademark of the Apache Software Foundation. M2eclipse is a trademark of the
* Eclipse Foundation. All other trademarks are the property of their respective owners.
*/
package org.sonatype.nexus.rest.global;

import java.util.ArrayList;

import javax.inject.Inject;

import org.sonatype.configuration.ConfigurationException;
import org.sonatype.nexus.configuration.application.AuthenticationInfoConverter;
import org.sonatype.nexus.configuration.application.GlobalRemoteConnectionSettings;
import org.sonatype.nexus.configuration.application.GlobalRemoteProxySettings;
import org.sonatype.nexus.configuration.application.GlobalRestApiSettings;
import org.sonatype.nexus.configuration.model.CRemoteAuthentication;
import org.sonatype.nexus.configuration.model.CRemoteConnectionSettings;
import org.sonatype.nexus.configuration.model.CRemoteHttpProxySettings;
import org.sonatype.nexus.configuration.model.CRemoteProxySettings;
import org.sonatype.nexus.configuration.model.CRestApiSettings;
import org.sonatype.nexus.configuration.model.CSmtpConfiguration;
import org.sonatype.nexus.email.NexusEmailer;
import org.sonatype.nexus.proxy.repository.ClientSSLRemoteAuthenticationSettings;
import org.sonatype.nexus.proxy.repository.DefaultRemoteHttpProxySettings;
import org.sonatype.nexus.proxy.repository.NtlmRemoteAuthenticationSettings;
import org.sonatype.nexus.proxy.repository.RemoteAuthenticationSettings;
import org.sonatype.nexus.proxy.repository.RemoteHttpProxySettings;
import org.sonatype.nexus.proxy.repository.UsernamePasswordRemoteAuthenticationSettings;
import org.sonatype.nexus.rest.AbstractNexusPlexusResource;
import org.sonatype.nexus.rest.model.AuthenticationSettings;
import org.sonatype.nexus.rest.model.RemoteConnectionSettings;
import org.sonatype.nexus.rest.model.RemoteHttpProxySettingsDTO;
import org.sonatype.nexus.rest.model.RemoteProxySettingsDTO;
import org.sonatype.nexus.rest.model.RestApiSettings;
import org.sonatype.nexus.rest.model.SmtpSettings;

import org.apache.commons.lang.StringUtils;

/**
* The base class for global configuration resources.
*
* @author cstamas
*/
public abstract class AbstractGlobalConfigurationPlexusResource
    extends AbstractNexusPlexusResource
{
  public static final String SECURITY_OFF = "off";

  public static final String SECURITY_SIMPLE = "simple";

  public static final String SECURITY_CUSTOM = "custom";

  private NexusEmailer nexusEmailer;

  private GlobalRemoteProxySettings globalRemoteProxySettings;

  private GlobalRemoteConnectionSettings globalRemoteConnectionSettings;

  private GlobalRestApiSettings globalRestApiSettings;

  private AuthenticationInfoConverter authenticationInfoConverter;

  @Inject
  public void setNexusEmailer(final NexusEmailer nexusEmailer) {
    this.nexusEmailer = nexusEmailer;
  }

  @Inject
  public void setGlobalRemoteProxySettings(final GlobalRemoteProxySettings globalRemoteProxySettings) {
    this.globalRemoteProxySettings = globalRemoteProxySettings;
  }

  @Inject
  public void setGlobalRemoteConnectionSettings(final GlobalRemoteConnectionSettings globalRemoteConnectionSettings) {
    this.globalRemoteConnectionSettings = globalRemoteConnectionSettings;
  }

  @Inject
  public void setGlobalRestApiSettings(final GlobalRestApiSettings globalRestApiSettings) {
    this.globalRestApiSettings = globalRestApiSettings;
  }

  @Inject
  public void setAuthenticationInfoConverter(final AuthenticationInfoConverter authenticationInfoConverter) {
    this.authenticationInfoConverter = authenticationInfoConverter;
  }

  protected NexusEmailer getNexusEmailer() {
    return nexusEmailer;
  }

  protected GlobalRemoteProxySettings getGlobalRemoteProxySettings() {
    return globalRemoteProxySettings;
  }

  protected GlobalRemoteConnectionSettings getGlobalRemoteConnectionSettings() {
    return globalRemoteConnectionSettings;
  }

  protected GlobalRestApiSettings getGlobalRestApiSettings() {
    return globalRestApiSettings;
  }

  protected AuthenticationInfoConverter getAuthenticationInfoConverter() {
    return authenticationInfoConverter;
  }

  public static SmtpSettings convert(NexusEmailer nexusEmailer) {
    if (nexusEmailer == null) {
      return null;
    }

    SmtpSettings result = new SmtpSettings();

    result.setHost(nexusEmailer.getSMTPHostname());

    result.setPort(nexusEmailer.getSMTPPort());

    result.setSslEnabled(nexusEmailer.isSMTPSslEnabled());

    result.setTlsEnabled(nexusEmailer.isSMTPTlsEnabled());

    result.setUsername(nexusEmailer.getSMTPUsername());

    if (!StringUtils.isEmpty(nexusEmailer.getSMTPPassword())) {
      result.setPassword(PASSWORD_PLACE_HOLDER);
    }

    result.setSystemEmailAddress(nexusEmailer.getSMTPSystemEmailAddress().getMailAddress());

    return result;
  }

  /**
   * Externalized Nexus object to DTO's conversion.
   */
  public static RemoteConnectionSettings convert(GlobalRemoteConnectionSettings settings) {
    if (settings == null) {
      return null;
    }

    RemoteConnectionSettings result = new RemoteConnectionSettings();

    result.setConnectionTimeout(settings.getConnectionTimeout() / 1000);

    result.setRetrievalRetryCount(settings.getRetrievalRetryCount());

    result.setQueryString(settings.getQueryString());

    result.setUserAgentString(settings.getUserAgentCustomizationString());

    return result;
  }

  /**
   * Externalized Nexus object to DTO's conversion.
   */
  public static RemoteProxySettingsDTO convert(GlobalRemoteProxySettings settings) {
    if (settings == null) {
      return null;
    }

    RemoteProxySettingsDTO result = new RemoteProxySettingsDTO();

    result.setHttpProxySettings(convert(settings.getHttpProxySettings()));

    result.setHttpsProxySettings(convert(settings.getHttpsProxySettings()));

    result.setNonProxyHosts(new ArrayList<String>(settings.getNonProxyHosts()));

    return result;
  }

  /**
   * Externalized Nexus object to DTO's conversion.
   */
  public static RemoteHttpProxySettingsDTO convert(RemoteHttpProxySettings settings) {
    if (settings == null) {
      return null;
    }

    final RemoteHttpProxySettingsDTO result = new RemoteHttpProxySettingsDTO();

    result.setProxyHostname(settings.getHostname());

    result.setProxyPort(settings.getPort());

    result.setAuthentication(convert(settings.getProxyAuthentication()));

    return result;
  }


  public static RestApiSettings convert(GlobalRestApiSettings settings) {
    if (settings == null || !settings.isEnabled()) {
      return null;
    }

    RestApiSettings result = new RestApiSettings();

    result.setBaseUrl(settings.getBaseUrl());

    result.setForceBaseUrl(settings.isForceBaseUrl());

    result.setUiTimeout(settings.getUITimeout() / 1000);

    return result;
  }

  /**
   * Externalized Nexus object to DTO's conversion.
   */
  public static AuthenticationSettings convert(RemoteAuthenticationSettings settings) {
    if (settings == null) {
      return null;
    }

    AuthenticationSettings auth = new AuthenticationSettings();

    if (settings instanceof ClientSSLRemoteAuthenticationSettings) {
      // huh?
    }
    else if (settings instanceof NtlmRemoteAuthenticationSettings) {
      NtlmRemoteAuthenticationSettings up = (NtlmRemoteAuthenticationSettings) settings;

      auth.setUsername(up.getUsername());

      auth.setPassword(PASSWORD_PLACE_HOLDER);

      auth.setNtlmHost(up.getNtlmHost());

      auth.setNtlmDomain(up.getNtlmDomain());

    }
    else if (settings instanceof UsernamePasswordRemoteAuthenticationSettings) {
      UsernamePasswordRemoteAuthenticationSettings up = (UsernamePasswordRemoteAuthenticationSettings) settings;

      auth.setUsername(up.getUsername());

      auth.setPassword(PASSWORD_PLACE_HOLDER);
    }

    return auth;
  }

  // ==

  /**
   * Externalized Nexus object to DTO's conversion.
   */
  public static RemoteConnectionSettings convert(CRemoteConnectionSettings settings) {
    if (settings == null) {
      return null;
    }

    RemoteConnectionSettings result = new RemoteConnectionSettings();

    result.setConnectionTimeout(settings.getConnectionTimeout() / 1000);

    result.setRetrievalRetryCount(settings.getRetrievalRetryCount());

    result.setQueryString(settings.getQueryString());

    result.setUserAgentString(settings.getUserAgentCustomizationString());

    return result;
  }

  /**
   * Externalized Nexus object to DTO's conversion.
   */
  public static RemoteProxySettingsDTO convert(CRemoteProxySettings settings) {
    if (settings == null) {
      return null;
    }

    final RemoteProxySettingsDTO result = new RemoteProxySettingsDTO();

    result.setHttpProxySettings(convert(settings.getHttpProxySettings()));

    result.setHttpsProxySettings(convert(settings.getHttpsProxySettings()));

    result.setNonProxyHosts(settings.getNonProxyHosts());

    return result;
  }

  /**
   * Externalized Nexus object to DTO's conversion.
   */
  public static RemoteHttpProxySettingsDTO convert(CRemoteHttpProxySettings settings) {
    if (settings == null) {
      return null;
    }

    final RemoteHttpProxySettingsDTO result = new RemoteHttpProxySettingsDTO();

    result.setProxyHostname(settings.getProxyHostname());

    result.setProxyPort(settings.getProxyPort());

    result.setAuthentication(convert(settings.getAuthentication()));

    return result;
  }

  public static RestApiSettings convert(CRestApiSettings settings) {
    if (settings == null) {
      return null;
    }

    RestApiSettings result = new RestApiSettings();

    result.setBaseUrl(settings.getBaseUrl());

    result.setForceBaseUrl(settings.isForceBaseUrl());

    result.setUiTimeout(settings.getUiTimeout() / 1000);

    return result;
  }

  /**
   * Externalized Nexus object to DTO's conversion.
   */
  public static AuthenticationSettings convert(CRemoteAuthentication settings) {
    if (settings == null) {
      return null;
    }

    AuthenticationSettings auth = new AuthenticationSettings();

    auth.setUsername(settings.getUsername());

    auth.setPassword(PASSWORD_PLACE_HOLDER);

    auth.setNtlmHost(settings.getNtlmHost());

    auth.setNtlmDomain(settings.getNtlmDomain());

    // auth.setPrivateKey( settings.getPrivateKey() );

    // auth.setPassphrase( settings.getPassphrase() );

    return auth;
  }

  public static SmtpSettings convert(CSmtpConfiguration settings) {
    if (settings == null) {
      return null;
    }

    SmtpSettings result = new SmtpSettings();

    result.setHost(settings.getHostname());

    result.setPassword(PASSWORD_PLACE_HOLDER);

    result.setPort(settings.getPort());

    result.setSslEnabled(settings.isSslEnabled());

    result.setSystemEmailAddress(settings.getSystemEmailAddress());

    result.setTlsEnabled(settings.isTlsEnabled());

    result.setUsername(settings.getUsername());

    return result;
  }

  public RemoteHttpProxySettings convert(final RemoteHttpProxySettingsDTO settings,
                                         final String oldPassword)
      throws ConfigurationException
  {
    if (settings == null || StringUtils.isEmpty(settings.getProxyHostname())) {
      return null;
    }

    final RemoteHttpProxySettings result = new DefaultRemoteHttpProxySettings();

    result.setHostname(settings.getProxyHostname());
    result.setPort(settings.getProxyPort());

    if (settings.getAuthentication() != null) {
      CRemoteAuthentication auth = new CRemoteAuthentication();

      auth.setUsername(settings.getAuthentication().getUsername());

      auth.setPassword(getActualPassword(settings.getAuthentication().getPassword(), oldPassword));

      auth.setNtlmDomain(settings.getAuthentication().getNtlmDomain());

      auth.setNtlmHost(settings.getAuthentication().getNtlmHost());

      result.setProxyAuthentication(
          getAuthenticationInfoConverter().convertAndValidateFromModel(auth));
    }
    else {
      result.setProxyAuthentication(null);
    }

    return result;
  }

}
TOP

Related Classes of org.sonatype.nexus.rest.global.AbstractGlobalConfigurationPlexusResource

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.