blob: 3060cbfc3af86cc781549011247a55fbc68e560c [file] [log] [blame]
package org.apache.maven.wagon.shared.http;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
/**
* @since 2.8
*/
public class BasicAuthScope
{
private String host;
private String port;
private String realm;
/**
* @return the host
*/
public String getHost()
{
return host;
}
/**
* @param host the host to set
*/
public void setHost( String host )
{
this.host = host;
}
/**
* @return the realm
*/
public String getRealm()
{
return realm;
}
/**
* @param realm the realm to set
*/
public void setRealm( String realm )
{
this.realm = realm;
}
/**
* Create an authScope given the /repository/host and /repository/password
* and the /server/basicAuth or /server/proxyBasicAuth host, port and realm
* settings. The basicAuth setting should override the repository settings
* host and/or port if host, port or realm is set to "ANY".
* <p/>
* Realm can also be set to a specific string and will be set if
* /server/basicAuthentication/realm is non-null
*
* @param host The server setting's /server/host value
* @param port The server setting's /server/port value
* @return
*/
public AuthScope getScope( String host, int port )
{
if ( getHost() != null //
&& "ANY".compareTo( getHost() ) == 0 //
&& getPort() != null //
&& "ANY".compareTo( getPort() ) == 0 //
&& getRealm() != null //
&& "ANY".compareTo( getRealm() ) == 0 )
{
return AuthScope.ANY;
}
String scopeHost = host;
if ( getHost() != null )
{
if ( "ANY".compareTo( getHost() ) == 0 )
{
scopeHost = AuthScope.ANY_HOST;
}
else
{
scopeHost = getHost();
}
}
int scopePort = port > -1 ? port : AuthScope.ANY_PORT;
// -1 for server/port settings does this, but providing an override here
// in
// the BasicAuthScope config
if ( getPort() != null )
{
if ( "ANY".compareTo( getPort() ) == 0 )
{
scopePort = AuthScope.ANY_PORT;
}
else
{
scopePort = Integer.parseInt( getPort() );
}
}
String scopeRealm = AuthScope.ANY_REALM;
if ( getRealm() != null )
{
if ( "ANY".compareTo( getRealm() ) != 0 )
{
scopeRealm = getRealm();
}
else
{
scopeRealm = getRealm();
}
}
return new AuthScope( scopeHost, scopePort, scopeRealm );
}
/**
* @return the port
*/
public String getPort()
{
return port;
}
/**
* @param port the port to set
*/
public void setPort( String port )
{
this.port = port;
}
/**
* Given a HttpHost, return scope with overrides from appropriate basicAuth
* configuration.
* <p>
* Note: Protocol is ignored. AuthScope impl ignores it as well, but if that
* changed, there could be a problem.
* </p>
*
* @param targetHost
* @return
*/
public AuthScope getScope( HttpHost targetHost )
{
return getScope( targetHost.getHostName(), targetHost.getPort() );
}
}