You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 10:12:54 UTC
[sling-org-apache-sling-security] 16/20: SLING-2200 - adding a
configuration printer to the referrer filter
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.security-1.0.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-security.git
commit 42c641d9c416aea1c58c3819eb2c0a992d86c01a
Author: Justin Edelson <ju...@apache.org>
AuthorDate: Wed Aug 31 16:00:52 2011 +0000
SLING-2200 - adding a configuration printer to the referrer filter
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/security@1163675 13f79535-47bb-0310-9956-ffa450edef68
---
.../apache/sling/security/impl/ReferrerFilter.java | 45 ++++++++++++++++++++++
.../sling/security/impl/ReferrerFilterTest.java | 13 +++++--
2 files changed, 55 insertions(+), 3 deletions(-)
diff --git a/src/main/java/org/apache/sling/security/impl/ReferrerFilter.java b/src/main/java/org/apache/sling/security/impl/ReferrerFilter.java
index 0302ac7..afe33ee 100644
--- a/src/main/java/org/apache/sling/security/impl/ReferrerFilter.java
+++ b/src/main/java/org/apache/sling/security/impl/ReferrerFilter.java
@@ -17,6 +17,7 @@
package org.apache.sling.security.impl;
import java.io.IOException;
+import java.io.PrintWriter;
import java.net.Inet4Address;
import java.net.Inet6Address;
import java.net.InetAddress;
@@ -25,8 +26,10 @@ import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.URL;
import java.util.ArrayList;
+import java.util.Dictionary;
import java.util.Enumeration;
import java.util.HashSet;
+import java.util.Hashtable;
import java.util.List;
import java.util.Set;
@@ -44,6 +47,9 @@ import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.PropertyUnbounded;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.commons.osgi.PropertiesUtil;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
+import org.osgi.framework.ServiceRegistration;
import org.osgi.service.component.ComponentContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -81,6 +87,8 @@ public class ReferrerFilter implements Filter {
/** Methods to be filtered. */
private String[] filterMethods;
+ private ServiceRegistration configPrinterRegistration;
+
/**
* Create a default list of referrers
*/
@@ -187,8 +195,28 @@ public class ReferrerFilter implements Filter {
filterMethods[i] = filterMethods[i].toUpperCase();
}
}
+ this.configPrinterRegistration = registerConfigPrinter(ctx.getBundleContext());
+ }
+
+ protected void deactivate() {
+ this.configPrinterRegistration.unregister();
}
+ private ServiceRegistration registerConfigPrinter(BundleContext bundleContext) {
+ final ConfigurationPrinter cfgPrinter = new ConfigurationPrinter();
+ final Dictionary<String, String> serviceProps = new Hashtable<String, String>();
+ serviceProps.put(Constants.SERVICE_DESCRIPTION,
+ "Apache Sling Referrer Filter Configuration Printer");
+ serviceProps.put(Constants.SERVICE_VENDOR, "The Apache Software Foundation");
+ serviceProps.put("felix.webconsole.label", "slingreferrerfilter");
+ serviceProps.put("felix.webconsole.title", "Sling Referrer Filter");
+ serviceProps.put("felix.webconsole.configprinter.modes", "always");
+
+ return bundleContext.registerService(Object.class.getName(),
+ cfgPrinter, serviceProps);
+ }
+
+
private boolean isModification(final HttpServletRequest req) {
final String method = req.getMethod();
if ( filterMethods != null ) {
@@ -317,4 +345,21 @@ public class ReferrerFilter implements Filter {
public void destroy() {
// nothing to do
}
+
+ public class ConfigurationPrinter {
+
+ /**
+ * Print out the allowedReferrers
+ * @see org.apache.felix.webconsole.ConfigurationPrinter#printConfiguration(java.io.PrintWriter)
+ */
+ @SuppressWarnings("unused")
+ public void printConfiguration(PrintWriter pw) {
+ pw.println("Current Apache Sling Referrer Filter Allowed Referrers:");
+ pw.println();
+ for (final URL url : allowedReferrers) {
+ pw.println(url.toString());
+ }
+ }
+
+ }
}
diff --git a/src/test/java/org/apache/sling/security/impl/ReferrerFilterTest.java b/src/test/java/org/apache/sling/security/impl/ReferrerFilterTest.java
index d1a52da..136cb28 100644
--- a/src/test/java/org/apache/sling/security/impl/ReferrerFilterTest.java
+++ b/src/test/java/org/apache/sling/security/impl/ReferrerFilterTest.java
@@ -16,8 +16,8 @@
*/
package org.apache.sling.security.impl;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.*;
+import static org.mockito.Matchers.*;
import java.util.Dictionary;
import java.util.Hashtable;
@@ -27,6 +27,8 @@ import javax.servlet.http.HttpServletRequest;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
import org.osgi.service.component.ComponentContext;
public class ReferrerFilterTest {
@@ -36,8 +38,13 @@ public class ReferrerFilterTest {
@Before public void setup() {
filter = new ReferrerFilter();
final ComponentContext ctx = mock(ComponentContext.class);
+ final BundleContext bundleCtx = mock(BundleContext.class);
+ final ServiceRegistration reg = mock(ServiceRegistration.class);
final Dictionary<String, Object> props = new Hashtable<String, Object>();
- when(ctx.getProperties()).thenReturn(props);
+ doReturn(props).when(ctx).getProperties();
+ doReturn(bundleCtx).when(ctx).getBundleContext();
+ doReturn(reg).when(bundleCtx).registerService(any(String[].class), any(), any(Dictionary.class));
+ doNothing().when(reg).unregister();
filter.activate(ctx);
}
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.