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>.