cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets DefaultServlet.java WebdavServlet.java

2002-03-09 Thread remm

remm02/03/09 15:22:38

  Modified:catalina/src/share/org/apache/catalina/servlets
DefaultServlet.java WebdavServlet.java
  Log:
  - Add some hooks to allow the directory context implementation
to compute strong etags.
  
  Revision  ChangesPath
  1.51  +22 -26
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java
  
  Index: DefaultServlet.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java,v
  retrieving revision 1.50
  retrieving revision 1.51
  diff -u -r1.50 -r1.51
  --- DefaultServlet.java   8 Jan 2002 12:14:57 -   1.50
  +++ DefaultServlet.java   9 Mar 2002 23:22:38 -   1.51
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java,v
 1.50 2002/01/08 12:14:57 remm Exp $
  - * $Revision: 1.50 $
  - * $Date: 2002/01/08 12:14:57 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java,v
 1.51 2002/03/09 23:22:38 remm Exp $
  + * $Revision: 1.51 $
  + * $Date: 2002/03/09 23:22:38 $
*
* 
*
  @@ -125,7 +125,7 @@
*
* @author Craig R. McClanahan
* @author Remy Maucherat
  - * @version $Revision: 1.50 $ $Date: 2002/01/08 12:14:57 $
  + * @version $Revision: 1.51 $ $Date: 2002/03/09 23:22:38 $
*/
   
   public class DefaultServlet
  @@ -785,7 +785,7 @@
