added support for proxy servers with authentication

This commit is contained in:
Sebastian Sdorra
2011-09-03 17:42:21 +02:00
parent 8c0324de73
commit 2012b86cad
3 changed files with 105 additions and 0 deletions

View File

@@ -158,6 +158,8 @@ public class ScmConfiguration implements ListenerSupport<ConfigChangedListener>
this.enableProxy = other.enableProxy;
this.proxyPort = other.proxyPort;
this.proxyServer = other.proxyServer;
this.proxyUser = other.proxyUser;
this.proxyPassword = other.proxyPassword;
this.forceBaseUrl = other.forceBaseUrl;
this.baseUrl = other.baseUrl;
@@ -259,6 +261,18 @@ public class ScmConfiguration implements ListenerSupport<ConfigChangedListener>
return pluginUrl;
}
/**
* Method description
*
*
* @return
* @since 1.7
*/
public String getProxyPassword()
{
return proxyPassword;
}
/**
* Returns the proxy port.
*
@@ -281,6 +295,18 @@ public class ScmConfiguration implements ListenerSupport<ConfigChangedListener>
return proxyServer;
}
/**
* Method description
*
*
* @return
* @since 1.7
*/
public String getProxyUser()
{
return proxyUser;
}
/**
* Returns the servername of the SCM-Manager host.
*
@@ -496,6 +522,18 @@ public class ScmConfiguration implements ListenerSupport<ConfigChangedListener>
this.pluginUrl = pluginUrl;
}
/**
* Method description
*
*
* @param proxyPassword
* @since 1.7
*/
public void setProxyPassword(String proxyPassword)
{
this.proxyPassword = proxyPassword;
}
/**
* Method description
*
@@ -518,6 +556,18 @@ public class ScmConfiguration implements ListenerSupport<ConfigChangedListener>
this.proxyServer = proxyServer;
}
/**
* Method description
*
*
* @param proxyUser
* @since 1.7
*/
public void setProxyUser(String proxyUser)
{
this.proxyUser = proxyUser;
}
/**
* Method description
*
@@ -574,12 +624,18 @@ public class ScmConfiguration implements ListenerSupport<ConfigChangedListener>
@XmlElement(name = "plugin-url")
private String pluginUrl = DEFAULT_PLUGINURL;
/** Field description */
private String proxyPassword;
/** Field description */
private int proxyPort = 8080;
/** Field description */
private String proxyServer = "proxy.mydomain.com";
/** Field description */
private String proxyUser;
/** @deprecated use {@link #baseUrl} */
private String servername = "localhost";

View File

@@ -47,6 +47,8 @@ import sonia.scm.util.Util;
//~--- JDK imports ------------------------------------------------------------
import com.sun.jersey.core.util.Base64;
import java.io.IOException;
import java.io.OutputStreamWriter;
@@ -69,6 +71,9 @@ import java.util.Map;
public class URLHttpClient implements HttpClient
{
/** Field description */
public static final String CREDENTIAL_SEPARATOR = ":";
/** Field description */
public static final String ENCODING = "UTF-8";
@@ -78,6 +83,9 @@ public class URLHttpClient implements HttpClient
/** Field description */
public static final String HEADER_ACCEPT_ENCODING_VALUE = "gzip";
/** Field description */
public static final String HEADER_PROXY_AUTHORIZATION = "Proxy-Authorization";
/** Field description */
public static final String HEADER_USERAGENT = "User-Agent";
@@ -87,6 +95,9 @@ public class URLHttpClient implements HttpClient
/** Field description */
public static final String METHOD_POST = "POST";
/** Field description */
public static final String PREFIX_BASIC_AUTHENTICATION = "Basic ";
/** Field description */
public static final int TIMEOUT_CONNECTION = 30000;
@@ -353,6 +364,25 @@ public class URLHttpClient implements HttpClient
connection.setRequestProperty(
HEADER_USERAGENT, HEADER_USERAGENT_VALUE.concat(context.getVersion()));
String username = configuration.getProxyUser();
String password = configuration.getProxyPassword();
if (Util.isNotEmpty(username) || Util.isNotEmpty(password))
{
if (logger.isDebugEnabled())
{
logger.debug("enable proxy authentication for user '{}'",
Util.nonNull(username));
}
String auth = Util.nonNull(username).concat(CREDENTIAL_SEPARATOR).concat(
Util.nonNull(password));
auth = PREFIX_BASIC_AUTHENTICATION.concat(
new String(Base64.encode(auth.getBytes())));
connection.setRequestProperty(HEADER_PROXY_AUTHORIZATION, auth);
}
return connection;
}

View File

@@ -125,6 +125,8 @@ Sonia.config.ScmConfigPanel = Ext.extend(Sonia.config.ConfigPanel,{
check: function(){
Ext.getCmp('proxyServer').setDisabled( ! this.checked );
Ext.getCmp('proxyPort').setDisabled( ! this.checked );
Ext.getCmp('proxyUser').setDisabled( ! this.checked );
Ext.getCmp('proxyPassword').setDisabled( ! this.checked );
}
}
},{
@@ -143,6 +145,23 @@ Sonia.config.ScmConfigPanel = Ext.extend(Sonia.config.ConfigPanel,{
disabled: true,
allowBlank: false,
helpText: this.proxyPortHelpText
},{
id: 'proxyUser',
xtype: 'textfield',
fieldLabel: this.proxyUserText,
name: 'proxyUser',
disabled: true,
helpText: this.proxyUserHelpText,
allowBlank: true
},{
id: 'proxyPassword',
xtype: 'textfield',
inputType: 'password',
fieldLabel: this.proxyPasswordText,
name: 'proxyPassword',
disabled: true,
helpText: this.proxyPasswordHelpText,
allowBlank: true
},{
xtype : 'textfield',
fieldLabel : this.adminGroupsText,