User: olegnitz
  Date: 02/02/10 09:57:43

  Modified:    jetty/src/main/org/mortbay/http/handler DumpHandler.java
                        NotFoundHandler.java NullHandler.java
                        ProxyHandler.java ResourceHandler.java
                        SecurityHandler.java
  Log:
  Fresh version of Jetty and patches to Jetty plugin by Jan Bartel
  
  Revision  Changes    Path
  1.2       +0 -0      contrib/jetty/src/main/org/mortbay/http/handler/DumpHandler.java
  
  Index: DumpHandler.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/contrib/jetty/src/main/org/mortbay/http/handler/DumpHandler.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DumpHandler.java  17 Jan 2002 01:23:19 -0000      1.1
  +++ DumpHandler.java  10 Feb 2002 17:57:43 -0000      1.2
  @@ -1,6 +1,6 @@
   // ========================================================================
   // Copyright (c) 1999 Mort Bay Consulting (Australia) Pty. Ltd.
  -// $Id: DumpHandler.java,v 1.1 2002/01/17 01:23:19 olegnitz Exp $
  +// $Id: DumpHandler.java,v 1.2 2002/02/10 17:57:43 olegnitz Exp $
   // ========================================================================
   
   package org.mortbay.http.handler;
  @@ -30,7 +30,7 @@
    * Dumps GET and POST requests.
    * Useful for testing and debugging.
    * 
  - * @version $Id: DumpHandler.java,v 1.1 2002/01/17 01:23:19 olegnitz Exp $
  + * @version $Id: DumpHandler.java,v 1.2 2002/02/10 17:57:43 olegnitz Exp $
    * @author Greg Wilkins (gregw)
    */
   public class DumpHandler extends NullHandler
  
  
  
  1.2       +4 -17     
