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(" ");
@@ -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