larryi      02/02/08 04:48:04

  Modified:    src/share/org/apache/tomcat/modules/server
                        Ajp13Interceptor.java
  Log:
  Since the ajp13.id file is always written, a "shutdown" property is added
  to the file to indicate that shutdown is enabled.
  
  Added an authenticateRequests attribute so a secret may be set for
  shutdown purposes and it still be able to work with Tomcat 3.3's mod_jk
  based connectors. It defaults to not authenticating.
  
  Revision  Changes    Path
  1.19      +25 -10    
jakarta-tomcat/src/share/org/apache/tomcat/modules/server/Ajp13Interceptor.java
  
  Index: Ajp13Interceptor.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/modules/server/Ajp13Interceptor.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- Ajp13Interceptor.java     7 Feb 2002 05:07:36 -0000       1.18
  +++ Ajp13Interceptor.java     8 Feb 2002 12:48:04 -0000       1.19
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/modules/server/Ajp13Interceptor.java,v
 1.18 2002/02/07 05:07:36 costin Exp $
  - * $Revision: 1.18 $
  - * $Date: 2002/02/07 05:07:36 $
  + * $Header: 
/home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/modules/server/Ajp13Interceptor.java,v
 1.19 2002/02/08 12:48:04 larryi Exp $
  + * $Revision: 1.19 $
  + * $Date: 2002/02/08 12:48:04 $
    *
    * ====================================================================
    *
  @@ -86,8 +86,9 @@
       private boolean decoded=true;
   
       private int decodedNote;
  -    private String secret;
  -    private File ajpidFile;
  +    private String secret=null;
  +    private File ajpidFile=null;
  +    private boolean authenticateRequests=false;
       
       public Ajp13Interceptor()
       {
  @@ -122,6 +123,7 @@
        */
       public void setUseSecret(boolean b ) {
        secret=Double.toString(Math.random());
  +        shutDownEnable=true;
       }
   
       /** Set the 'secret'. If this is set, all sensitive operations
  @@ -140,8 +142,13 @@
       public void setAjpidFile( String path ) {
           ajpidFile=( path==null?null:new File(path));
       }
  -    
  -    
  +
  +    /** Specify if Ajp13 requests must be authenticated
  +     */
  +    public void setAuthenticateRequests( boolean b ) {
  +        authenticateRequests=b;
  +    }
  +
       public void setDecodedUri( boolean b ) {
        decoded=b;
       }
  @@ -163,7 +170,7 @@
       {
   
           if( state==ContextManager.STATE_START ) {
  -            // the engine is now started, create the ajp12.id
  +            // the engine is now started, create the ajp13.id
               // file that will allow us to stop the server and
               // know that the server is started ok.
               Ajp13Interceptor tcpCon=this;
  @@ -193,6 +200,8 @@
                   } else {
                       // stopF.println();
                   }
  +                if( shutDownEnable )
  +                    props.put( "shutdown", "enabled" );
                   //            stopF.close();
                   props.save( stopF, "Automatically generated, don't edit" );
               } catch( IOException ex ) {
  @@ -266,9 +275,10 @@
   
               boolean moreRequests = true;
               boolean authenticated = false;
  -            // If we are not configured with a secret, assume
  +            // If we are not configured with a secret or we are
  +            // not authenticating requests, assume
               // we trust the remote party ( as we did before )
  -            if( secret == null )
  +            if( secret == null || !authenticateRequests )
                   authenticated=true;
               
               while(moreRequests) {
  @@ -291,6 +301,11 @@
                   }
                   
                if( status==-2) {
  +                    // check secret if set
  +                    if( secret != null && ! secret.equals(con.getSecret())) {
  +                        log("Shutdown command ignored. Secret didn't match.");
  +                        continue;
  +                    }
                    // special case - shutdown
                    // XXX need better communication, refactor it
                    if( !doShutdown(con,
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to