contrib/jetty/src/main/org/mortbay/http/handler/NotFoundHandler.java
  
  Index: NotFoundHandler.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/contrib/jetty/src/main/org/mortbay/http/handler/NotFoundHandler.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- NotFoundHandler.java      17 Jan 2002 01:23:19 -0000      1.1
  +++ NotFoundHandler.java      10 Feb 2002 17:57:43 -0000      1.2
  @@ -1,6 +1,6 @@
   // ========================================================================
   // Copyright (c) 1999 Mort Bay Consulting (Australia) Pty. Ltd.
  -// $Id: NotFoundHandler.java,v 1.1 2002/01/17 01:23:19 olegnitz Exp $
  +// $Id: NotFoundHandler.java,v 1.2 2002/02/10 17:57:43 olegnitz Exp $
   // ========================================================================
   
   package org.mortbay.http.handler;
  @@ -10,19 +10,19 @@
   import java.io.OutputStreamWriter;
   import java.io.Writer;
   import org.mortbay.http.ChunkableOutputStream;
  +import org.mortbay.util.Code;
   import org.mortbay.http.HttpException;
   import org.mortbay.http.HttpFields;
   import org.mortbay.http.HttpMessage;
   import org.mortbay.http.HttpRequest;
   import org.mortbay.http.HttpResponse;
  -import org.mortbay.util.Code;
   import org.mortbay.util.StringUtil;
   
   /* ------------------------------------------------------------ */
   /** Handler for resources that were not found.
    * Implements OPTIONS and TRACE methods for the server.
    * 
  - * @version $Id: NotFoundHandler.java,v 1.1 2002/01/17 01:23:19 olegnitz Exp $
  + * @version $Id: NotFoundHandler.java,v 1.2 2002/02/10 17:57:43 olegnitz Exp $
    * @author Greg Wilkins (gregw)
    */
   public class NotFoundHandler extends NullHandler
  @@ -75,21 +75,8 @@
           
           else if (method.equals(HttpRequest.__TRACE))
           {
  -            // 9.8
  -            // Handle TRACE by returning request header
  -            response.setField(HttpFields.__ContentType,
  -                              HttpFields.__MessageHttp);
  -            ChunkableOutputStream out = response.getOutputStream();
  -            ByteArrayOutputStream buf = new ByteArrayOutputStream(2048);
  -            Writer writer = new OutputStreamWriter(buf,StringUtil.__ISO_8859_1);
  -            writer.write(request.toString());
  -            writer.flush();
  -            response.setIntField(HttpFields.__ContentLength,buf.size());
  -            buf.writeTo(out);
  -            request.setHandled(true);
  +            handleTrace(request,response);
           }
  -
  -        
           else
           {
               // Unknown METHOD
  
  
  
  1.2       +29 -3     contrib/jetty/src/main/org/mortbay/http/handler/NullHandler.java
  
  Index: NullHandler.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/contrib/jetty/src/main/org/mortbay/http/handler/NullHandler.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- NullHandler.java  17 Jan 2002 01:23:19 -0000      1.1
  +++ NullHandler.java  10 Feb 2002 17:57:43 -0000      1.2
  @@ -1,24 +1,30 @@
   // ========================================================================
   // Copyright (c) 1999 Mort Bay Consulting (Australia) Pty. Ltd.
  -// $Id: NullHandler.java,v 1.1 2002/01/17 01:23:19 olegnitz Exp $
  +// $Id: NullHandler.java,v 1.2 2002/02/10 17:57:43 olegnitz Exp $
   // ========================================================================
   
   package org.mortbay.http.handler;
   
  +import java.io.ByteArrayOutputStream;
   import java.io.IOException;
  +import java.io.OutputStreamWriter;
  +import java.io.Writer;
  +import org.mortbay.http.ChunkableOutputStream;
  +import org.mortbay.util.Code;
   import org.mortbay.http.HttpContext;
   import org.mortbay.http.HttpException;
  +import org.mortbay.http.HttpFields;
   import org.mortbay.http.HttpHandler;
   import org.mortbay.http.HttpRequest;
   import org.mortbay.http.HttpResponse;
  -import org.mortbay.util.Code;
   import org.mortbay.util.Log;
  +import org.mortbay.util.StringUtil;
   
   /* ------------------------------------------------------------ */
   /** Base HTTP Handler.
    * This No-op handler is a good base for other handlers
    *
  - * @version $Id: NullHandler.java,v 1.1 2002/01/17 01:23:19 olegnitz Exp $
  + * @version $Id: NullHandler.java,v 1.2 2002/02/10 17:57:43 olegnitz Exp $
    * @author Greg Wilkins (gregw)
    */
   abstract public class NullHandler implements HttpHandler
  @@ -65,6 +71,26 @@
           else if (_context!=context)
               throw new IllegalStateException("Can't initialize handler for different 
context");
       }
  +
  +
  +    /* ----------------------------------------------------------------- */
  +    public void handleTrace(HttpRequest request,
  +                        HttpResponse response)
  +        throws IOException
  +    {
  +        // Handle TRACE by returning request header
  +        response.setField(HttpFields.__ContentType,
  +                          HttpFields.__MessageHttp);
  +        ChunkableOutputStream out = response.getOutputStream();
  +        ByteArrayOutputStream buf = new ByteArrayOutputStream(2048);
  +        Writer writer = new OutputStreamWriter(buf,StringUtil.__ISO_8859_1);
  +        writer.write(request.toString());
  +        writer.flush();
  +        response.setIntField(HttpFields.__ContentLength,buf.size());
  +        buf.writeTo(out);
  +        request.setHandled(true);
  +    }
  +    
       
       /* ----------------------------------------------------------------- */
       public void start()
  
  
  
  1.2       +0 -0      
contrib/jetty/src/main/org/mortbay/http/handler/ProxyHandler.java
  
  Index: ProxyHandler.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/contrib/jetty/src/main/org/mortbay/http/handler/ProxyHandler.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ProxyHandler.java 17 Jan 2002 01:23:19 -0000      1.1
  +++ ProxyHandler.java 10 Feb 2002 17:57:43 -0000      1.2
  @@ -1,6 +1,6 @@
   // ========================================================================
   // Copyright (c) 1999 Mort Bay Consulting (Australia) Pty. Ltd.
  -// $Id: ProxyHandler.java,v 1.1 2002/01/17 01:23:19 olegnitz Exp $
  +// $Id: ProxyHandler.java,v 1.2 2002/02/10 17:57:43 olegnitz Exp $
   // ========================================================================
   
   package org.mortbay.http.handler;
  @@ -29,7 +29,7 @@
    * Dumps GET and POST requests.
    * Useful for testing and debugging.
    * 
  - * @version $Id: ProxyHandler.java,v 1.1 2002/01/17 01:23:19 olegnitz Exp $
  + * @version $Id: ProxyHandler.java,v 1.2 2002/02/10 17:57:43 olegnitz Exp $
    * @author Greg Wilkins (gregw)
    */
   public class ProxyHandler extends NullHandler
  
  
  
  1.2       +19 -23    
contrib/jetty/src/main/org/mortbay/http/handler/ResourceHandler.java
  
  Index: ResourceHandler.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/contrib/jetty/src/main/org/mortbay/http/handler/ResourceHandler.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ResourceHandler.java      17 Jan 2002 01:23:19 -0000      1.1
  +++ ResourceHandler.java      10 Feb 2002 17:57:43 -0000      1.2
  @@ -1,6 +1,6 @@
   // ===========================================================================
   // Copyright (c) 1996 Mort Bay Consulting Pty. Ltd. All rights reserved.
  -// $Id: ResourceHandler.java,v 1.1 2002/01/17 01:23:19 olegnitz Exp $
  +// $Id: ResourceHandler.java,v 1.2 2002/02/10 17:57:43 olegnitz Exp $
   // ---------------------------------------------------------------------------
   
   package org.mortbay.http.handler;
  @@ -43,7 +43,7 @@
    * A simple memory cache is also provided to reduce file I/O.
    * HTTP/1.1 ranges are supported.
    * 
  - * @version $Id: ResourceHandler.java,v 1.1 2002/01/17 01:23:19 olegnitz Exp $
  + * @version $Id: ResourceHandler.java,v 1.2 2002/02/10 17:57:43 olegnitz Exp $
    * @author Nuno Pregui�a 
    * @author Greg Wilkins
    */
  @@ -64,10 +64,11 @@
       private boolean _acceptRanges=true;
       
       /* ------------------------------------------------------------ */
  -    List _indexFiles =new ArrayList(2);
  +    List _indexFiles =new ArrayList(4);
       {
           _indexFiles.add("index.html");
           _indexFiles.add("index.htm");
  +        _indexFiles.add("index.jsp");
       }
    
       /* ------------------------------------------------------------ */
  @@ -137,8 +138,10 @@
       /* ------------------------------------------------------------ */
       public void addIndexFile(String indexFile)
       {
  -        if (indexFile.indexOf("/")>=0 ||
  -            indexFile.indexOf(java.io.File.separator)>=0)
  +        if (indexFile.startsWith("/") ||
  +            indexFile.startsWith(java.io.File.separator) ||
  +            indexFile.endsWith("/") ||
  +            indexFile.endsWith(java.io.File.separator))
               Code.warning("Invalid index file: "+indexFile);
           _indexFiles.add(indexFile);
       }
  @@ -256,7 +259,7 @@
           
           try
           {
  -            resource = baseResource.addPath(pathInContext);
  +            resource = baseResource.addPath(URI.encodePath(pathInContext));
               Code.debug("PATH=",pathInContext,
                          " RESOURCE=",resource);
               
  @@ -275,6 +278,8 @@
                   handleOptions(response, pathInContext);
               else if (method.equals(HttpRequest.__MOVE))
                   handleMove(request, response, pathInContext, resource);
  +            else if (method.equals(HttpRequest.__TRACE))
  +                handleTrace(request, response);
               else
               {
                   Code.debug("Unknown action:"+method);
  @@ -364,7 +369,8 @@
                       {
                           // Forward to the index
                           String 
ipath=URI.addPaths(pathInContext,(String)_indexFiles.get(i));
  -                        
  +                        URI uri=request.getURI();
  +                        
uri.setPath(URI.addPaths(uri.getPath(),(String)_indexFiles.get(i)));
                           getHttpContext().handle(0,ipath,null,request,response);
                           return;
                       }
  @@ -822,7 +828,7 @@
               if (parent)
               {
                   out.write("<TR><TD><A HREF=");
  -                out.write(padSpaces(URI.addPaths(base,"../")));
  +                out.write(URI.encodePath(URI.addPaths(base,"../")));
                   out.write(">Parent Directory</A></TD><TD></TD><TD></TD></TR>\n");
               }
        
  @@ -830,13 +836,15 @@
                                                              DateFormat.MEDIUM);
               for (int i=0 ; i< ls.length ; i++)
               {
  -                Resource item = file.addPath(ls[i]);
  +                String encoded=URI.encodePath(ls[i]);
  +                Resource item = file.addPath(encoded);
     
                   out.write("<TR><TD><A HREF=\"");
  -                String path=URI.addPaths(base,ls[i]);
  +                String path=URI.addPaths(base,encoded);
  +                
                   if (item.isDirectory() && !path.endsWith("/"))
                       path=URI.addPaths(path,"/");
  -                out.write(padSpaces(path));
  +                out.write(path);
                   out.write("\">");
                   out.write(ls[i]);
                   out.write("&nbsp;");
  @@ -857,18 +865,6 @@
                                  "Directory access not allowed");
           }
       }
  -
  -
  - 
  -    /* ------------------------------------------------------------ */
  -    /**
  -     * Replaces spaces by %20
  -     */
  -    private String padSpaces(String str)
  -    {
  -        return StringUtil.replace(str," ","%20");
  -    }
  - 
   
    
       /* ------------------------------------------------------------ */
  
  
  
  1.2       +46 -34    
