You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by kf...@apache.org on 2012/04/05 12:18:57 UTC

svn commit: r1309736 - in /tomcat/tc7.0.x/trunk: java/org/apache/catalina/startup/UserConfig.java webapps/docs/changelog.xml webapps/docs/config/listeners.xml

Author: kfujino
Date: Thu Apr  5 10:18:56 2012
New Revision: 1309736

URL: http://svn.apache.org/viewvc?rev=1309736&view=rev
Log:
Add new attributes of enabled and disabled to UserConfig.

Modified:
    tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/UserConfig.java
    tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
    tomcat/tc7.0.x/trunk/webapps/docs/config/listeners.xml

Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/UserConfig.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/UserConfig.java?rev=1309736&r1=1309735&r2=1309736&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/UserConfig.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/UserConfig.java Thu Apr  5 10:18:56 2012
@@ -25,6 +25,7 @@ import java.util.Enumeration;
 import java.util.List;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Future;
+import java.util.regex.Pattern;
 
 import org.apache.catalina.Context;
 import org.apache.catalina.Host;
@@ -99,6 +100,15 @@ public final class UserConfig
     private String userClass =
         "org.apache.catalina.startup.PasswdUserDatabase";
 
+    /**
+     * A regular expression defining user who deployment is allowed.
+     */
+    protected Pattern enabled = null;
+
+    /**
+     * A regular expression defining user who deployment is denied.
+     */
+    protected Pattern disabled = null;
 
     // ------------------------------------------------------------- Properties
 
@@ -210,6 +220,50 @@ public final class UserConfig
 
     }
 
+    /**
+     * Return the regular expression used to test for user who deployment is allowed. 
+     */
+    public String getEnabled() {
+        if (enabled == null) return null;
+        return enabled.toString();
+    }
+
+
+    /**
+     * Set the regular expression used to test for user who deployment is allowed.
+     *
+     * @param enabled The new enabled expression
+     */
+    public void setEnabled(String enabled) {
+        if (enabled == null || enabled.length() == 0) {
+            this.enabled = null;
+        } else {
+            this.enabled = Pattern.compile(enabled);
+        }
+    }
+
+
+    /**
+     * Return the regular expression used to test for user who deployment is denied.
+     */
+    public String getDisabled() {
+        if (disabled == null) return null;
+        return disabled.toString();
+    }
+
+
+    /**
+     * Set the regular expression used to test for user who deployment is denied.
+     *
+     * @param disabled The new disabled expression
+     */
+    public void setDisabled(String disabled) {
+        if (disabled == null || disabled.length() == 0) {
+            this.disabled = null;
+        } else {
+            this.disabled = Pattern.compile(disabled);
+        }
+    }
 
     // --------------------------------------------------------- Public Methods
 
@@ -270,6 +324,7 @@ public final class UserConfig
         while (users.hasMoreElements()) {
             String user = users.nextElement();
             String home = database.getHome(user);
+            if (!isDeployEnabled(user)) continue;
             results.add(executor.submit(new DeployUserDirectory(this, user, home)));
         }
 
@@ -348,6 +403,26 @@ public final class UserConfig
 
     }
 
+    /**
+     * Test enabled and disabled rules for the provided user.
+     *
+     * @return <code>true</code> if this user is allowed to deploy,
+     *         <code>false</code> otherwise
+     */
+    private boolean isDeployEnabled(String user) {
+        if (disabled != null && disabled.matcher(user).matches()) {
+            return false;
+        }
+        if (enabled != null) {
+            if (enabled.matcher(user).matches()) {
+                return true;
+            } else {
+                return false;
+            }
+        }
+        return true;
+    }
+
     private static class DeployUserDirectory implements Runnable {
 
         private UserConfig config;

Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1309736&r1=1309735&r2=1309736&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Thu Apr  5 10:18:56 2012
@@ -53,6 +53,15 @@
   They eventually become mixed with the numbered issues. (I.e., numbered
   issues to not "pop up" wrt. others).
 -->
+<section name="Tomcat 7.0.28 (markt)">
+  <subsection name="Catalina">
+    <changelog>
+      <add>
+        Add new attributes of enabled and disabled to UserConfig. (kfujino)
+      </add>
+    </changelog>
+  </subsection>
+</section>
 <section name="Tomcat 7.0.27 (markt)">
   <subsection name="Catalina">
     <changelog>

Modified: tomcat/tc7.0.x/trunk/webapps/docs/config/listeners.xml
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/config/listeners.xml?rev=1309736&r1=1309735&r2=1309736&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/config/listeners.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/config/listeners.xml Thu Apr  5 10:18:56 2012
@@ -340,6 +340,60 @@
 
   </subsection>
 
+  <subsection name="UserConfig - org.apache.catalina.startup.UserConfig">
+
+    <p>The <strong>UserConfig</strong> provides feature of User Web Applications.
+    User Web Applications map a request URI starting with a tilde character ("~")
+    and a username to a directory (commonly named public_html) in that user's 
+    home directory on the server.</p>
+
+    <p>See the <a href="host.html#User Web Applications">User Web Applications</a>
+    special feature on the <strong>Host</strong> element for more information.</p>
+
+    <p>The following additional attributes are supported by the 
+    <strong>UserConfig</strong>:</p>
+
+    <attributes>
+
+      <attribute name="directoryName" required="false">
+        <p>The directory name to be searched for within each user home directory.
+        The default is <code>public_html</code>.</p>
+      </attribute>
+
+      <attribute name="userClass" required="false">
+        <p>The class name of the user database class.
+        There are currently two user database, the 
+        <code>org.apache.catalina.startup.PasswdUserDatabase</code> is used on a
+        Unix system that uses the /etc/passwd file to identify valid users.
+        The <code>org.apache.catalina.startup.HomesUserDatabase</code> is used on 
+        a server where /etc/passwd is not in use. HomesUserDatabase deploy all 
+        directories found in a specified base directory.</p>
+      </attribute>
+
+      <attribute name="homeBase" required="false">
+        <p>The base directory containing user home directories.This is effective 
+        only when <code>org.apache.catalina.startup.HomesUserDatabase</code> is 
+        used.</p>
+      </attribute>
+
+      <attribute name="enabled" required="false">
+        <p>A regular expression defining user who deployment is allowed. If this 
+        attribute is specified, the user to deploy must match for this pattern.
+        If this attribute is not specified, all users will be deployed unless the
+        user matches a disabled pattern.</p>
+      </attribute>
+
+      <attribute name="disabled" required="false">
+        <p>A regular expression defining user who deployment is denied. If this
+        attribute is specified, the user to deploy must not match for this
+        pattern. If this attribute is not specified, deployment of user will be
+        governed by a enabled attribute.</p>
+      </attribute>
+
+    </attributes>
+
+  </subsection>
+  
 </section>
 
 <section name="Additional Implementations">



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org