ResourceInfo resourceInfo)
   throws IOException {
   
  -String eTag = getETag(resourceInfo, true);
  +String eTag = getETag(resourceInfo);
   long fileLength = resourceInfo.length;
   long lastModified = resourceInfo.date;
   
  @@ -918,31 +918,21 @@
   
   
   /**
  - * Get the ETag value associated with a file.
  - *
  - * @param resourceInfo File object
  - * @param strong True if we want a strong ETag, in which case a checksum
  - * of the file has to be calculated
  - */
  -protected String getETagValue(ResourceInfo resourceInfo, boolean strong) {
  -// FIXME : Compute a strong ETag if requested, using an MD5 digest
  -// of the file contents
  -return resourceInfo.length + - + resourceInfo.date;
  -}
  -
  -
  -/**
* Get the ETag associated with a file.
*
* @param resourceInfo File object
* @param strong True if we want a strong ETag, in which case a checksum
* of the file has to be calculated
*/
  -protected String getETag(ResourceInfo resourceInfo, boolean strong) {
  -if (strong)
  -return \ + getETagValue(resourceInfo, strong) + \;
  -else
  -return W/\ + getETagValue(resourceInfo, strong) + \;
  +protected String getETag(ResourceInfo resourceInfo) {
  +if (resourceInfo.strongETag != null) {
  +return resourceInfo.strongETag;
  +} else if (resourceInfo.weakETag != null) {
  +return resourceInfo.weakETag;
  +} else {
  +return W/\ + resourceInfo.length + - 
  ++ resourceInfo.date + \;
  +}
   }
   
   
  @@ -1199,7 +1189,7 @@
   ranges = parseRange(request, response, resourceInfo);
   
   // ETag header
  -response.setHeader(ETag, getETag(resourceInfo, true));
  +response.setHeader(ETag, getETag(resourceInfo));
   
   // Last-Modified header
   if (debug  0)
  @@ -1416,7 +1406,7 @@
   String headerValue = request.getHeader(If-Range);
   if (headerValue != null) {
   
  -String eTag = getETag(resourceInfo, true);
  +String eTag = getETag(resourceInfo);
   long lastModified = resourceInfo.date;
   
   Date date = null;
  @@ -2269,6 +2259,8 @@
   public long date;
   public long length;
   public boolean collection;
  +public String weakETag;
  +public String strongETag;
   public boolean exists;
   public DirContext resources;
   protected InputStream is;
  @@ -2285,6 +2277,8 @@
   date = 0;
   length = -1;
   collection = true;
  +weakETag = null;
  +strongETag = null;
   exists = false;
   resources = null;
   is = null;
  @@ -2329,6 +2323,8 @@
   } else {
   httpDate = FastHttpDateFormat.getCurrentDate();
   }
  +weakETag = tempAttrs.getETag();
  +strongETag = tempAttrs.getETag(true);
   length = tempAttrs.getContentLength();

cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets DefaultServlet.java WebdavServlet.java

2001-04-05 Thread remm

remm01/04/05 19:45:48

  Modified:catalina/src/share/org/apache/catalina/servlets
DefaultServlet.java WebdavServlet.java
  Log:
  - Add addiotional check to prevent using DELETE and PUT on URLs
starting with /WEB-INF and /META-INF.
  
  Revision  ChangesPath
  1.35  +16 -4 
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java
  
  Index: DefaultServlet.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- DefaultServlet.java   2001/04/05 18:47:50 1.34
  +++ DefaultServlet.java   2001/04/06 02:45:48 1.35
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java,v
 1.34 2001/04/05 18:47:50 remm Exp $
  - * $Revision: 1.34 $
  - * $Date: 2001/04/05 18:47:50 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java,v
 1.35 2001/04/06 02:45:48 remm Exp $
  + * $Revision: 1.35 $
  + * $Date: 2001/04/06 02:45:48 $
*
* 
*
  @@ -122,7 +122,7 @@
*
* @author Craig R. McClanahan
* @author Remy Maucherat
  - * @version $Revision: 1.34 $ $Date: 2001/04/05 18:47:50 $
  + * @version $Revision: 1.35 $ $Date: 2001/04/06 02:45:48 $
*/
   
   public class DefaultServlet
  @@ -575,6 +575,12 @@
   
   String path = getRelativePath(req);
   
  +if ((path.toUpperCase().startsWith("/WEB-INF")) ||
  +(path.toUpperCase().startsWith("/META-INF"))) {
  +resp.sendError(HttpServletResponse.SC_FORBIDDEN);
  +return;
  +}
  +
   // Looking for a Content-Range header
   if (req.getHeader("Content-Range") != null) {
   // No content range header is supported
  @@ -636,6 +642,12 @@
   }
   
   String path = getRelativePath(req);
  +
  +if ((path.toUpperCase().startsWith("/WEB-INF")) ||
  +(path.toUpperCase().startsWith("/META-INF"))) {
  +resp.sendError(HttpServletResponse.SC_FORBIDDEN);
  +return;
  +}
   
   // Retrieve the Catalina context
   // Retrieve the resources
  
  
  
  1.17  +10 -4 
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java
  
  Index: WebdavServlet.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- WebdavServlet.java2001/04/05 19:03:08 1.16
  +++ WebdavServlet.java2001/04/06 02:45:48 1.17
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java,v
 1.16 2001/04/05 19:03:08 remm Exp $
  - * $Revision: 1.16 $
  - * $Date: 2001/04/05 19:03:08 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java,v
 1.17 2001/04/06 02:45:48 remm Exp $
  + * $Revision: 1.17 $
  + * $Date: 2001/04/06 02:45:48 $
*
* 
*
  @@ -125,7 +125,7 @@
* are handled by the DefaultServlet.
*
* @author Remy Maucherat
  - * @version $Revision: 1.16 $ $Date: 2001/04/05 19:03:08 $
  + * @version $Revision: 1.17 $ $Date: 2001/04/06 02:45:48 $
*/
   
   public class WebdavServlet
  @@ -1685,6 +1685,12 @@
   private boolean deleteResource(String path, HttpServletRequest req, 
  HttpServletResponse resp)
   throws ServletException, IOException {
  +
  +if ((path.toUpperCase().startsWith("/WEB-INF")) ||
  +(path.toUpperCase().startsWith("/META-INF"))) {
  +resp.sendError(WebdavStatus.SC_FORBIDDEN);
  +return false;
  +}
   
   String ifHeader = req.getHeader("If");
   if (ifHeader == null)
  
  
  



cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets DefaultServlet.java WebdavServlet.java

2001-01-24 Thread remm

remm01/01/24 21:45:41

  Modified:catalina/src/share/org/apache/catalina/servlets
DefaultServlet.java WebdavServlet.java
  Log:
  - Update PROPFIND to use streaming (as the response could get very big).
  - Fix a bug where href elements could include incorrect paths containing "//".
  - Avoid putting the '' character in the XML response.
  
  Revision  ChangesPath
  1.21  +13 -4 
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java
  
  Index: DefaultServlet.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- DefaultServlet.java   2001/01/23 04:47:57 1.20
  +++ DefaultServlet.java   2001/01/25 05:45:40 1.21
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java,v
 1.20 2001/01/23 04:47:57 remm Exp $
  - * $Revision: 1.20 $
  - * $Date: 2001/01/23 04:47:57 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java,v
 1.21 2001/01/25 05:45:40 remm Exp $
  + * $Revision: 1.21 $
  + * $Date: 2001/01/25 05:45:40 $
*
* 
*
  @@ -119,7 +119,7 @@
*
* @author Craig R. McClanahan
* @author Remy Maucherat
  - * @version $Revision: 1.20 $ $Date: 2001/01/23 04:47:57 $
  + * @version $Revision: 1.21 $ $Date: 2001/01/25 05:45:40 $
*/
   
   public class DefaultServlet
  @@ -911,6 +911,15 @@
if (index  0)
break;
normalized = normalized.substring(0, index) + "%20"
  + + normalized.substring(index + 1);
  + }
  +
  + // Replace "" with "%26"
  +while (true) {
  + int index = normalized.indexOf("");
  + if (index  0)
  + break;
  + normalized = normalized.substring(0, index) + "%26"
+ normalized.substring(index + 1);
}
   
  
  
  
  1.11  +23 -13
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java
  
  Index: WebdavServlet.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- WebdavServlet.java2001/01/23 04:47:57 1.10
  +++ WebdavServlet.java2001/01/25 05:45:40 1.11
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java,v
 1.10 2001/01/23 04:47:57 remm Exp $
  - * $Revision: 1.10 $
  - * $Date: 2001/01/23 04:47:57 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java,v
 1.11 2001/01/25 05:45:40 remm Exp $
  + * $Revision: 1.11 $
  + * $Date: 2001/01/25 05:45:40 $
*
* 
*
  @@ -124,7 +124,7 @@
* are handled by the DefaultServlet.
*
* @author Remy Maucherat
  - * @version $Revision: 1.10 $ $Date: 2001/01/23 04:47:57 $
  + * @version $Revision: 1.11 $ $Date: 2001/01/25 05:45:40 $
*/
   
   public class WebdavServlet
  @@ -507,7 +507,7 @@
   resp.setStatus(WebdavStatus.SC_MULTI_STATUS);
   
   // Create multistatus object
  -XMLWriter generatedXML = new XMLWriter();
  +XMLWriter generatedXML = new XMLWriter(resp.getWriter());
   generatedXML.writeXMLHeader();
   
   generatedXML.writeElement(null, "multistatus" 
  @@ -543,7 +543,7 @@
   NameClassPair ncPair = 
   (NameClassPair) enum.nextElement();
   String newPath = currentPath;
  -if (!newPath.equals("/"))
  +if (!(newPath.endsWith("/")))
   newPath += "/";
   newPath += ncPair.getName();
   stackBelow.push(newPath);
  @@ -581,15 +581,21 @@
   stackBelow = new Stack();
   }
   
  +generatedXML.sendData();
  +
   }
   }
   
   generatedXML.writeElement(null, "multistatus", 
 XMLWriter.CLOSING);
   
  +generatedXML.sendData();
  +
  +/*
   Writer writer = resp.getWriter();
   writer.write(generatedXML.toString());
   writer.flush();
  +*/
   
   }
   
  @@ -1906,8 +1912,9 @@
  

cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets DefaultServlet.java WebdavServlet.java

2000-11-08 Thread remm

remm00/11/08 23:22:24

  Modified:catalina/src/share/org/apache/catalina/servlets
DefaultServlet.java WebdavServlet.java
  Log:
  - Add a debug method in the DefaultServlet, which will output to System.out
all the info about the request. It should be useful to debug conditional
requests and ranged requests.
  - In the WebDAV servlet, one of the XMLWriters I was using wasn't
properly initialized. As a result, the XML header wasn't present in the
XML sent back to the client, which may have caused various problems with some
clients.
  - Now use ISO date format for the creationdate property.
  - Fixes one or two cosmetic issues in the code layout.
  - The displayname property now have a more "friendly" value (the '/' are
replaced by '_')
  - The JSP include fix intrduced a bug : The response stream was not opened at
the right time, so chunking was enabled all the time (it seems).
Note : We should decide if we chunk or not in a more robust way. It will be
addressed in a future patch.
  
  Revision  ChangesPath
  1.12  +141 -23   
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java
  
  Index: DefaultServlet.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- DefaultServlet.java   2000/10/17 19:45:27 1.11
  +++ DefaultServlet.java   2000/11/09 07:22:22 1.12
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java,v
 1.11 2000/10/17 19:45:27 craigmcc Exp $
  - * $Revision: 1.11 $
  - * $Date: 2000/10/17 19:45:27 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java,v
 1.12 2000/11/09 07:22:22 remm Exp $
  + * $Revision: 1.12 $
  + * $Date: 2000/11/09 07:22:22 $
