Thomas Markus wrote:
try a generic RegexMatcher (all untested :) )
I solved it temporarily by simply passing the IP address into the XSLT
stylesheet and doing the substringing there: that also let me output a
suitably-formatted eror message for off-siters. Thanks for your help.
///Peter
in your sitemap add this to components with your pattern:
<map:matchers default="wildcard">
<map:matcher name="regular" src="test.RegexMatcher">
<pattern>^192\.168\.\d+\.\d+</pattern>
</map:matcher>
</map:matchers>
and in your pipeline:
<map:match pattern="{request:remoteAddr}" type="regular">
<!-- matched content, access regex groups with {0} or {1} ... -->
</map:match>
<!-- unmatched content -->
package test;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Pattern;
import org.apache.avalon.framework.configuration.Configurable;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.framework.thread.ThreadSafe;
import org.apache.cocoon.matching.Matcher;
import org.apache.cocoon.sitemap.PatternException;
public class RegexMatcher extends AbstractLogEnabled implements Matcher,
Configurable, ThreadSafe {
private Pattern regexpattern;
public void configure(Configuration configuration) throws
ConfigurationException {
regexpattern =
Pattern.compile(configuration.getChild("pattern").getValue().trim());
}
public Map match(String pattern, Map objectModel, Parameters
parameters) throws PatternException {
java.util.regex.Matcher m = regexpattern.matcher(pattern);
if (m.matches()) {
HashMap<String, String> h = new HashMap<String, String>();
for (int i = 0, j = m.groupCount(); i <= j; i++)
h.put(String.valueOf(i), m.group(i));
return h;
}
return null;
}
}
Peter Flynn schrieb:
Peter Flynn wrote:
Thomas Markus wrote:
hi,
look at http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#access
or use a matcher/selector in your sitemap
<map:select type="parameter">
<map:parameter name="parameter-selector-test"
value="{request:remoteAddr}" />
<map:when test="127.0.0.1">
<!-- actions for this ip -->
</map:when>
<map:otherwise>
<!-- -->
</map:otherwise>
</map:select>
That look like the right approach...except I can't find any
documentation at
http://cocoon.apache.org/2.2/core-modules/core/2.2/840_1_1.html on
the syntax of the test attribute.
I found some under the entry for Parameter Selector but it appears
that the test will only perform a plain equality. Is there a way to
perform a substring operation; when testing an IP address for access
permission I want to allow all xxx.yyy.*.* and prohibit everything else.
///Peter
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]