contrib/jetty/src/main/org/mortbay/http/handler/SecurityHandler.java
  
  Index: SecurityHandler.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/contrib/jetty/src/main/org/mortbay/http/handler/SecurityHandler.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SecurityHandler.java      17 Jan 2002 01:23:20 -0000      1.1
  +++ SecurityHandler.java      10 Feb 2002 17:57:43 -0000      1.2
  @@ -1,6 +1,6 @@
   // ========================================================================
   // Copyright (c) 1999 Mort Bay Consulting (Australia) Pty. Ltd.
  -// $Id: SecurityHandler.java,v 1.1 2002/01/17 01:23:20 olegnitz Exp $
  +// $Id: SecurityHandler.java,v 1.2 2002/02/10 17:57:43 olegnitz Exp $
   // ========================================================================
   
   package org.mortbay.http.handler;
  @@ -33,7 +33,7 @@
   /* ------------------------------------------------------------ */
   /** Handler to enforce SecurityConstraints.
    *
  - * @version $Id: SecurityHandler.java,v 1.1 2002/01/17 01:23:20 olegnitz Exp $
  + * @version $Id: SecurityHandler.java,v 1.2 2002/02/10 17:57:43 olegnitz Exp $
    * @author Greg Wilkins (gregw)
    */
   public class SecurityHandler extends NullHandler
  @@ -192,7 +192,7 @@
                   while(j.hasNext())
                   {
                       SecurityConstraint sc = (SecurityConstraint)j.next();
  -                    if (sc.isAuthenticated())
  +                    if (sc.isAuthenticate())
                       {
                           Code.warning("No Realm set for "+this);
                           super.start();
  @@ -275,19 +275,25 @@
                           continue;
                       
                       // Does this forbid everything?
  -                    if (!sc.isAuthenticated() &&!sc.hasDataConstraint())
  +                    if (sc.isForbidden())
                       {
                           response.sendError(HttpResponse.__403_Forbidden);
                           return;
                       }
                       
                       // Does it fail a role check?
  -                    if (sc.isAuthenticated() &&
  -                        !sc.hasRole(SecurityConstraint.NONE) &&
  -                        
!authenticatedInRole(pathInContext,pathParams,request,response,sc.roles()))
  -                        // return as an auth challenge will have been set
  -                        return;
  -                    
  +                    if (sc.isAuthenticate())
  +                    {
  +                        UserPrincipal user =
  +                            authenticate(pathInContext,pathParams,request,response);
  +                        if (user==null)
  +                            return; // Auth challenge or redirection already sent
  +
  +                        if (!sc.isAnyRole() &&
  +                            !userInRole(user,sc.getRoles(),request,response))
  +                            return; // role failed.
  +                    }
  +                
                       // Does it fail a data constraint
                       if (sc.hasDataConstraint() &&
                           sc.getDataConstraint() > SecurityConstraint.DC_NONE &&
  @@ -314,14 +320,10 @@
       }
   
       /* ------------------------------------------------------------ */
  -    /** 
  -     * @return True if request is authenticated in the role.
  -     */
  -    private boolean authenticatedInRole(String pathInContext,
  -                                        String pathParams,
  -                                        HttpRequest request,
  -                                        HttpResponse response,
  -                                        Iterator roles)
  +    private UserPrincipal authenticate(String pathInContext,
  +                                       String pathParams,
  +                                       HttpRequest request,
  +                                       HttpResponse response)
           throws IOException
       {
           boolean userAuth=false;
  @@ -331,12 +333,10 @@
           else if (__FORM_AUTH.equals(_authMethod))
           {
               if (_formAuthenticator==null)
  -            {
                   response.sendError(HttpResponse.__500_Internal_Server_Error);
  -                return false;
  -            }
  -            userAuth= _formAuthenticator
  -                .formAuthenticated(this,pathInContext,pathParams,request,response);
  +            else
  +                userAuth= _formAuthenticator
  +                    
.formAuthenticated(this,pathInContext,pathParams,request,response);
           }
           else
           {
  @@ -346,25 +346,37 @@
           }
           
           if (!userAuth)
  -            return false;
  +            return null;
  +        return (UserPrincipal) request.getUserPrincipal();
  +    }
  +    
   
  +    /* ------------------------------------------------------------ */
  +    /** 
  +     * @return True if request is authenticated in the role.
  +     */
  +    private boolean userInRole(UserPrincipal user,
  +                               List roles,
  +                               HttpRequest request,
  +                               HttpResponse response)
  +        throws IOException
  +    {
           // Check if user is in a role that is suitable
           boolean inRole=false;
  -        Principal principal=request.getUserPrincipal();
  -        if (principal!=null && principal instanceof UserPrincipal)
  +
  +        if (roles!=null)
           {
  -            UserPrincipal userPrincipal= (UserPrincipal)principal;
  -            while(roles.hasNext())
  +            for (int r=roles.size();r-->0;)
               {
  -                String role=roles.next().toString();            
  -                if (userPrincipal.isUserInRole(role))
  +                String role=roles.get(r).toString();            
  +                if (user.isUserInRole(role))
                   {
                       inRole=true;
                       break;
                   }
               }
           }
  -
  +        
           // If no role reject authentication.
           if (!inRole)
           {
  @@ -374,14 +386,14 @@
               {
                   response.setField(HttpFields.__WwwAuthenticate,
                                     "basic realm=\""+_realmName+'"');
  -                response.sendError(HttpResponse.__401_Unauthorized);
  +                response.sendError(HttpResponse.__401_Unauthorized,"User not in 
role");
               }
               else
  -                response.sendError(HttpResponse.__403_Forbidden);
  +                response.sendError(HttpResponse.__403_Forbidden,"User not in role");
               return false;
           }
           
  -        return userAuth && inRole;
  +        return inRole;
       }
       
   
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to