support for CAPTCHAs
[mir.git] / source / mircoders / servlet / ServletModuleFileEdit.java
index 6543c11..e275250 100755 (executable)
@@ -45,17 +45,20 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.*;
 import java.util.*;
 
+import org.apache.oro.text.regex.MalformedPatternException;
+
 /*
  *  ServletModuleFileEdit -
  *  Allows one to do a basic edit of a file in a directory specified
  *  in the config file.
  *
  * @author $Author: zapata $
- * @version $Revision: 1.13.2.14 $ $Date: 2006/12/25 20:10:23 $
+ * @version $Revision: 1.13.2.15 $ $Date: 2007/12/15 00:24:44 $
  *
  */
 
 public class ServletModuleFileEdit extends AdminServletModule {
+  // todo: subdirectories use too many /'s
   private Map directories;
   private List directoryNames;
 
@@ -80,7 +83,13 @@ public class ServletModuleFileEdit extends AdminServletModule {
           else {
             String name = (String) parts.get(0);
             String directory = (String) parts.get(1);
-            String filter = (String) parts.get(2);
+            FilenameFilter filter;
+            try {
+              filter = new FileRoutines.RegExpFileFilter((String) parts.get(2));
+            }
+            catch (MalformedPatternException e) {
+              throw new ServletModuleFailure("Invalid regular expression for file edit: " + parts.get(2));
+            }
             String recursive = (String) parts.get(3);
 
             directories.put(name, new FileEditDirectory(name, directory, filter,
@@ -100,14 +109,16 @@ public class ServletModuleFileEdit extends AdminServletModule {
 
   public FileEditDirectory getDirectory(HttpServletRequest aRequest) throws ServletModuleExc {
     FileEditDirectory result = (FileEditDirectory) directories.get(aRequest.getParameter("entry"));
-    if (result == null)
+
+    if (result == null) {
       throw new ServletModuleExc("Unknown entry: " + aRequest.getParameter("entry"));
+    }
 
     return result;
   }
 
   public void list(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
-    listSubDirectory(getDirectory(aRequest), "/", aRequest, aResponse);
+    listSubDirectory(getDirectory(aRequest), "", aRequest, aResponse);
   }
 
   public void edit(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
@@ -117,8 +128,9 @@ public class ServletModuleFileEdit extends AdminServletModule {
       String filename = requestParser.getParameter("filename");
       String subDirectory = requestParser.getParameterWithDefault("subdirectory", "");
 
-      if (filename == null)
+      if (filename == null) {
         throw new ServletModuleExc("No filename  specified");
+      }
 
       editFile(getDirectory(aRequest), filename, subDirectory, aRequest, aResponse);
     }
@@ -135,7 +147,7 @@ public class ServletModuleFileEdit extends AdminServletModule {
       String directoryName = requestParser.getParameter("directory");
       String subDirectoryName = requestParser.getParameter("subdirectory");
 
-      if (directoryName==null | subDirectoryName==null)
+      if (directoryName==null || subDirectoryName==null)
         throw new ServletModuleExc("No directory/subDirectory specified");
 
       listSubDirectory(getDirectory(aRequest), subDirectoryName+File.separator+directoryName, aRequest, aResponse);
@@ -186,7 +198,8 @@ public class ServletModuleFileEdit extends AdminServletModule {
   public void listSubDirectory(FileEditDirectory aDirectory, String aSubDirectory, HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc
   {
     try {
-      Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)});
+      Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse,
+              new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)});
       File dir = new File(aDirectory.getRootDirectory(), aSubDirectory);
 
       if (!isDirectoryValid(aDirectory, dir) || !dir.isDirectory()) {
@@ -284,14 +297,14 @@ public class ServletModuleFileEdit extends AdminServletModule {
 
   private class FileEditDirectory {
     private String name;
-    private FileRoutines.RegExpFileFilter filter;
+    private FilenameFilter filter;
     private File rootDirectory;
     private boolean recursive;
 
-    public FileEditDirectory(String aName, String aRootDirectory, String aFilter, boolean aRecursive) {
+    public FileEditDirectory(String aName, String aRootDirectory, FilenameFilter aFilter, boolean aRecursive) {
       name = aName;
       rootDirectory = new File(aRootDirectory);
-      filter = new FileRoutines.RegExpFileFilter(aFilter);
+      filter = aFilter;
       recursive = aRecursive;
     }
 
@@ -299,7 +312,7 @@ public class ServletModuleFileEdit extends AdminServletModule {
       return name;
     }
 
-    public FileRoutines.RegExpFileFilter getFilter() {
+    public FilenameFilter getFilter() {
       return filter;
     }