[MRM-1135]

o escape blacklist and whitelist pattern with '\'


git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@753608 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Maria Odea B. Ching 2009-03-14 06:43:22 +00:00
parent 07bb48e79d
commit 9198c4e336
3 changed files with 68 additions and 11 deletions

View File

@ -109,6 +109,39 @@ public abstract class AbstractProxyConnectorFormAction
*/
protected ProxyConnectorConfiguration connector;
protected List<String> escapePatterns( List<String> patterns )
{
List<String> escapedPatterns = new ArrayList<String>();
if( patterns != null )
{
for( String pattern : patterns )
{
escapedPatterns.add( StringUtils.replace( pattern, "\\", "\\\\" ) );
}
}
return escapedPatterns;
}
protected List<String> unescapePatterns( List<String> patterns )
{
List<String> rawPatterns = new ArrayList<String>();
if( patterns != null )
{
for( String pattern : patterns )
{
rawPatterns.add( StringUtils.replace( pattern, "\\\\", "\\" ) );
}
}
return rawPatterns;
}
private String escapePattern( String pattern )
{
return StringUtils.replace( pattern, "\\", "\\\\" );
}
public String addBlackListPattern()
{
String pattern = getBlackListPattern();
@ -117,13 +150,13 @@ public abstract class AbstractProxyConnectorFormAction
{
addActionError( "Cannot add a blank black list pattern." );
}
if ( !hasActionErrors() )
{
getConnector().getBlackListPatterns().add( pattern );
getConnector().getBlackListPatterns().add( escapePattern( pattern ) );
setBlackListPattern( null );
}
return INPUT;
}
@ -163,10 +196,10 @@ public abstract class AbstractProxyConnectorFormAction
if ( !hasActionErrors() )
{
getConnector().getWhiteListPatterns().add( pattern );
getConnector().getWhiteListPatterns().add( escapePattern( pattern ) );
setWhiteListPattern( null );
}
return INPUT;
}
@ -231,20 +264,21 @@ public abstract class AbstractProxyConnectorFormAction
public String removeBlackListPattern()
{
String pattern = getPattern();
if ( StringUtils.isBlank( pattern ) )
{
addActionError( "Cannot remove a blank black list pattern." );
}
if ( !getConnector().getBlackListPatterns().contains( pattern ) )
if ( !getConnector().getBlackListPatterns().contains( pattern ) &&
!getConnector().getBlackListPatterns().contains( StringUtils.replace( pattern, "\\", "\\\\" ) ) )
{
addActionError( "Non-existant black list pattern [" + pattern + "], no black list pattern removed." );
}
if ( !hasActionErrors() )
{
getConnector().getBlackListPatterns().remove( pattern );
getConnector().getBlackListPatterns().remove( escapePattern( pattern ) );
}
setBlackListPattern( null );
@ -287,14 +321,15 @@ public abstract class AbstractProxyConnectorFormAction
addActionError( "Cannot remove a blank white list pattern." );
}
if ( !getConnector().getWhiteListPatterns().contains( pattern ) )
if ( !getConnector().getWhiteListPatterns().contains( pattern ) &&
!getConnector().getWhiteListPatterns().contains( StringUtils.replace( pattern, "\\", "\\\\" ) ) )
{
addActionError( "Non-existant white list pattern [" + pattern + "], no white list pattern removed." );
}
if ( !hasActionErrors() )
{
getConnector().getWhiteListPatterns().remove( pattern );
getConnector().getWhiteListPatterns().remove( escapePattern( pattern ) );
}
setWhiteListPattern( null );

View File

@ -42,6 +42,13 @@ public class AddProxyConnectorAction
@Override
public String input()
{
if( connector != null )
{
// MRM-1135
connector.setBlackListPatterns( escapePatterns( connector.getBlackListPatterns() ) );
connector.setWhiteListPatterns( escapePatterns( connector.getWhiteListPatterns() ) );
}
return INPUT;
}
@ -75,6 +82,10 @@ public class AddProxyConnectorAction
connector.setProxyId( null );
}
// MRM-1135
connector.setBlackListPatterns( unescapePatterns( connector.getBlackListPatterns() ) );
connector.setWhiteListPatterns( unescapePatterns( connector.getWhiteListPatterns() ) );
addProxyConnector( connector );
return saveConfiguration();
}

View File

@ -47,7 +47,7 @@ public class EditProxyConnectorAction
{
super.prepare();
connector = findProxyConnector( source, target );
connector = findProxyConnector( source, target );
}
public String input()
@ -58,6 +58,13 @@ public class EditProxyConnectorAction
+ target + "]" );
return ERROR;
}
if( connector != null )
{
// MRM-1135
connector.setBlackListPatterns( escapePatterns( connector.getBlackListPatterns() ) );
connector.setWhiteListPatterns( escapePatterns( connector.getWhiteListPatterns() ) );
}
return INPUT;
}
@ -86,6 +93,10 @@ public class EditProxyConnectorAction
return INPUT;
}
// MRM-1135
connector.setBlackListPatterns( unescapePatterns( connector.getBlackListPatterns() ) );
connector.setWhiteListPatterns( unescapePatterns( connector.getWhiteListPatterns() ) );
addProxyConnector( connector );
return saveConfiguration();
}