tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From lar...@apache.org
Subject cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/modules/config ApacheConfig.java
Date Fri, 17 Aug 2001 03:53:24 GMT
larryi      01/08/16 20:53:24

  Modified:    src/share/org/apache/tomcat/modules/config ApacheConfig.java
  Log:
  Update to make all contexts for a virtual host appear within a single
  <Virtual Host> block.  For a root context in a virtual host, set DocumentRoot
  instead of a using "Alias / ...".  For a root context outside of a virtual host,
  supply an appropriate message about DocumentRoot.  Can't override the
  one in httpd.conf.
  
  Revision  Changes    Path
  1.26      +86 -60    jakarta-tomcat/src/share/org/apache/tomcat/modules/config/ApacheConfig.java
  
  Index: ApacheConfig.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/modules/config/ApacheConfig.java,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- ApacheConfig.java	2001/08/16 05:22:41	1.25
  +++ ApacheConfig.java	2001/08/17 03:53:24	1.26
  @@ -1,4 +1,4 @@
  -/* $Id: ApacheConfig.java,v 1.25 2001/08/16 05:22:41 larryi Exp $
  +/* $Id: ApacheConfig.java,v 1.26 2001/08/17 03:53:24 larryi Exp $
    * ====================================================================
    *
    * The Apache Software License, Version 1.1
  @@ -146,7 +146,7 @@
       @author Costin Manolache
       @author Larry Isaacs
       @author Mel Martinez
  -	@version $Revision: 1.25 $ $Date: 2001/08/16 05:22:41 $
  +	@version $Revision: 1.26 $ $Date: 2001/08/17 03:53:24 $
    */
   public class ApacheConfig  extends BaseJkConfig { 
       
  @@ -293,17 +293,44 @@
   	    // XXX Make those options configurable in server.xml
   	    generateSSLConfig( mod_jk );
   
  +            Hashtable vhosts = new Hashtable();
  +
       	    // Set up contexts
       	    // XXX deal with Virtual host configuration !!!!
       	    Enumeration  enum = cm.getContexts();
       	    while (enum.hasMoreElements()) {
                   Context context = (Context)enum.nextElement();
  -		if( forwardAll )
  -		    generateStupidMappings( context, mod_jk );
  -		else
  -		    generateContextMappings( context, mod_jk );
  +                String host = context.getHost();
  +                if( host == null ) {
  +                    if( forwardAll )
  +                        generateStupidMappings( context, mod_jk );
  +                    else
  +                        generateContextMappings( context, mod_jk );
  +                } else {
  +                    Vector vhostContexts = (Vector)vhosts.get(host);
  +                    if ( vhostContexts == null ) {
  +                        vhostContexts = new Vector();
  +                        vhosts.put(host,vhostContexts);
  +                    }
  +                    vhostContexts.addElement(context);
  +                }
       	    }
   
  +            enum = vhosts.elements();
  +            while( enum.hasMoreElements() ) {
  +                Vector vhostContexts = (Vector)enum.nextElement();
  +                for( int i = 0; i < vhostContexts.size(); i++ ) {
  +                    Context context = (Context)vhostContexts.elementAt(i);
  +                    if( i == 0 )
  +                        generateVhostHead( context, mod_jk );
  +                    if( forwardAll )
  +                        generateStupidMappings( context, mod_jk );
  +                    else
  +                        generateContextMappings( context, mod_jk );
  +                }
  +                generateVhostTail( mod_jk );
  +            }
  +
       	    mod_jk.close();        
       	} catch( Exception ex ) {
               Log loghelper = Log.getLog("tc_log", this);
  @@ -367,6 +394,32 @@
   	}
   	return true;
       }
  +
  +    private void generateVhostHead(Context context, PrintWriter mod_jk) {
  +	String ctxPath  = context.getPath();
  +	String vhost = context.getHost();
  +
  +        mod_jk.println();
  +        String vhostip = getVirtualHostAddress(vhost,
  +                                            context.getHostAddress());
  +        generateNameVirtualHost(mod_jk, vhostip);
  +        mod_jk.println("<VirtualHost "+ vhostip + ">");
  +        mod_jk.println("    ServerName " + vhost );
  +        Enumeration aliases=context.getHostAliases();
  +        if( aliases.hasMoreElements() ) {
  +            mod_jk.print("    ServerAlias " );
  +            while( aliases.hasMoreElements() ) {
  +                mod_jk.print( (String)aliases.nextElement() + " " );
  +            }
  +            mod_jk.println();
  +        }
  +        indent="    ";
  +    }
  +
  +    private void generateVhostTail(PrintWriter mod_jk) {
  +        mod_jk.println("</VirtualHost>");
  +        indent="";
  +    }
       
       private void generateSSLConfig(PrintWriter mod_jk) {
   	if( ! sslExtract ) {
  @@ -405,36 +458,23 @@
               log("Ignoring root context in forward-all mode  ");
               return;
           } 
  -	if( vhost != null ) {
  -            String vhostip = getVirtualHostAddress(vhost,
  -                                            context.getHostAddress());
  -	    generateNameVirtualHost(mod_jk, vhostip);
  -	    mod_jk.println("<VirtualHost "+ vhostip + ">");
  -	    mod_jk.println("    ServerName " + vhost );
  -	    Enumeration aliases=context.getHostAliases();
  -	    if( aliases.hasMoreElements() ) {
  -		mod_jk.print("    ServerAlias " );
  -		while( aliases.hasMoreElements() ) {
  -		    mod_jk.print( (String)aliases.nextElement() + " " );
  -		}
  -		mod_jk.println();
  -	    }
  -	    indent="    ";
  -	}
  +
  +        mod_jk.println();
   	mod_jk.println(indent + "JkMount " +  nPath + " " + jkProto );
   	if( "".equals(ctxPath) ) {
   	    mod_jk.println(indent + "JkMount " +  nPath + "* " + jkProto );
  -            mod_jk.println(indent +
  -                    "# Note: To correctly serve the Tomcat's root context, DocumentRoot
must");
  -            mod_jk.println(indent +
  -                    "# must be set to: \"" + getApacheDocBase(context) + "\"");
  +            if ( vhost != null ) {
  +                mod_jk.println(indent + "DocumentRoot \"" +
  +                            getApacheDocBase(context) + "\"");
  +            } else {
  +                mod_jk.println(indent +
  +                        "# To avoid Apache serving root welcome files from htdocs, update
DocumentRoot");
  +                mod_jk.println(indent +
  +                        "# to point to: \"" + getApacheDocBase(context) + "\"");
  +            }
  +
   	} else
   	    mod_jk.println(indent + "JkMount " +  nPath + "/* " + jkProto );
  -	if( vhost != null ) {
  -	    mod_jk.println("</VirtualHost>");
  -            mod_jk.println();
  -	    indent="";
  -	}
       }    
   
       
  @@ -456,31 +496,16 @@
           if( noRoot &&  "".equals(ctxPath) ) {
               log("Ignoring root context in non-forward-all mode  ");
               return;
  -        } 
  +        }
  +
   	mod_jk.println();
  -	mod_jk.println("#################### " +
  +	mod_jk.println(indent + "#################### " +
   		       ((vhost!=null ) ? vhost + ":" : "" ) +
   		       (("".equals(ctxPath)) ? "/" : ctxPath ) +
   		       " ####################" );
           mod_jk.println();
  -	if( vhost != null ) {
  -            String vhostip = getVirtualHostAddress(vhost,
  -                                            context.getHostAddress());
  -	    generateNameVirtualHost(mod_jk, vhostip);
  -	    mod_jk.println("<VirtualHost " + vhostip + ">");
  -	    mod_jk.println("    ServerName " + vhost );
  -	    Enumeration aliases=context.getHostAliases();
  -	    if( aliases.hasMoreElements() ) {
  -		mod_jk.print("    ServerAlias " );
  -		while( aliases.hasMoreElements() ) {
  -		    mod_jk.print( (String)aliases.nextElement() + " " );
  -		}
  -		mod_jk.println();
  -	    }
  -	    indent="    ";
  -	}
   	// Dynamic /servet pages go to Tomcat
  -	
  + 
   	generateStaticMappings( context, mod_jk );
   
   	// InvokerInterceptor - it doesn't have a container,
  @@ -507,10 +532,6 @@
   	// XXX ErrorDocument
   	// Security and filter mappings
   	    
  -	if( vhost != null ) {
  -	    mod_jk.println("</VirtualHost>");
  -	    indent="";
  -	}
       }
   
       /** Add an Apache extension mapping.
  @@ -562,12 +583,17 @@
               mod_jk.println(indent + "Alias " + ctxPath + " \"" + docBase + "\"");
               mod_jk.println();
           } else {
  -            // For root context, ask user to update DocumentRoot setting.
  -            // Using "Alias / " interferes with the Alias for other contexts.
  -            mod_jk.println(indent +
  -                    "# To correctly serve the Tomcat's root context, DocumentRoot must");
  -            mod_jk.println(indent +
  -                    "# must be set to: \"" + docBase + "\"");
  +            if ( context.getHost() != null ) {
  +                mod_jk.println(indent + "DocumentRoot \"" +
  +                            getApacheDocBase(context) + "\"");
  +            } else {
  +                // For root context, ask user to update DocumentRoot setting.
  +                // Using "Alias / " interferes with the Alias for other contexts.
  +                mod_jk.println(indent +
  +                        "# Be sure to update DocumentRoot");
  +                mod_jk.println(indent +
  +                        "# to point to: \"" + docBase + "\"");
  +            }
           }
   	mod_jk.println(indent + "<Directory \"" + docBase + "\">");
   	mod_jk.println(indent + "    Options Indexes FollowSymLinks");
  
  
  

Mime
View raw message