*
* 
*
  @@ -112,7 +112,7 @@
*
* @author Craig R. McClanahan
* @author Remy Maucherat
  - * @version $Revision: 1.11 $ $Date: 2000/10/17 19:45:27 $
  + * @version $Revision: 1.12 $ $Date: 2000/11/09 07:22:22 $
*/
   
   public class DefaultServlet
  @@ -280,6 +280,93 @@
   
   
   /**
  + * Show HTTP header information.
  + */
  +protected void showRequestInfo(HttpServletRequest req) {
  + 
  + System.out.println();
  + System.out.println("SlideDAV Request Info");
  + System.out.println();
  + 
  + // Show generic info
  + System.out.println("Encoding : " + req.getCharacterEncoding());
  + System.out.println("Length : " + req.getContentLength());
  + System.out.println("Type : " + req.getContentType());
  + 
  + System.out.println();
  + System.out.println("Parameters");
  + 
  + Enumeration parameters = req.getParameterNames();
  + 
  + while (parameters.hasMoreElements()) {
  + String paramName = (String) parameters.nextElement();
  + String[] values = req.getParameterValues(paramName);
  + System.out.print(paramName + " : ");
  + for (int i = 0; i  values.length; i++) {
  + System.out.print(values[i] + ", ");
  + }
  + System.out.println();
  + }
  + 
  + System.out.println();
  + 
  + System.out.println("Protocol : " + req.getProtocol());
  + System.out.println("Address : " + req.getRemoteAddr());
  + System.out.println("Host : " + req.getRemoteHost());
  + System.out.println("Scheme : " + req.getScheme());
  + System.out.println("Server Name : " + req.getServerName());
  + System.out.println("Server Port : " + req.getServerPort());
  + 
  + System.out.println();
  + System.out.println("Attributes");
  + 
  + Enumeration attributes = req.getAttributeNames();
  + 
  + while (attributes.hasMoreElements()) {
  + String attributeName = (String) attributes.nextElement();
  + System.out.print(attributeName + " : ");
  + System.out.println(req.getAttribute(attributeName).toString());
  + }
  + 
  + System.out.println();
  + 
  + // Show HTTP info
  + System.out.println();
  + System.out.println("HTTP Header Info");
  + System.out.println();
  + 
  + System.out.println("Authentication Type : " + req.getAuthType());
  + System.out.println("HTTP Method : " + req.getMethod());
  + System.out.println("Path Info : " + req.getPathInfo());
  + System.out.println("Path translated : " + req.getPathTranslated());
  + System.out.println("Query string : " + req.getQueryString());
  + System.out.println("Remote user : " + req.getRemoteUser());
  + System.out.println("Requested session id : " 
  +