From 7153c6ca2cb9347f3e4107f41199bc76451a71ea Mon Sep 17 00:00:00 2001 From: mh Date: Fri, 9 Aug 2002 17:39:50 +0000 Subject: [PATCH] servlet module FileEdit, allows one to edit files on the filesystem. --- source/config.properties-dist | 15 ++- source/mir/misc/FileExtFilter.java | 23 ++++ .../mircoders/servlet/ServletModuleFileEdit.java | 127 +++++++++++++++++++++ templates-dist/admin/fileedit.template | 4 +- 4 files changed, 165 insertions(+), 4 deletions(-) create mode 100755 source/mir/misc/FileExtFilter.java create mode 100755 source/mircoders/servlet/ServletModuleFileEdit.java diff --git a/source/config.properties-dist b/source/config.properties-dist index 66be5af9..6e02e9b2 100755 --- a/source/config.properties-dist +++ b/source/config.properties-dist @@ -69,8 +69,11 @@ Producer.ProductionHost=http://indy.code-fu.de # the generated HTML pages will be stored Producer.StorageRoot=/pub/Dokumente/Indymedia/de-tech/Mir/produced - - +# for FileEdit module +# +# where do we find the files? absolute path +ServletModule.FileEdit.FileDirectory=/pub/Dokumente/Indymedia/de-tech/Mir/produced +ServletModule.FileEdit.ExtFilter=inc # # @@ -305,6 +308,14 @@ ServletModule.Breaking.ConfirmTemplate=admin/confirm.template ServletModule.Breaking.ObjektTemplate=admin/breaking.template ServletModule.Breaking.ListTemplate=admin/breakinglist.template +# +# config for Breaking - editing text files +ServletModule.FileEdit.Logfile=log/fileedit.log +ServletModule.FileEdit.ConfirmTemplate=admin/confirm.template +ServletModule.FileEdit.ObjektTemplate=admin/fileedit.template +ServletModule.FileEdit.ListTemplate=admin/fileeditlist.template + + # # config for messages - browsing/editing/deleting internal messages diff --git a/source/mir/misc/FileExtFilter.java b/source/mir/misc/FileExtFilter.java new file mode 100755 index 00000000..8d6413b8 --- /dev/null +++ b/source/mir/misc/FileExtFilter.java @@ -0,0 +1,23 @@ +package mir.misc; + +import java.io.File; +import java.io.FilenameFilter; + + +public class FileExtFilter implements FilenameFilter +{ + + static String _SEP_EXT; + + public FileExtFilter(String ext) { + _SEP_EXT = ext; + } + + public boolean accept(File dir, String name) { + System.out.println("NAME: "+name+" "+_SEP_EXT); + return name.endsWith("."+_SEP_EXT); + } + +} + + diff --git a/source/mircoders/servlet/ServletModuleFileEdit.java b/source/mircoders/servlet/ServletModuleFileEdit.java new file mode 100755 index 00000000..c559bd24 --- /dev/null +++ b/source/mircoders/servlet/ServletModuleFileEdit.java @@ -0,0 +1,127 @@ +package mircoders.servlet; + +import java.io.*; +import java.net.*; +import javax.servlet.http.*; +import javax.servlet.*; +import freemarker.template.*; +import mir.servlet.*; +import mir.misc.*; +import mir.misc.FileExtFilter; + +/* + * ServletModuleFileEdit - + * Allows one to do a basic edit of a file in a directory specified + * in the config file. + * + * @author $Author: mh $ + * @version $Revision: 1.1 $ $Date: 2002/08/09 17:39:50 $ + * + */ + +public class ServletModuleFileEdit extends ServletModule +{ + + // Singelton / Kontruktor + + private static ServletModuleFileEdit instance = + new ServletModuleFileEdit(); + public static ServletModule getInstance() { return instance; } + + private String _dirName; + private String _extName; + + private ServletModuleFileEdit() { + + theLog = Logfile.getInstance( + MirConfig.getPropWithHome("ServletModule.FileEdit.Logfile")); + _dirName = MirConfig.getProp("ServletModule.FileEdit.FileDirectory"); + _extName = MirConfig.getProp("ServletModule.FileEdit.ExtFilter"); + + templateListString = + MirConfig.getProp("ServletModule.FileEdit.ListTemplate"); + templateObjektString = + MirConfig.getProp("ServletModule.FileEdit.ObjektTemplate"); + templateConfirmString = + MirConfig.getProp("ServletModule.FileEdit.ConfirmTemplate"); + } + + public void list(HttpServletRequest req, HttpServletResponse res) + throws ServletModuleException + { + // fetch and deliver + try { + SimpleHash mergeData = new SimpleHash(); + String offset = req.getParameter("offset"); + if (offset==null || offset.equals("")) offset="0"; + mergeData.put("offset",offset); + File dir = new File(_dirName); + System.out.println("DIRNAME: "+_dirName); + FileExtFilter extFilter = new FileExtFilter(_extName); + String[] dirEntries = dir.list(extFilter); + SimpleList theList = new SimpleList(); + for ( int i = 0; i < dirEntries.length; ++i ) { + System.out.println(" FILE: "+dirEntries[i]); + theList.add(dirEntries[i]); + } + mergeData.put("filelist",theList); + + // raus damit + HTMLTemplateProcessor.process(res, templateListString, mergeData, res.getWriter(), getLocale(req)); + } + catch (IOException e) {throw new ServletModuleException(e.toString());} + catch (Exception e) {throw new ServletModuleException(e.toString());} + } + + public void edit(HttpServletRequest req, HttpServletResponse res) + throws ServletModuleException + { + String filename = req.getParameter("filename"); + if (filename == null) throw new ServletModuleException("No filename specified"); + try { + + File f = new File(_dirName, filename); + FileReader in = new FileReader(f); + StringWriter out = new StringWriter(); + + int c; + while ((c = in.read()) != -1) + out.write(c); + in.close(); + out.close(); + SimpleHash withValues = new SimpleHash(); + withValues.put("text", out.toString()); + withValues.put("filename", filename); + + + deliver(req, res, withValues, null, templateObjektString); + } catch (Exception e) { + throw new ServletModuleException(e.toString()); + } + } + + public void update(HttpServletRequest req, HttpServletResponse res) + throws ServletModuleException + { + String filename = req.getParameter("filename"); + if (filename == null) throw new ServletModuleException("No filename specified"); + try { + + File f = new File(_dirName, filename); + StringReader in = new StringReader(req.getParameter("text")); + FileWriter out = new FileWriter(f); + + int c; + while ((c = in.read()) != -1) + out.write(c); + in.close(); + out.close(); + + edit(req, res); + } catch (Exception e) { + throw new ServletModuleException(e.toString()); + } + } + + +} diff --git a/templates-dist/admin/fileedit.template b/templates-dist/admin/fileedit.template index 8528089f..376b2b40 100755 --- a/templates-dist/admin/fileedit.template +++ b/templates-dist/admin/fileedit.template @@ -17,8 +17,8 @@
- - + + -- 2.11.0